我的目标是让一个程序请求输入测试平均值并将它们写入txt文件,第二个程序使用循环读取并处理第一个程序中的tests.txt文件到两列表格显示测试名称和分数精确到小数点后一位。
读取txt文件的第二个程序是什么样的?
这是第一个程序的代码:
def main():
outfile =open('test.txt', 'w')
print('Entering six tests and scores')
num1 = float(input('Enter % score on this test '))
num2 = float(input('Enter % score on this test '))
num3 = float(input('Enter % score on this test '))
num4 = float(input('Enter % score on this test '))
num5 = float(input('Enter % score on this test '))
num6 = float(input('Enter % score on this test '))
outfile.write(str(num1) + '\n')
outfile.write(str(num2) + '\n')
outfile.write(str(num3) + '\n')
outfile.write(str(num4) + '\n')
outfile.write(str(num5) + '\n')
outfile.write(str(num6) + '\n')
outfile.close()
main()
我的第二个项目:
def main():
infile = open('test.txt' , 'r')
line1 = infile.readline()
line2 = infile.readline()
line3 = infile.readline()
line4 = infile.readline()
line5 = infile.readline()
line6 = infile.readline()
infile.close()
line1 = line1.rstrip('\n')
line2 = line2.rstrip('\n')
line3 = line3.rstrip('\n')
line4 = line4.rstrip('\n')
line5 = line5.rstrip('\n')
line6 = line6.rstrip('\n')
infile.close()
main()
答案 0 :(得分:2)
首先,绝对没有必要像这样重复自己 - 一个简单的循环将使您免于编写这样的重复代码。不过,您可能需要考虑使用字典,因为这是一种适用于这种情况的首选数据结构,您需要将键(名称)映射到值(分数)。此外,您可能需要考虑使用with
语句作为上下文管理器,因为它会在嵌套代码块之后自动为您关闭文件。
因此,考虑到所有这些因素,以下几行应该可以解决问题:
def first():
print('Entering six tests and scores')
my_tests = {}
for i in range(6):
name, score = input('Enter name and score, separated by a comma: ').split(',')
my_tests[name] = round(float(score), 1)
with open('tests.txt', 'w') as f:
for name, score in my_tests.items():
f.write('{} {}\n'.format(name, score))
......当涉及问题的第二部分时:
def second():
with open('tests.txt', 'r') as f:
tests = f.readlines()
for row in tests:
test = row.rstrip('\n').split()
print('{}\t{}'.format(test[0], test[1]))