我正在制作一个程序来收集用户的信息,并将其添加到文本文件中。 它是一个程序,用于从许多申请人那里获得所述信息 对于我收集的结果的线性,我想随机询问问题。
我问的是从列表中提取问题的方法,请求输入,将输入存储在文本文件中,然后随机询问从列表中提取的其他问题。
到目前为止,这是我的代码:
def ques():
global quesnum
for i in questions:
num = int(random.randint(0,len(questions)-1))
j = int(numbers.count(str(num)))
while j >= 1:
num = int(random.randint(0,len(questions)-1))
##DEBUG ONLY##
print('true')
break
else:
num = str(num)
numbers.append(num)
##DEBUG ONLY##
print('false')
num = int(num)
answer = input(str(quesnum) + '. ' + questions[num] + ': ')
answers.write(str(quesnum) + '. ' + questions[num] + ': ')
answers.write(answer + '\n')
quesnum = int(quesnum + 1)
错误:
一旦使用了号码,它就会被添加到列表中。
如果已经使用了一个数字,理想情况是生成一个新数字并使用它
我无法在代码中看到任何错误,据我所知,它应该可以正常工作
任何人都可以指出修复或建议更好的方法吗?我已经找到了建议使用random.sample()
的答案,但我已经尝试了这个并且无法解决这个问题。
提前致谢。
答案 0 :(得分:0)
您可以使用random.shuffle
:
import random
questions = ['Q1: ...', 'Q2: ...', 'Q3: ...']
random.shuffle(questions)
for q in questions:
answer = raw_input(q + ': ')
with open("answers.txt", "a") as myfile:
myfile.write("{}: {}\n\n".format(q, answer))
这将改变你的问题,以随机顺序询问它们并将它们保存到文本文件中。如果要为每个问题保存更详细的信息,这也可以使用一系列dicts。 E.g。
questions = [
{'nr.': 1, 'text': 'Do you like horses?'},
{'nr.': 2, 'text': 'Where were you born?'}
]