【问题标题】:Why do the first two inputs I enter when I run my program repeat in the text file?为什么我在运行程序时输入的前两个输入会在文本文件中重复?
【发布时间】:2021-03-14 20:08:39
【问题描述】:

我正在尝试制作一个闪存卡生成器,但我无法从文本文件中收集输入。当程序询问用户问题和答案时,它会将信息放入一个文本文件中,以便稍后在用户希望查看信息时使用。但是,每当程序第一次运行时,前两个输入都会在文本文件中重复两次。

这个错误的一个例子是这样的:

What is the capitol of New York, RochesterWhat is the Capitol of New York, Rochester .

这是我为完成任务而编写的代码:

user_inputs = []
f = open('flash_card.txt', 'a')
print('Hello! Welcome to Flash Card Study Helper:)')
create_add = input('Do you wish to create new cards? ')
while create_add == ('yes'):
    question = input('Please type out the question: ')
    answer = input('Please type out the answer: ')
    combined = ','.join(user_inputs)
    f.write(combined+'\n')
    user_inputs.append(combined)
    create_add =input('Do you wish to create another card? ')
else:
   print(user_inputs)

为什么我的输入在写入文件时会重复?

【问题讨论】:

  • 您的代码按预期工作,没有任何重复数据。如果您仍然遇到与使用with() 命令打开文件相同的问题。

标签: python python-3.x list file


【解决方案1】:

您正在跟踪user_input 中的所有用户输入,然后每次通过循环将其写入您的文件。所以,第一次,你写 q1, a1。下一次,你写 q1, a1, q2, a2。下一次,你写 q1, a1, q2, a2, q3, a3。如果你真的想在每个循环中更新文件,你应该只写新的东西:

    q_a = question + ',' + answer
    f.write(q_a+'\n')
    user_inputs.append(q_a)

【讨论】:

  • 现在我已经做到了,它不会跟踪最后一个输入并且第一个输入仍在重复。
  • 那么,你做错了。使用新代码更新您的问题。还请记住,您正在附加到您的文件中,因此它将保留上次运行时的所有内容。
  • 没关系,我没有正确修复它,非常感谢先生!
猜你喜欢
  • 2015-12-19
  • 2016-02-25
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2018-08-26
  • 1970-01-01
  • 2016-01-09
  • 1970-01-01
相关资源
最近更新 更多