第十二章-习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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()

相关文档
最新文档