2025年Python程序设计第2版王雷春课后答案_第1页
2025年Python程序设计第2版王雷春课后答案_第2页
2025年Python程序设计第2版王雷春课后答案_第3页
2025年Python程序设计第2版王雷春课后答案_第4页
2025年Python程序设计第2版王雷春课后答案_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年Python程序设计第2版王雷春课后答案1.基础输入输出与简单计算问题:编写程序,输入用户的姓名(字符串)和当前年龄(整数),输出包含以下信息的文本:问候语:“你好,[姓名]!”当前年份(如2024年),计算用户100岁时的年份(当前年份+(100当前年龄))如果用户已经超过100岁,输出“你已经超过100岁啦!”思路分析:首先需要获取用户输入的姓名和年龄,注意年龄需要转换为整数。然后获取当前年份,使用datetime模块的datetime.now().year动态获取。接着计算目标年份:若年龄≤100,目标年份为当前年份+(100年龄);若年龄>100,提示已超过。最后使用f-string格式化输出。代码实现:```pythonimportdatetimename=input("请输入你的姓名:")age=int(input("请输入你的年龄:"))current_year=datetime.datetime.now().yearifage>100:print(f"你好,{name}!你已经超过100岁啦!")else:hundred_year=current_year+(100age)print(f"你好,{name}!当前年份是{current_year}年,你将在{hundred_year}年达到100岁。")```关键点解释:datetime模块动态获取当前年份避免硬编码;input函数返回字符串需用int()转换年龄;条件判断覆盖所有年龄情况,确保逻辑完整性。2.字符串处理与格式化问题:输入一个字符串(如“hellopython”),完成以下操作:首字母大写,其余小写(输出“HelloPython”)统计其中字母“o”的出现次数截取从第3个字符到第8个字符的子串(索引从0开始)用“-”连接字符串的每个单词(输出“hello-python”)思路分析:使用str.title()方法实现首字母大写;str.count('o')统计次数;切片操作s[2:8](左闭右开)截取子串;str.split()分割单词后用'-'.join()连接。代码实现:```pythons=input("请输入一个字符串:")首字母大写title_s=s.title()print("首字母大写结果:",title_s)统计'o'的次数o_count=s.count('o')print("字母'o'出现次数:",o_count)截取子串(索引2到7)sub_s=s[2:8]print("截取子串结果:",sub_s)用'-'连接单词joined_s='-'.join(s.split())print("连接后的字符串:",joined_s)```关键点解释:title()方法自动处理多单词首字母大写;切片s[start:end]包含start不包含end;split()默认按空格分割,join()高效连接列表元素。3.循环与条件控制:打印九九乘法表问题:使用嵌套循环打印标准的九九乘法表,格式要求:每个算式占8个字符宽度(如“1×1=1”)每一行的算式左对齐只打印i≤j的情况(i为行号,j为列号,从1开始)思路分析:外层循环控制行i(1-9),内层循环控制列j(i-9)确保i≤j。使用f-string格式化算式,宽度8左对齐,每行结束后换行。代码实现:```pythonforiinrange(1,10):forjinrange(i,10):formula=f"{i}×{j}={ij:<8}"print(formula,end='')print()```关键点解释:内层循环j从i开始保证i≤j;f-string中<表示左对齐,8指定字符宽度;end=''避免内层循环换行,外层循环结束后换行。4.函数设计:递归与迭代实现阶乘问题:分别用递归和迭代方式实现阶乘函数n!(n≥0),测试n=5时输出120,n=0时输出1。思路分析:递归终止条件n=0或1时返回1,否则n×factorial(n-1);迭代用循环从1到n累乘。处理n<0时抛出异常。代码实现:```pythondeffactorial_recursive(n):ifn<0:raiseValueError("阶乘仅适用于非负整数")return1ifn<=1elsenfactorial_recursive(n-1)deffactorial_iterative(n):ifn<0:raiseValueError("阶乘仅适用于非负整数")result=1foriinrange(1,n+1):result=ireturnresult测试test_cases=[5,0,-1]fornintest_cases:try:print(f"递归计算{n}!={factorial_recursive(n)}")exceptValueErrorase:print(f"递归计算{n}!错误:{e}")try:print(f"迭代计算{n}!={factorial_iterative(n)}")exceptValueErrorase:print(f"迭代计算{n}!错误:{e}")print("")```关键点解释:递归需明确终止条件避免栈溢出;迭代循环更高效适合大数计算;异常处理确保输入合法性。5.类与对象:学生信息管理问题:定义Student类,包含姓名、年龄、成绩(字典)属性,及计算平均分、添加科目、获取信息方法。思路分析:构造方法初始化属性,scores默认空字典避免可变默认参数陷阱。average_score计算总和除以科目数,add_subject动态添加科目,get_info格式化输出信息。代码实现:```pythonclassStudent:def__init__(self,name,age,scores=None):=nameself.age=ageself.scores=scoresifscoreselse{}defaverage_score(self):ifnotself.scores:return0.0returnround(sum(self.scores.values())/len(self.scores),2)defadd_subject(self,subject,score):self.scores[subject]=scoredefget_info(self):returnf"姓名:{},年龄:{self.age},平均分:{self.average_score()}"测试s=Student("李四",21,{"数学":90,"英语":85})s.add_subject("Python",95)print(s.get_info())输出:姓名:李四,年龄:21,平均分:90.0```关键点解释:构造方法中scores默认设为None避免陷阱;average_score处理空科目防除零错误;add_subject提升类的灵活性。6.文件操作:统计文本文件单词数问题:读取“input.txt”统计单词数(空格分隔),结果写入“output.txt”格式为“单词总数:XXX”。思路分析:withopen读取文件内容,split()按空格分割单词,统计列表长度,写入结果时格式化。代码实现:```pythontry:withopen("input.txt","r",encoding="utf-8")asf:words=f.read().split()word_count=len(words)withopen("output.txt","w",encoding="utf-8")asf:f.write(f"单词总数:{word_count}")exceptFileNotFoundError:print("错误:未找到input.txt文件")exceptExceptionase:print(f"发生错误:{e}")```关键点解释:with语句自动关闭文件;split()默认处理任意空白;异常处理捕获文件不存在等错误。7.异常处理:安全的数值输入问题:编写函数get_positive_int(prompt),提示输入正整数,非整数或负数时重新输入。思路分析:循环持续提示输入,try-except捕获ValueError,检查数值>0,否则继续循环。代码实现:```pythondefget_positive_int(prompt):whileTrue:try:num=int(input(prompt))ifnum<=0:print("错误:请输入正整数")continuereturnnumexceptValueError:print("错误:输入不是有效整数")测试age=get_positive_int("请输入年龄(正整数):")print(f"输入年龄:{age}")```关键点解释:循环确保输入有效;try块转换整数捕获非数字输入;条件判断保证数值为正。8.模块与包:自定义模块使用问题:创建math_utils模块含add和multiply函数,主脚本导入计算(3+5)2。代码实现(math_utils.py):```pythondefadd(a,b):returna+bdefmultiply(a,b):returnab```代码实现(main.py):```pythonimportmath_utilsresult=math_utils.multiply(math_utils.add(3,5),2)print("计算结果:",result)输出:16```关键点解释:模块与主脚本同目录;通过模块名.函数名调用避免命名冲突。9.网络编程:TCP客户端-服务器通信问题:服务器监听8888端口,接收字符串转大写返回;客户端发送“helloworld”并打印响应。代码实现(服务器server.py):```pythonimportsocketHOST,PORT='',8888withsocket.socket(socket.AF_INET,socket.SOCK_STREAM)ass:s.bind((HOST,PORT))s.listen()print(f"服务器在{HOST}:{PORT}监听...")conn,addr=s.accept()withconn:print(f"已连接:{addr}")whileTrue:data=conn.recv(1024)ifnotdata:breakconn.sendall(data.decode().upper().encode())```代码实现(客户端client.py):```pythonimportsocketHOST,PORT='',8888withsocket.socket(socket.AF_INET,socket.SOCK_STREAM)ass:s.connect((HOST,PORT))s.sendall(b"helloworld")data=s.recv(1024)pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论