研一Python基础课程第三周课后习题分享(下)(含源代码)
这里分享剩余的八道题,比起前八道,后面八道题相对容易很多!
一、题目分享
第九题:计算圆周率——无穷级数法
描述
π是个超越数,圆周率的超越性否定了化圆为方这种尺规作图精确求解问题的可能性。有趣的是,π可以用无穷级数表示:
左边的展式是一个无穷级数,被称为莱布尼茨级数(Leibniz),这个级数收敛到π/4,它通常也被称为格雷戈里-莱布尼茨级数,用以纪念莱布尼茨同时代的天文学家兼数学家詹姆斯·格雷戈里。
编程用这个公式计算π值,输入一个小数作为阈值,当最后一项的绝对值小于给定阈值时停止计算并输出得到的π值。
def leibniz_of_pi(error):"""接收用户输入的浮点数阈值为参数,返回圆周率值"""#=======================================================# 补充你的代码#=======================================================if __name__ == '__main__':threshold = float(input())print("{:.8f}".format( leibniz_of_pi(threshold) ) ) #保留小数点后八位
输入格式
一个正浮点数threshold,限定级数法求解pi值时,迭代累加只加绝对值大于threshold的项。
输出格式
输出为一个浮点数,是程序使用级数法求解的pi值,要求保留小数点后八位。
第十题:计算奇数和
描述
输入一个数,计算1至该数所有奇数的和。
第十一题:麦粒问题
描述
麦粒问题。
在棋盘的第1个小格放1粒麦子,第2个小格放2粒,第三个小格放4粒,第4个小格放8粒,以此类推,直到把64格棋盘放满就行了,那么第n个格子的麦粒有多少颗?
第十二题:寻找水仙花数
描述
寻找水仙花数。水仙花数是指一个三位数,它每个数位上数的3次幂之和等于它本身。例如:153是水仙花数,因为1³+5³+3³=153。输出所有的水仙花数。
第十三题:斐波那契数列
描述
求斐波那契数列中第n个数的值,n是正整数。
(斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、… ,第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。)
第十四题:九九乘法表
描述
输出九九乘法表
注意:乘法符号可以直接复制 ×
知识点
print()函数参数:
sep:用来间隔多个对象,默认值是一个空格。
end:用来设定以什么结尾。默认值是换行符 ,可以换成其他字符串。
print("你好")
print("朝晖中学")
#不设置end参数,默认会增加一个换行符,输出结果为:
你好
朝晖中学print("你好",end=" ")
print("朝晖中学")
#设置end参数为一个空格,则输出你好后,不会再输出默认的换行符,而是一个空格,则输出结果为:
你好 朝晖中学
在本题中,输出1×2=2后,默认会输出换行符换到下行,可以使用end参数,输出一个空格,继续输出2×2=4。
当一行输出结束后,可以单独增加一句print(),不输出任何内容,就会只输出一个默认的换行符,换到下行。
第十五题:登录程序2
描述
登录程序,先判断输入账号是否为“admin”,再判断输入密码是否为“123456”,若账号和密码输入不正确,则要求用户一直输入,直到输入的账号和密码都正确,退出循环并输出“登录成功”。
第十六题:猜数游戏2
描述
编程实现“猜数游戏”。在给定某数后,让用户进行猜测并输入输,计算机给出相应提示,如偏大、偏小或正确。若所猜测的数正确,则输出猜测次数,否则继续猜数。
在这个过程中,不能确定比较的次数,因此需用while循环语句来实现。
while循环的判断条件为True,表示循环条件永远满足,只能靠循环体中的break语句跳出循环。
二、源代码
带上篇的代码!
def problem_1():"""“物不知数”出自《孙子算经》。题目为:意思是说有一些物品,不知道有多少个,3个3个数的话,还多出2个;5个5个数则多出3个;7个7个数也会多出2个。现假设物品总数不超过n (n<=1000),请编程计算满足条件的物品个数并输出。"""n = eval(input())flag = 0for i in range(n + 1):if (i % 3 == 2 and i % 5 == 3 and i % 7 == 2):print(i)flag += 1else:flag += 0if flag == 0:print('No solution!')def problem_2():"""有一堵十尺厚的墙,两只老鼠从两边向中间打洞。大老鼠第一天打一尺,小老鼠也是一尺。大老鼠每天的打洞进度是前一天的一倍,小老鼠每天的进度是前一天的一半。问它们几天可以相逢,相逢时各打了多少。"""wall = int(input())v_1, v_2, day, t = 1, 1, 0, 1s_1, s_2 = 0, 0while wall > 0:if wall - (s_1 + s_2) < 0:t = wall / (v_1 + v_2)wall -= v_1 + v_2s_1 += t * v_1s_2 += t * v_2v_1 *= 2v_2 *= 0.5day = day + 1print(day)print(round(s_2, 1), round(s_1, 1))def problem_3():"""诗仙李白,一生好酒。一天,他提着酒壶,从家里出来,酒壶中有酒若干。他边走边唱:无事街上走,提壶去买酒,遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,计算并输出壶中原有酒几斗?"""n = 0for i in range(5):n += 1n /= 2print(n)def problem_4():"""有一座八层宝塔,每一层都有一些琉璃灯,每一层的灯数都是上一层的二倍,已知共有765盏琉璃灯,计算并输出每层各有多少盏琉璃灯。"""sum = 0for i in range(8):sum += 2**ix = int(765 / sum)for i in range(8):print(2**i *x)def problem_5():# 应纳税额 = (工资薪金所得 - 五险一金 - 个税免征额) × 适用税率 - 速算扣除数# 实发工资 = 应发工资 - 五险一金 - 应缴税款salary = float(input()) # 薪资five_one_insurance_fund = float(input()) # 五险一金exemption = float(input()) # 个税免征额money = [3000, 12000, 25000, 35000, 55000, 80000]rate = [0.03, 0.1, 0.2, 0.25, 0.3, 0.35, 0.45]minus = [0, 210, 1410, 2660, 4410, 7160, 15160]if salary <= 0:print('error')elif salary <= exemption:output_1 = 0output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))else:if salary - five_one_insurance_fund - exemption <= 0:output_1 = 0output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary <= 3000:output_1 = (salary - five_one_insurance_fund - exemption)*0.03 - 0output_2 = salary - five_one_insurance_fund -output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 3000 and salary <= 12000:output_1 = (salary - five_one_insurance_fund - exemption)*0.1 - 210output_2 = salary - five_one_insurance_fund -output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 12000 and salary <= 25000:output_1 = (salary - five_one_insurance_fund - exemption)*0.2 - 1410output_2 = salary - five_one_insurance_fund -output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 25000 and salary < 35000:output_1 = (salary - five_one_insurance_fund - exemption)*0.25 - 2660output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 35000 and salary <= 55000:output_1 = (salary - five_one_insurance_fund - exemption)*0.3 - 4410output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 55000 and salary <= 80000:output_1 = (salary - five_one_insurance_fund - exemption)*0.35 - 7160output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))elif salary > 80000:output_1 = (salary - five_one_insurance_fund - exemption)*0.45 - 15160output_2 = salary - five_one_insurance_fund - output_1print('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(output_1, output_2))def problem_5_1():salary = float(input()) # 薪资five_one_insurance_fund = float(input()) # 五险一金exemption = float(input()) # 个税免征额Num = salary-five_one_insurance_fund-exemptionTaxes = 0if salary <= 0 or five_one_insurance_fund <= 0 or exemption <= 0:print("error")else:if Num > 0 and Num <= 3000:Taxes = Num * 0.03elif Num > 3000 and Num <= 12000:Taxes = Num * 0.10 - 210elif Num > 12000 and Num <= 25000:Taxes = Num * 0.20 - 1410elif Num > 25000 and Num <= 35000:Taxes = Num * 0.25 - 2660elif Num > 35000 and Num <= 55000:Taxes = Num * 0.30 - 4410elif Num > 55000 and Num <= 80000:Taxes = Num * 0.35 - 7160elif Num > 80000:Taxes = Num * 0.45 - 15160Salary = salary - five_one_insurance_fund - Taxesprint('应缴税款{:.2f}元,实发工资{:.2f}元。'.format(Taxes, Salary))def problem_6():total_cost = float(input()) annual_salary = float(input()) portion_saved = float(input()) / 100current_savings = 0portion_down_payment = 0.30down_payment = portion_down_payment * total_costmonthly_deposit = (annual_salary / 12) * portion_savednumber = down_payment % monthly_depositif number == 0:number_of_months = int(down_payment / monthly_deposit)else:number_of_months = int((down_payment // monthly_deposit) + 1)print('首付'+' '+ '%.2f' % (down_payment) +' ' + '元')print('月存款'+' ' + '%.2f' % (monthly_deposit) + ' ' + '元')print(f'需要{number_of_months}个月可以存够首付')def problem_7():total_cost = float(input()) # total_cost为当前房价annual_salary = float(input()) # 年薪portion_saved = float(input()) / 100 # 月存款比例,输入30转为0.30(即30%)semi_annual_raise = float(input()) / 100 # 输入每半年加薪比例,输入7转化为0.07(即7%)portion_down_payment = 0.3 # 首付比例,浮点数down_payment = portion_down_payment * total_cost # 首付print('首付',down_payment)current_savings = 0 # 存款金额,从0开始number_of_months = 0monthly_salary = annual_salary / 12 #月工资monthly_deposit = monthly_salary * portion_saveddef year_off_money(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit ):enough = Truecurrent_saving = 0while enough:number_of_months = number_of_months + 1current_saving += monthly_depositif current_saving >= down_payment:print(f'需要{number_of_months}个月可以存够首付')enough = Falsereturnif number_of_months % 12 == 0:print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_saving)) # 每12个月输出一次存款,保留0位小数,使用千分符if number_of_months % 6 == 0:monthly_deposit = monthly_deposit * (1 + semi_annual_raise) # 六月之期已到,加薪year_off_money(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit)def problem_8():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 # 首付比例,浮点数down_payment = portion_down_payment * total_cost # 首付款print('首付',down_payment)number_of_months = 0monthly_salary = annual_salary / 12monthly_deposit = monthly_salary * portion_saved # 每个月存的钱def year_off_money(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit):enough = Truecurrent_savings = 0while enough:number_of_months += 1current_savings *= (1 + 0.0225 / 12)current_savings += monthly_depositif current_savings >= down_payment:print(f'需要{number_of_months}个月可以存够首付')enough = Falsereturnif number_of_months % 12 == 0:print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_savings))if number_of_months % 6 == 0:monthly_deposit = monthly_deposit * (1 + semi_annual_raise)year_off_money(number_of_months, monthly_salary, semi_annual_raise, monthly_deposit)def problem_8_1():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 # 首付比例,浮点数down_payment = portion_down_payment * total_cost # 首付款print('首付',down_payment)number_of_months = 0monthly_salary = annual_salary / 12monthly_deposit = monthly_salary * portion_saved # 每个月存的钱current_savings = 0enough = Truewhile enough:number_of_months += 1current_savings *= (1 + 0.0225 / 12)current_savings += monthly_depositif current_savings >= down_payment:a = number_of_monthsenough = Falseif number_of_months % 12 == 0:print("第{}个月月末有{:,.0f}元存款".format(number_of_months, current_savings))if number_of_months % 6 == 0:monthly_deposit = monthly_deposit * (1 + semi_annual_raise)print(f'需要{number_of_months}个月可以存够首付') def problem_9():def leibniz_of_pi(error):"""接收用户输入的浮点数阈值为参数,返回圆周率值"""#=======================================================# 补充你的代码#=======================================================n = 1a = 1p = 0while True:b = (-1) ** (n - 1)if 1 / a <= error:breakelse:p += (1 / a) * ba += 2n += 1continuereturn 4 * pif __name__ == '__main__':import timethreshold = float(input())print("{:.8f}".format( leibniz_of_pi(threshold) ) )def problem_10():"""输入一个数,计算1至该数所有奇数的和。"""a = eval(input())sum = 0for i in range(1, a + 1):if i % 2 == 0:continueelse:sum += iprint(sum)def problem_11():"""麦粒问题。在棋盘的第1个小格放1粒麦子,第2个小格放2粒,第三个小格放4粒,第4个小格放8粒,以此类推,直到把64格棋盘放满就行了.那么第n个格子的麦粒有多少颗?"""a = eval(input())sum = 1for i in range(1, a + 1):sum += 2 ** (i-1)print(sum)def problem_12():"""寻找水仙花数。水仙花数是指一个三位数,它每个数位上数的3次幂之和等于它本身。例如:153是水仙花数,因为1³+5³+3³=153。输出所有的水仙花数。"""for i in range(100, 1000):a = i // 100 # 百位数b = (i // 10) % 10c = i % 10if a **3 + b **3 + c ** 3 == i:print(i)def problem_13():"""求斐波那契数列中第n个数的值,n是正整数。(斐波那契数列是这样的一个数列:1、1、2、3、5、8、13、21、34、… ,第一个数和第二个数是1,从第三个数开始每个元素是前两个元素相加的和。)""""""# 递归会超时n = eval(input())def f(n):if n == 1 or n == 2 :return 1return f(n-1) + f(n-2)print(f(n))"""n = eval(input())def f(n):a, b = 1, 1for i in range(n - 1):a, b = b, a + breturn aprint(f(n))def problem_14():"""输出九九乘法表"""for i in range(1, 10): for j in range(1, 10): if j <= i: print('%d×%d=%d'%(j, i ,i*j), end = ' ')print(end='\n')def problem_15():"""登录程序,先判断输入账号是否为“admin”,再判断输入密码是否为“123456”.若账号和密码输入不正确,则要求用户一直输入,直到输入的账号和密码都正确,退出循环并输出“登录成功”。"""account = 'admin'pass_word = '123456'enough = Truewhile enough:first_input = input()if first_input != account:print('输入的账号是:',first_input, '错误!') else:print('输入的账号是:',first_input, '正确!')enough = Falseenough = Truewhile enough:second_input = input()if second_input != pass_word:print('输入的密码是:',second_input,'错误!')else:print('输入的密码是:',second_input, '正确!')enough = Falseprint('登录成功!')def problem_16():"""编程实现“猜数游戏”。在给定某数后,让用户进行猜测并输入输,计算机给出相应提示,如偏大、偏小或正确。若所猜测的数正确,则输出猜测次数,否则继续猜数。"""num = 66enough = Truecounts = 0while enough:a = eval(input())if a < num:print('偏小')counts += 1elif a > num:print('偏大')counts += 1else:counts += 1print('正确,共猜了',counts,'次')enough = Falseif __name__ == '__main__':problem_16()
研一Python基础课程第三周课后习题分享(下)(含源代码)相关推荐
- 研一Python基础课程第四周课后习题分享(含源代码)
代码写的较多,有问题可以私聊我! 第四周作业分享 一.题目前言 二.题目分享 1. 问题1 2. 问题2 3. 问题3 4. 问题4 5. 问题5 6. 问题6 7. 问题7 8. 问题8 9.问题9 ...
- 研一Python基础课程第一周课后习题分享(含代码)
一.日期格式化输出 描述 ...
- 研一Python基础课程第二周课后习题分享(含代码)
一:问题描述(共计18道) 1.问题1 你买了n个苹果,但是很不幸里面混进了一条虫子,如果虫子每x小时吃完一只苹果,然后开始吃下一个,经过y小时后,你还有几个完整的苹果? ...
- python 基础课程第三天
文章目录 python 基础课程第三天 字符串 可变字符串 基本运算符 复合赋值运算符 运算符优先级 序列 列表简介 列表的创建 基本语法[]创建 list()创建 range()创建整数列表 推导式 ...
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第三周课后习题 Key concepts on Deep Neural Networks Quiz, 10 questions
有两道题没有图片...难受
- coursera 吴恩达 -- 第一课 神经网络和深度学习 :第三周课后习题 Shallow Neural Networks Quiz, 10 questions
这次的题有陷阱0.0
- Python 基础课程第十一天
Python 基础课程第十一天 第七章模块(module) 1. 模块化(module)程序设计理念 1.1 模块和包概念的进化史 1.2 标准库模块(standard library) 1.3 为什 ...
- Python 基础课程第五天
Python 基础课程第五天 第四章:控制语句 循环结构 for循环和可迭代对象遍历 可迭代对象 range 对象 嵌套循环和综合练习 break 语句 continue 语句 else 语句 循环代 ...
- python 基础课程第二天
文章目录 python 基础课程第二天 链式赋值 系列解包赋值 常量 最基本内置数据类型介绍 数字和基本运算符 整数 使用INT()实现类型转换: 自动转型: 整数可以多大 浮点数 类型转换和四舍五入 ...
最新文章
- 从大麦网架构学到的东西
- git放弃修改放弃增加文件
- VS2017项目打包为exe和setup
- CUDA的global内存访问的问题
- 支付宝上市,让我损失了2000万(盘点这些年错过的机会)
- 【Android】Windows环境安装Android Studio教程
- 桥接网络,nat网络,静态IP配置,相关命令
- MySQL 递归查询
- pc 浏览器最小字体12px
- 机器学习中的数学基础
- 如何零成本录制一首单人ACAPPELLA
- 财务常用软件哪个好用?
- PMP-36项目风险管理
- KGB知识图谱成功落地金融行业
- 基于qiankun搭建ng-alain15微前端项目示例实践
- 蛋白质结构信息获取与解析(基于Biopython)
- 每日分享 《一生如寄 人来人往》
- 软件工程毕业设计课题(73)微信小程序毕业设计PHP菜谱美食小程序系统设计与实现
- xcode中gdb调试命令
- 仿百度文库、豆丁在线阅读
热门文章
- Android 录音机小米商业项目开源代码 AudioRecord录音暂停 播放 Wav格式(音频二)
- verycd 前端技术研究薄记一 link 与opensearch
- 专题:手把手学习硬件基础------1、电阻
- 没有公网IP,怎样远程查看视频监控?
- 智慧高速公路?重点如下
- RouterOS封迅雷091206更新版,2010-4-20测试OK
- php jq天室,jQuery实现简单聊天室
- 百度地图、腾讯地图、高德地图之间的经纬度转换
- 2021年R2移动式压力容器充装最新解析及R2移动式压力容器充装证考试
- Rendering Engine 主流的浏览器内核(排版引擎、渲染引擎、解释引擎)有哪几种,分别的特点...