当前位置: 首页 > 知识库问答 >
问题:

ValueError:对关闭的文件执行I/O操作为什么会发生这种情况?使用python书籍自动完成枯燥的工作

宋弘壮
2023-03-14
#! python3
# randomQuizGenerator.py - Creates quizzes with questions and answers in
# random order, along with the answer key.
import random
   # The quiz data. Keys are states and values are their capitals.
capitals = {'Alabama': 'Montgomery', 'Alaska': 'Juneau', 'Arizona': 'Phoenix',
   'Arkansas': 'Little Rock', 'California': 'Sacramento', 'Colorado': 'Denver',
   'Connecticut': 'Hartford', 'Delaware': 'Dover', 'Florida': 'Tallahassee',
   'Georgia': 'Atlanta', 'Hawaii': 'Honolulu', 'Idaho': 'Boise', 'Illinois':
   'Springfield', 'Indiana': 'Indianapolis', 'Iowa': 'Des Moines', 'Kansas':
   'Topeka', 'Kentucky': 'Frankfort', 'Louisiana': 'Baton Rouge', 'Maine':
   'Augusta', 'Maryland': 'Annapolis', 'Massachusetts': 'Boston', 'Michigan':
   'Lansing', 'Minnesota': 'Saint Paul', 'Mississippi': 'Jackson', 'Missouri':
   'Jefferson City', 'Montana': 'Helena', 'Nebraska': 'Lincoln', 'Nevada':
   'Carson City', 'New Hampshire': 'Concord', 'New Jersey': 'Trenton', 
   'NewMexico': 'Santa Fe', 'New York': 'Albany',
   'North Carolina': 'Raleigh', 'North Dakota': 'Bismarck', 
   'Ohio': 'Columbus', 'Oklahoma': 'Oklahoma City',
   'Oregon': 'Salem', 'Pennsylvania': 'Harrisburg', 'Rhode Island': 'Providence',
   'South Carolina': 'Columbia', 'South Dakota': 'Pierre', 'Tennessee':
   'Nashville', 'Texas': 'Austin', 'Utah': 'Salt Lake City', 'Vermont':
   'Montpelier', 'Virginia': 'Richmond', 'Washington': 'Olympia', 
   'WestVirginia': 'Charleston', 'Wisconsin': 'Madison', 'Wyoming': 'Cheyenne'}

   # Generate 35 quiz files.
for quizNum in range(35):
  # Create the quiz and answer key files.
  quizFile = open(f'capitalsquiz{quizNum + 1}.txt', 'w')
  answerKeyFile = open(f'capitalsquiz_answers{quizNum + 1}.txt', 'w')
     # Write out the header for the quiz.
  quizFile.write('Name:\n\nDate:\n\nPeriod:\n\n')
  quizFile.write((' ' * 20) + f'State Capitals Quiz (Form{quizNum + 1})')
  quizFile.write('\n\n')

  # Shuffle the order of the states.
  states = list(capitals.keys())
  random.shuffle(states)
   # Loop through all 50 states, making a question for each.
  for questionNum in range(50):

         # Get right and wrong answers.
      correctAnswer = capitals[states[questionNum]]
      wrongAnswers = list(capitals.values())
      del wrongAnswers[wrongAnswers.index(correctAnswer)]
      wrongAnswers = random.sample(wrongAnswers, 3)
      answerOptions = wrongAnswers + [correctAnswer]
      random.shuffle(answerOptions)

        # Write the question and the answer options to the quiz file.
      quizFile.write(f'{questionNum + 1}. What is the capital of{states[questionNum]}?\n')
      for i in range(4):
        quizFile.write(f"    {'ABCD'[i]}. { answerOptions[i]}\n")
        quizFile.write('\n')

      # Write the answer key to a file.
      answerKeyFile.write(f"{questionNum + 1}.{'ABCD'[answerOptions.index(correctAnswer)]}")
      quizFile.close()
      answerKeyFile.close()

以下是该程序的功能

>

  • 创建35个不同的测验

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

    将测验写入35个文本文件

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

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

    1. 将各州及其首府存入字典
    2. 调用open(),写(),并关闭()的测验和回答关键文本文件
    3. 用random.shuffle()随机排列题目顺序和选择题选项

    回溯(最近一次调用):文件“/home/hp/Documents/Developement/pob/ch9/randomQuizGenarotor.py”,第50行,在quizFile中。write(f'{questionNum 1}.{states[questionNum]}的大写字母是什么?\n')value错误:对关闭的文件执行I/O操作。

          quizFile.close()
          answerKeyFile.close()
    
  • 共有1个答案

    张森
    2023-03-14

    看起来close()函数位于for循环中,因此在第一次迭代后,它将关闭文件。将close()

     类似资料:
    • 问题内容: 这里,是一本字典,并且都是字符串。 当我尝试写入文件时,它报告错误: 问题答案: 正确缩进;您的陈述应在区块内: 在块外部,文件已关闭。

    • 当我运行我的代码时,我收到以下错误。 我正在运行的代码,如下所示: 它说错误在第41行,给出为 沟通电话有什么问题吗?

    • 我需要帮助,请我从2天前开始尝试解决此问题,但没有成功,我是python新手,请更改代码并解释: 这是它的代码和通过scapy的arp扫描程序。它从scapy扫描中获取结果,并将扫描结果(ip和macaddress)保存到linux机器中的txt文件中 然后运行一个外部python脚本,通过以下命令:os.system("pythondetect_doublepulsar_smb.py--file

    • 我从Theano和Keras开始深入学习。但是,对于任何程序,我都必须加载数据集,而我无法加载任何数据集。 即使我运行这两行:- 我甚至用minst数据集尝试了上述方法。完全相同的错误。 我试着一个接一个地运行命令,第一次导入很顺利。在第二个命令中,它运行,python开始下载。然而,几秒钟后,它就断了。 这就是确切的错误:- (X_列,y_列),(X_测试,y_测试)=cifar10。load_

    • 有人能解释一下我的代码有什么问题吗?我得到以下错误: 回溯(最后一次调用): 文件“C:\LineRep.py”,模块中的第15行: 对于文件2中的行: 值错误:对关闭的文件执行I/O操作 我的代码:

    • 代码从卡中刮取单个事件,但我一直收到以下错误: C:\Python27\python.exeC:/用户/詹姆斯/PycharmProjects/剪贴画/scrapy.py回溯(最近的调用最后):文件"C:/用户/詹姆斯/PycharmProjects/剪贴画/scrapy.py",第31行,在writer.writerow(c)值错误: I/O关闭文件的操作 我正在使用pyCharm。 退出代码为