赞
踩
禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301
任务描述
大约在1500年前,《孙子算经》中记载一个有趣的问题:今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?
大概的意思是:有若干只鸡兔同在一个笼子里,从上面数,有35个头,从下面数,有94只脚,问笼中各有多少只鸡和兔?
请编一个程序,用户在同一行内输入两个整数,代表头和脚的数量,编程计算笼中各有多少只鸡和兔(假设鸡和兔都正常,无残疾)。如无解则输出“Data Error!”
参考下面的示例代码,从同一行读入两个数
a, b = input().split() # 将输入的以空格分隔的两个数命名为a和b
a, b = map(int,input().split(',')) # 将输入的以逗号分隔的两个值,转换为整数后命名为a和b
输入格式
输入为一行,以空格分隔的两个整数h f,分别代表鸡兔的总头数和总脚数。
输出格式
使用输入值进行计算,如有解,则输出:有m只鸡,n只兔;如无解则输出Data Error!
示例 1
输入: 35 94
输出: 有23只鸡,12只兔
示例 2
输入: -24 12
输出: Data Error!
示例 3
输入: 12 35
输出: Data Error!
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
h, f = map(int, input().split())
if f>0 and h>0 and f>=2*h and (f-2*h)%2==0:
r = (f-2*h) // 2
c = h - r
print(f"有{c}只鸡,{r}只兔")
else:
print("Data Error!")
任务描述
输入年/月/日(用斜杠分隔),输出该日期是这一年的第几天?(本题目保证测试使用的年、月、日都是合法输入)
tips:
map()函数可以将多个数据转换成指定数据类型
split()函数可以将字符串按照指定分隔符进行间隔并生成数据列表
a, b, c = map(int, input().split(":"))
#上述语句可以将输入格式为 "12:30:05" 的字符串分解成["12", "30", "05"]
#并将列表中每个数据转换成整型数据并分别赋值给a,b,c三个变量
输入格式
年/月/日
输出格式
某年某月某日是某年第多少天
示例 1
输入:
2018/2/1
输出:
2018年2月1日是2018年第32天
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
import datetime
year, month, day = map(int, input().split("/"))
tar = datetime.date(year, month, day)
day_count = tar - datetime.date(tar.year - 1, 12, 31)
print(f"{year}年{month}月{day}日是{year}年第{day_count.days}天")
任务描述
“物不知数”出自《孙子算经》。题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”。
意思是说有一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。
现假设物品总数不超过n (n<=1000),请编程计算满足条件的物品个数并输出。
输入格式
输入为一个正整数n,题目保证 0 < n <= 1000 。
输出格式
输出不超过n且满足条件的物品个数m,如果有多个解,则分行输出,如果无解则输出"No solution!"。
示例 1
输入: 10
输出: No solution!
示例2
输入: 200
输出:
23
128
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
n = int(input())
flag = True
for i in range(n+1):
if i%3==2 and i%5==3 and i%7==2:
print(i)
flag = False
if flag:
print('No solution!')
任务描述
本关任务:编写一个能计算存款买房的小程序。
相关知识
存款买房问题描述
你刚刚大学毕业,在北京找到了一份很好的工作,决定开始存钱买房。由于北京的房价很高,你要攒几年钱才能付得起房子的首付。
现根据以下假定来计算你需要多长时间才能攒够首付款:
将你想购买的房子的总价称为 total_cost
。
将首付款占总房价的比例称为 portion_down_payment
。为简单起见,假设 portion_down_payment = 0.30(30%)
。
将存款金额称为 current_savings
。你的存款从 0
元开始。
假设你的年薪是 annual_salary
,按 12
个月平均发放,单位是元。
假设你每个月都要拿出一定百分比的工资来存首付。称为 portion_saved
,此值为一个表示百分比的整数,例如 50
表示 50%
。
假定你每 6
个月加一次工资,每半年加薪比例 semi_annual_raise
是一个表示百分比的整数,例如 7
表示 7%
,即第 7
个月的月头涨一次工资,工资涨幅为 7%
,以后每过 6
个月再涨一次工资。
写一个程序来计算你需要多少个月才能攒够钱付定金,不足一个月按一个月计算。
编程要求
根据提示,在右侧编辑器补充代码,计算并输出首付款、每年年底已存工资款总数、存够首付的月数 n
。
测试说明
输入格式:
输入为四行,每行一个浮点数,分别表示房价、年薪、月存储工资百分数、半年工资涨幅百分数。
输出格式:
输出为若干行,第一行为首付款,最后一行为存够首付的月数 n
,中间行是每年年底已存工资款总数(取整)。具体格式见示例。
示例 1
输入:
5000000
240000
70
7
输出:
输出:
首付 1500000.0
第12个月月末有173,880元存款
第24个月月末有372,955元存款
第36个月月末有600,876元存款
第48个月月末有861,823元存款
第60个月月末有1,160,582元存款
第72个月月末有1,502,630元存款
需要72个月可以存够首付
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
"""
1.让用户输入半年度加薪的整数百分比,例如输入7表示每半年加薪7%。
2.第6个月后,按该百分比增加薪资。在第12个月、18个月之后,依此类推(只有在第6、12、18……等月份时才加薪)。
写一个程序计算需要多少个月才能攒够钱付首付款。与之前一样,假设所需的首付款百分比为0.30(30%)。
你的程序要给出以下提示并要求用户输入相应的数值:
1. 请输入总房价:total_cost
2. 请输入年薪:annual_salary
3. 请输入月存款比例:portion_saved
4. 每半年加薪比例:semi_annual_raise
测试用例
请输入总房价:1000000
请输入年薪:156800
请输入月存款比例:60
请输入加薪比例:7
输出:需要33 个月可以存够首付
"""
total_cost = float(input()) # total_cost为当前房价
annual_salary = float(input()) # 年薪
portion_saved = float(input()) / 100 # 月存款比例,输入30转为30%
semi_annual_raise = float(input()) /100 # 输入每半年加薪比例,输入7转化为7%
portion_down_payment = 0.3 # 首付比例,浮点数
###################################Begin###################################
# 补充你的代码
# 首付款
down_payment = total_cost * portion_down_payment
###################################Begin###################################
print('首付',down_payment)
current_savings = 0 # 存款金额,从0开始
number_of_months = 0
monthly_salary = annual_salary/12 #月工资
monthly_deposit = monthly_salary * portion_saved # 月存款
# 计算多少个月才能存够首付款,结果为整数,不足1月按1个月计算,即向上取整
###################################Begin###################################
# 补充你的代码
while True:
number_of_months += 1
current_savings = current_savings + monthly_deposit
if current_savings >= down_payment:
break
if number_of_months%6 == 0:
monthly_deposit = monthly_deposit * (1 + semi_annual_raise)
if number_of_months%12 == 0:
print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_savings))
###################################Begin###################################
print(f'需要{number_of_months}个月可以存够首付')
任务描述
《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文是这么说的:今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?
这道题的意思是:有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。
请编程求此题的解,要求使用循环来完成,不允许使用幂运算。
输入格式
输入为1个整数wall,代表墙的厚度,单位为尺。
输出格式
输出为两行,第一行输出1个整数,表示相遇时所需的天数
(提示:本题输出结果时必须使用round函数)
round()函数说明:
当round(f,n)函数对浮点数f保留小数点后n位时,得到的数据值为浮点数数值形式。
round(3.1415,3)
3.142
由于返回的是数值形式,因此计算后输出会以最短的浮点数形式输出,如:
round(1.999,2)
2.0
当round(f,n)函数对整数f保留小数点后n位时,得到的数据仍为整数类型。
round(5,4)
5
示例 1
输入:
10
输出:
4
1.8 8.2
示例2
输入:
2
输出:
1
1 1
参考代码
# 禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/134846459
wall = int(input())
a = b = time = 1
day = na = nb = 0
while wall>0:
if a+b>wall:
time = wall/(b + a)
wall = wall - b - a
nb += time*b
na += time*a
a *= 2
b /= 2
day += 1
print(day)
print(round(nb, 1), round(na, 1))
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。