Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 运行循环时读取文件?_Python_Python 3.x_File Handling - Fatal编程技术网

Python 运行循环时读取文件?

Python 运行循环时读取文件?,python,python-3.x,file-handling,Python,Python 3.x,File Handling,我很难在不产生逻辑错误的情况下运行这个程序。我想知道是否有人能向我解释出什么问题。我的文件代码有效: 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 struct

我很难在不产生逻辑错误的情况下运行这个程序。我想知道是否有人能向我解释出什么问题。我的文件代码有效:

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,你有两个问题。第一个在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')

你得到了什么样的输出?欲望输出是什么?告诉我们您如何知道存在逻辑错误错误消息是回溯的(最近一次调用最后一次):文件“C:\Users\ab\Desktop\chapter 6\program 6_2.py”,第19行,在main()文件“C:\Users\ab\Desktop\chapter 6\program 6_2.py”,第11行,在main score=int(myfile.readline())中值错误:int()的文本无效以10为基数:“\n”第一个文件的输入应为--输入六个测试和分数输入测试名称对象输入此测试的%score 88输入测试名称循环输入此测试的%score 95输入测试名称选择输入此测试的%score 86输入测试名称变量输入此测试的%score 82输入测试名称文件输入此测试的%score测试100输入测试名称函数在此测试上输入%分数80文件创建成功第二个程序应为----读取六个测试和分数测试分数对象88循环95选择86变量82文件100函数80平均值为88.5你先写分数再写名字,但试着先读名字再写分数。另外,您应该剥离()将要转换为int的内容。添加一些打印以验证输入或使用调试器运行。谢谢您的回答。由于某种原因,第二个程序仍然给我一个错误。我把零钱加进去了。我对编程很陌生,这很奇怪。当我使用我发布的更改运行这两个函数时,我没有收到任何错误。为了确保没有误解,您确实用我发布的代码替换了第一个main()函数中第二次“打印”后的代码,对吗?添加了您建议的编辑,我很惊讶它产生了巨大的差异。程序运行得很好,现在工作得很完美!谢谢。有没有办法在这个网站上发送私人信息?我想问你几个问题。我想提高我的编码能力。