第十二章-习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第十二讲习题参考答案
一.当前目录下有一个文本文件sample12.txt,其内容包含小写字母和大写字母。请将该文件复制到另一文件sample12_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。
参考答案:
f=open("sample12.txt")
L1=f.readlines()
f2=open("sample12_copy.txt",'w')
for line in L1:
f2.write(line.upper())
f.close()
f2.close()
二.当前目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的学号、数学课成绩(第2列)和语文课成绩(第3列)。请编程完成下列要求:
(1)分别求这个班数学和语文的平均分(保留1位小数)并输出。
(2)找出两门课都不及格(<60)的学生,输出他们的学号和各科成绩。
(3)找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩。建议用三个函数分别实现以上要求。
参考答案:
def output_avg(L):
sum1,sum2=0,0
for line in L:
L1=line.strip().split()
sum1+=int(L1[1])
sum2+=int(L1[2])
count=len(L)
avg1=round(sum1/count,1)
avg2=round(sum2/count,1)
print("这个班的数学平均分为:%4.1f,语文平均分为:%4.1f"%(avg1,avg2)) def output_notpass(L):
print("两门课均不及格的学生学号及数学、语文成绩为:")
for line in L:
L1=line.strip().split()
if int(L1[1])<60 and int(L1[2])<60:
print(line)
def output_good(L):
print("两门课平均分在90分以上的学生学号及数学、语文成绩为:")
for line in L:
L1=line.strip().split()
f_score=round((int(L1[1])+int(L1[2]))/2)
if f_score>=90:
print(line)
f=open("class_score.txt")
L=f.readlines()
del L[0]
output_avg(L)
output_notpass(L)
output_good(L)
三.编程,请输入一个文件路径名或文件名,查看该文件是否存在,如存在,打开文件并在屏幕上输出该文件内容;如不存在,显示“输入的文件未找到!”并要求重新输入;如文件存在但在读文件过程中发生异常,则显示“文件无法正常读出!”并要求重新输入。
(提示:请使用异常处理。“文件未找到”对应的异常名为:FileNotFoundError,其他异常直接用except匹配)
参考答案:
while True:
try:
filename=input('请输入文件路径名或文件名:')
f=open(filename.strip())
print(f.read())
except FileNotFoundError:
print("输入的文件未找到!")
except:
print("文件无法正常读出!")
else:
break
f.close()