【发布时间】:2017-02-18 18:34:24
【问题描述】:
在不产生逻辑错误的情况下运行此程序有困难。我想知道是否有人可以向我解释出了什么问题。我的文件代码 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
【问题讨论】:
-
你得到了什么输出,期望输出是什么?告诉我们您如何知道存在逻辑错误
-
错误信息是 Traceback(最近一次调用最后一次):文件“C:\Users\ab\Desktop\chapter 6\program 6_2.py”,第 19 行,在
main() 文件中“C:\Users\ab\Desktop\chapter 6\program 6_2.py”,第 11 行,主分数 = int(myfile.readline()) ValueError: int() 以 10 为底的无效文字:'\n' -
第一个文件的输入应该是 -- 输入六个测试和分数 输入测试名称对象 输入此测试的 % 分数 88 输入测试名称循环 输入此测试的 % 分数 95 输入测试名称选择 输入 %此测试的分数 86 输入测试名称变量 输入此测试的百分比分数 82 输入测试名称文件 输入此测试的百分比分数 100 输入测试名称函数 输入此测试的百分比分数 80 文件已成功创建
-
第二个程序的输出应该是----读取六个测试和分数 TEST SCORE 对象 88 个循环 95 个选择 86 个变量 82 个文件 100 个函数 80 平均是 88.5
-
你先写score然后写name,但是试着读name然后读score。此外,您应该 strip() 将要转换为 int 的内容。添加一些打印以验证输入或使用调试器运行它。
标签: python python-3.x file-handling