程序的控制结构-课后作业
1、中国古代数学问题——鸡兔同笼
鸡兔同笼
类型:流程控制
描述
大约在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!
代码:
# -*- codeing = utf-8 -*-
# @Autor:为一道彩虹def chicken_rabbit(heads, feet):# 计算鸡的数量# 鸡的数量加上兔的数量等于总头数# 2 * 鸡的数量 + 4 * 兔的数量等于总脚数# 解这个方程组即可得到鸡和兔的数量for chicken in range(heads + 1):rabbit = heads - chickenif 2 * chicken + 4 * rabbit == feet:return chicken, rabbitreturn None, Nonedef main():try:# 从输入中读取头数和脚数heads, feet = map(int, input().split())chicken, rabbit = chicken_rabbit(heads, feet)if chicken is None:print("Data Error!")else:print(f"有{chicken}只鸡,{rabbit}只兔")except ValueError:print("Invalid input! Please enter two integers separated by a space.")if __name__ == '__main__':main()
2、中国古代数学问题——物不知数
类型:流程控制
描述
“物不知数”出自《孙子算经》。题目为:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问物几何?”。
意思是说有一些物品,不知道有多少个,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
代码:
# -*- codeing = utf-8 -*-
# @Autor:为一道彩虹if __name__ == '__main__':n = int(input()) # 输入物品总数nflag = 0 # 记录是否找到解的标志,初始为0for i in range(n + 1): # 遍历0到n的所有整数if i % 3 == 2 and i % 5 == 3 and i % 7 == 2: # 满足三个条件的数即为解print(i) # 输出找到的解flag += 1 # 找到解,flag加1if flag == 0: # 如果flag仍然为0,说明没有找到解print('No solution!') # 输出"No solution!"
3、中国古代数学问题——二鼠打洞
类型:流程控制
描述
《九章算术》的“盈不足篇”里有一个很有意思的老鼠打洞问题。原文是这么说的:今有垣厚十尺,两鼠对穿。大鼠日一尺,小鼠亦一尺。大鼠日自倍,小鼠日自半。问:何日相逢?各穿几何?
这道题的意思是:有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。
请编程求此题的解,要求使用循环来完成,不允许使用幂运算。
输入格式
输入为1个整数wall,代表墙的厚度,单位为尺。
输出格式
输出为两行,第一行输出1个整数,表示相遇时所需的天数。第二行输出2个浮点数,分别为小鼠和大鼠打洞的距离,单位为尺,保留小数点后1位数字。(提示:round(f,1)为浮点数f保留一位小数。)
示例 1
输入:10
输出:
4
1.8 8.2
示例2
输入:2
输出:
1
1 1
代码:
# -*- codeing = utf-8 -*-
# @Autor:为一道彩虹if __name__ == '__main__':n = int(input())rat, mouse, day, time = 1, 1, 0, 1 # 大老鼠进度,小老鼠进度,相遇时间,第一天时间distance_of_rat, distance_of_mouse = 0, 0 # 大老鼠和小老鼠的打洞距离while n > 0:if n - mouse - rat < 0: # 第一天打洞完成time = n / (mouse + rat) # 算出需要时间n = n - mouse - rat # 剩余墙厚distance_of_mouse = distance_of_mouse + time * mousedistance_of_rat = distance_of_rat + time * ratrat = rat * 2 # 大老鼠每天进度mouse = mouse / 2 # 小老鼠每天进度day = day + 1 # 时间过去一天print(day)print(round(distance_of_mouse, 1), round(distance_of_rat, 1))
4、中国古代数学问题——李白买酒
描述
诗仙李白,一生好酒。一天,他提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?
要求使用循环来计算,不允许使用幂函数。
**输入格式:**
本题没有输入。
**输出格式:**
一个整数n,表示李白的酒壶原来有n斗酒。
输入输出示例
无。
代码:
# -*- codeing = utf-8 -*-
# @Autor:为一道彩虹if __name__ == '__main__':n = 0 # 最后喝光壶中酒的时候酒量肯定是0斗for i in range(5):n = n + 1n = n / 2print(n)# 本题题意可能存在一定缺陷,它是想说李白一路上遇见店和花的顺序一定是先店(*2)后花(-1),先店后花这样循环往复的顺序(即固定了的),并且循环了五次,才把最开始的(0.96875斗)酒喝完
5、个人所得税计算器
类型:流程控制
描述
2018年10月1日以前,个税免征额为3500元/月,调整后,个税免征额为5000元/月,7级超额累进个人所得税税率表如下:
全月应纳税所得额(含税级距) | 税率(%) | 速算扣除数 |
---|---|---|
不超过3,000元 | 3 | 0 |
超过3,000元至12,000元的部分 | 10 | 210 |
超过12,000元至25,000元的部分 | 20 | 1,410 |
超过25,000元至35,000元的部分 | 25 | 2,660 |
超过35,000元至55,000元的部分 | 30 | 4,410 |
超过55,000元至80,000元的部分 | 35 | 7,160 |
超过80,000元的部分 | 45 | 15,160 |
所得税计算公式如下:
应纳税额 = (工资薪金所得 - 五险一金 - 个税免征额) × 适用税率 - 速算扣除数
请编写一个个人所税计算器,用户输入应发工资薪金所得、五险一金金额和个税免征额,输出应缴税款和实发工资,结果保留小数点后两位。当输入应发工资小于0或等于0时,输出“error”。
其中:实发工资 = 应发工资 - 五险一金 - 应缴税款
要求使用下面的输入输出语句并补充代码。
salary = float(input()) # salary 应发工资薪金所得
five_one_insurance_fund = float(input()) # five_one_insurance_fund 五险一金
exemption = float(input(')) # exemption 个税免征额
#=======================================================
# 补充你的代码来计算应缴纳税款
**输入格式:**
输入为三行,每一行都是一个浮点数,分别代表应发工资、五险一金、个税起征点。
**输出格式:**
输出为一行,形如:应缴税款490.00元,实发工资11510.00元。
示例
输入:
5400
412
5000
输出:
应缴税款0.00元,实发工资4988.00元。
代码:【注意提交时缩进问题】
# -*- codeing = utf-8 -*-
# @Autor:为一道彩虹if __name__ == '__main__':salary = float(input()) # 应发工资薪金所得five_one_insurance_fund = float(input()) # 五险一金exemption = float(input()) # 个税免征额if salary <= 0:print("error")else:taxable_income = salary - five_one_insurance_fund - exemption # 应纳税所得额if taxable_income <= 0:tax_payable = 0elif taxable_income <= 3000:tax_payable = taxable_income * 0.03 - 0elif taxable_income <= 12000:tax_payable = taxable_income * 0.1 - 210elif taxable_income <= 25000:tax_payable = taxable_income * 0.2 - 1410elif taxable_income <= 35000:tax_payable = taxable_income * 0.25 - 2660elif taxable_income <= 55000:tax_payable = taxable_income * 0.3 - 4410elif taxable_income <= 80000:tax_payable = taxable_income * 0.35 - 7160else:tax_payable = taxable_income * 0.45 - 15160actual_salary = salary - five_one_insurance_fund - tax_payable # 实发工资print("应缴税款{:.2f}元,实发工资{:.2f}元。".format(tax_payable, actual_salary))
先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!