{Python}使用迭代生成唯一的整数

时间:2014-10-26 21:09:15

标签: python random iteration

我正在制作一个程序来收集用户的信息,并将其添加到文本文件中。 它是一个程序,用于从许多申请人那里获得所述信息 对于我收集的结果的线性,我想随机询问问题。

我问的是从列表中提取问题的方法,请求输入,将输入存储在文本文件中,然后随机询问从列表中提取的其他问题。
到目前为止,这是我的代码:

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()的答案,但我已经尝试了这个并且无法解决这个问题。

提前致谢。

1 个答案:

答案 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?'}
]