ValueError:对关闭的文件执行I/O操作为什么会发生这种情况?使用python书籍自动完成枯燥的工作 我在看书 本章的第一个项目展示了如何使随机测验生成器具有随机、写入、读取、关闭和打开功能 这是我的密码 #!蟒蛇3 #randomQuizGenerator.py-创建带有问题和答案的测验 #随机顺序,以及答案键。 随机输入 #测验数据。键是状态,值是它们的首都。 首都={'Alabama':'Montgomery','Alaska':'Juneau','Arizona':'Phoenix', “阿肯色州”:“小石城”,“加利福尼亚州”:“萨克拉门托”,“科罗拉多州”:“丹佛”, “康涅狄格州”:“哈特福德”,“特拉华州”:“多佛”,“佛罗里达州”:“塔拉哈西”, 乔治亚州:'亚特兰大','夏威夷':'火奴鲁鲁','爱达荷州':'博伊西','伊利诺伊': “斯普林菲尔德”、“印第安纳州”:“印第安纳波利斯”、“爱荷华州”:“得梅因”、“堪萨斯州”: “托皮卡”、“肯塔基州”:“法兰克福”、“路易斯安那州”:“巴吞鲁日”、“缅因州”: “奥古斯塔”、“马里兰州”:“安纳波利斯”、“马萨诸塞州”:“波士顿”、“密歇根州”: “兰辛”,“明尼苏达州”:“圣保罗”,“密西西比州”:“杰克逊”,“密苏里州”: “杰斐逊城”、“蒙大拿州”:“海伦娜”、“内布拉斯加州”:“林肯”、“内华达州”: 卡森城、新罕布什尔州、康科德、新泽西州、特伦顿、, “新墨西哥州”:“圣达菲”,“纽约州”:“奥尔巴尼”, “北卡罗来纳州”:“罗利”,“北达科他州”:“俾斯麦”, 俄亥俄州:'哥伦布','俄克拉荷马州':'俄克拉荷马市', “俄勒冈州”:“塞勒姆”,“宾夕法尼亚州”:“哈里斯堡”,“罗德岛州”:“普罗维登斯”, “南卡罗来纳州”:“哥伦比亚”,“南达科他州”:“皮埃尔”,“田纳西州”: “纳什维尔”、“德克萨斯州”:“奥斯汀”、“犹他州”:“盐湖城”、“佛蒙特州”: 蒙彼利埃、弗吉尼亚、里士满、华盛顿、奥林匹亚、, “西弗吉尼亚州”:“查尔斯顿”,“威斯康星州”:“麦迪逊”,“怀俄明州”:“夏延” #生成35个测验文件。 对于范围(35)内的奎兹南: #创建测验和答案密钥文件。 quizFile=open(f'capitalskique{quizNum+1}.txt','w') answerKeyFile=open(f'capitalskique_answers{quizNum+1}.txt','w') #写出测验的标题。 quizFile.write('名称:\n\n日期:\n\n期间:\n\n') quizFile.write((''*20)+f'State Capitals quick(Form{quizNum+1}')) quizFile.write('\n\n') #改变各州的秩序。 状态=列表(大写字母.keys()) 随机。随机(状态) #循环浏览所有50个州,为每个州提出一个问题。 对于范围(50)内的questionNum: #得到正确和错误的答案。 correctAnswer=大写[州[questionNum]] 错误答案=列表(大写字母.values()) 删除错误答案[错误答案.索引(正确答案)] 错误答案=随机样本(错误答案,3) answerOptions=错误答案+[正确答案] 随机。随机(应答选项) #将问题和答案选项写入测验文件。 quizFile.write(f'{questionNum+1}.{states[questionNum]}的首都是什么?\n') 对于范围(4)中的i: quizFile.write(f“{'ABCD'[i]}.{answerOptions[i]}\n”) quizFile.write(“\n”) #将应答密钥写入文件。 写入(f“{questionNum+1}.{'ABCD'[answerOptions.index(correctAnswer)]) quizFile.close() answerKeyFile.close()

ValueError:对关闭的文件执行I/O操作为什么会发生这种情况?使用python书籍自动完成枯燥的工作 我在看书 本章的第一个项目展示了如何使随机测验生成器具有随机、写入、读取、关闭和打开功能 这是我的密码 #!蟒蛇3 #randomQuizGenerator.py-创建带有问题和答案的测验 #随机顺序,以及答案键。 随机输入 #测验数据。键是状态,值是它们的首都。 首都={'Alabama':'Montgomery','Alaska':'Juneau','Arizona':'Phoenix', “阿肯色州”:“小石城”,“加利福尼亚州”:“萨克拉门托”,“科罗拉多州”:“丹佛”, “康涅狄格州”:“哈特福德”,“特拉华州”:“多佛”,“佛罗里达州”:“塔拉哈西”, 乔治亚州:'亚特兰大','夏威夷':'火奴鲁鲁','爱达荷州':'博伊西','伊利诺伊': “斯普林菲尔德”、“印第安纳州”:“印第安纳波利斯”、“爱荷华州”:“得梅因”、“堪萨斯州”: “托皮卡”、“肯塔基州”:“法兰克福”、“路易斯安那州”:“巴吞鲁日”、“缅因州”: “奥古斯塔”、“马里兰州”:“安纳波利斯”、“马萨诸塞州”:“波士顿”、“密歇根州”: “兰辛”,“明尼苏达州”:“圣保罗”,“密西西比州”:“杰克逊”,“密苏里州”: “杰斐逊城”、“蒙大拿州”:“海伦娜”、“内布拉斯加州”:“林肯”、“内华达州”: 卡森城、新罕布什尔州、康科德、新泽西州、特伦顿、, “新墨西哥州”:“圣达菲”,“纽约州”:“奥尔巴尼”, “北卡罗来纳州”:“罗利”,“北达科他州”:“俾斯麦”, 俄亥俄州:'哥伦布','俄克拉荷马州':'俄克拉荷马市', “俄勒冈州”:“塞勒姆”,“宾夕法尼亚州”:“哈里斯堡”,“罗德岛州”:“普罗维登斯”, “南卡罗来纳州”:“哥伦比亚”,“南达科他州”:“皮埃尔”,“田纳西州”: “纳什维尔”、“德克萨斯州”:“奥斯汀”、“犹他州”:“盐湖城”、“佛蒙特州”: 蒙彼利埃、弗吉尼亚、里士满、华盛顿、奥林匹亚、, “西弗吉尼亚州”:“查尔斯顿”,“威斯康星州”:“麦迪逊”,“怀俄明州”:“夏延” #生成35个测验文件。 对于范围(35)内的奎兹南: #创建测验和答案密钥文件。 quizFile=open(f'capitalskique{quizNum+1}.txt','w') answerKeyFile=open(f'capitalskique_answers{quizNum+1}.txt','w') #写出测验的标题。 quizFile.write('名称:\n\n日期:\n\n期间:\n\n') quizFile.write((''*20)+f'State Capitals quick(Form{quizNum+1}')) quizFile.write('\n\n') #改变各州的秩序。 状态=列表(大写字母.keys()) 随机。随机(状态) #循环浏览所有50个州,为每个州提出一个问题。 对于范围(50)内的questionNum: #得到正确和错误的答案。 correctAnswer=大写[州[questionNum]] 错误答案=列表(大写字母.values()) 删除错误答案[错误答案.索引(正确答案)] 错误答案=随机样本(错误答案,3) answerOptions=错误答案+[正确答案] 随机。随机(应答选项) #将问题和答案选项写入测验文件。 quizFile.write(f'{questionNum+1}.{states[questionNum]}的首都是什么?\n') 对于范围(4)中的i: quizFile.write(f“{'ABCD'[i]}.{answerOptions[i]}\n”) quizFile.write(“\n”) #将应答密钥写入文件。 写入(f“{questionNum+1}.{'ABCD'[answerOptions.index(correctAnswer)]) quizFile.close() answerKeyFile.close(),python,python-3.x,automation,Python,Python 3.x,Automation,以下是该程序的功能: 创建35个不同的测验 按随机顺序为每个测验创建50个选择题 按随机顺序为每个问题提供正确答案和三个随机错误答案 将测验写入35个文本文件 将答案键写入35个文本文件 这意味着代码需要执行以下操作: 将各州及其首都存储在字典中 为测验和答案密钥文本文件调用open()、write()和close() 使用random.shuffle()随机化问题和多项选择选项的顺序 但是这个代码给出了一个错误 ValueError:对关闭的文件执行I/O操作。 回溯(最近一次呼叫最后

以下是该程序的功能:

  • 创建35个不同的测验

  • 按随机顺序为每个测验创建50个选择题 按随机顺序为每个问题提供正确答案和三个随机错误答案

  • 将测验写入35个文本文件

  • 将答案键写入35个文本文件

  • 这意味着代码需要执行以下操作:

  • 将各州及其首都存储在字典中
  • 为测验和答案密钥文本文件调用open()、write()和close()
  • 使用random.shuffle()随机化问题和多项选择选项的顺序
  • 但是这个代码给出了一个错误 ValueError:对关闭的文件执行I/O操作。 回溯(最近一次呼叫最后一次): 文件“/home/hp/Documents/Developement/pob/ch9/randomQuizGenarotor.py”,第50行,在 quizFile.write(f'{questionNum+1}.{states[questionNum]}的首都是什么?\n') ValueError:对关闭的文件执行I/O操作。

    当我删除代码时,它会工作
    quizFile.close()
    answerKeyFile.close()
    
    但也有一些问题
    我想使用它看起来
    close()
    函数在for循环中,因此在第一次迭代后,它将关闭文件。将
    close()
    函数移到for的外部

    可以在第一个循环结束时关闭两个文件,这样在进入第二个循环时它们都会关闭。