我在运行此程序时遇到困难而没有创建逻辑错误。我想知道是否有人可以向我解释什么是错的。我的文件代码WORKS:
def main():
myfile = open('tests.txt','w')
print('Enter six tests and scores or Enter to exit')
print('--------------------------') #I added this feature to make the code
#more structured
testName = input('Enter test name: ')
while testName != '':
score = int(input('Enter % score of this test: '))
myfile.write(str(score) + '\n')
testName = input('Enter test name: ')
myfile.write(testName + '\n')
myfile.close()
print('File was created successfully')
main()
但是我运行以读取和输出文件的代码给了我一个逻辑错误。我知道代码是及时编写的,但我不知道会发生什么。你可以检查我的代码并告诉我它为什么不起作用:这是代码
def main():
myfile = open('tests.txt','r')
print('Reading six tests and scores')
print('Test\t Score')
print('----------------------------')
test_score = 0
counter = 0 #for number of tests
line = myfile.readline()
while line != '':
name = line.rstrip('\n')
score = int(myfile.readline())
test_score += score
print(name, score)
line = myfile.readline()
counter += 1
myfile.close()
average = test_score/ counter
print('Average is',format(average,'.1f'))
main()
第一个程序的输入/输出应为
输入六个测试和分数
输入测试名称对象
在此测试中输入%分数88
输入测试名称循环
在此测试中输入%得分95
输入测试名称选择
在此测试中输入%得分86
输入测试名称变量
在此测试中输入%分数82
输入测试名称文件
在此测试中输入%得分100
输入测试名称功能
在此测试中输入%得分80
文件已成功创建
读取文件的第二个程序的输出应为:
阅读六项考试和分数 测试分数 对象88 循环95 选择86 变量82 文件100 功能80 平均值为88.5
答案 0 :(得分:0)
你有两个问题。第一个是在write函数中的while循环之前。您将测试名称作为输入,但不将其写入文件。
在while循环解决第一个问题之前,将测试名称写入文本文件,然后再留下另一个问题。添加新行的方式最终会导致您尝试读取的文件末尾出现空行。将新行移动到正在写入的内容的前面。
testName = input('Enter test name: ')
myfile.write(testName)
while testName != '':
score = int(input('Enter % score of this test: '))
myfile.write('\n' + str(score))
testName = input('Enter test name: ')
myfile.write('\n' + testName)
myfile.close()
print('File was created successfully')