Python - 随机问题保持重复

时间:2015-02-24 11:25:51

标签: python

我希望我的问题一直是随机的,但是他们不断重复。除此之外,如果答案不正确,if语句会纠正用户,如果用户正确,仍会纠正用户。

FirstNo=random.randint(1,12)
SecondNo=random.randint(1,12)
ops=[['+', operator.add], ['-', operator.sub], ['*', operator.mul]]
op=random.choice(ops)

for i in range(1,11):
    print('Question '+str(i))
    pupilAns=input('What is '+str(FirstNo)+str(op[0])+str(SecondNo)+'? ')
    realAns=op[1](FirstNo, SecondNo)
    if pupilAns==realAns:
        score=score+1
        print('Well Done '+FN+'!')
    else:
        print("Wrong Answer "+FN+'. It was '+str(realAns))

这是完整的代码

import random
import operator
score=0 #Score for Quiz

FN=input(str('What is your First Name:'))
while FN=='':
     FN=input(str('Please enter your First Name:'))
     DigitFound=True
     while DigitFound==True:
         FN=input(str('Please enter your First Name:'))
         for digit in FN:
             if digit.isdigit():
                 DigitFound=True
                 break
             else:
                 DigitFound=False

LN=input(str('What is your Last Name:'))
while LN=='':
    LN=input(str('Please enter your Last Name:'))
    DigitFound=True
    while DigitFound==True:
         LN=input(str('Please enter your Last Name:'))
         for digit in LN:
             if digit.isdigit():
                 DigitFound=True
                 break
             else:
                 DigitFound=False

Status=False
CN=input('What is your Class Name? Class 1, Class 2, or Class 3:')
while Status==False:
    if CN=='Class 1' or CN=='Class 2' or CN=='Class 3':
        Status=True #Break out of the loop and continue to the quiz
    else:
        CN=input('What is your Class Name? Class 1, Class 2, Class 3:')

FirstNo=random.randint(1,12)
SecondNo=random.randint(1,12)
ops=[['+', operator.add], ['-', operator.sub], ['*', operator.mul]]
op=random.choice(ops)

for i in range(1,11):
    print('Question '+str(i))
    pupilAns=input('What is '+str(FirstNo)+str(op[0])+str(SecondNo)+'? ')
    realAns=op[1](FirstNo, SecondNo)
    if pupilAns==realAns:
        score=score+1
        print('Well Done '+FN+'!')
    else:
        print("Wrong Answer "+FN+'. It was '+str(realAns))

3 个答案:

答案 0 :(得分:2)

您需要选择循环内的随机数。你所做的只是选择一次随机数,然后问问题10次。

答案 1 :(得分:1)

其他人已经回答了为什么问题不是随机的,所以我不会解决你问题的那一部分。

即使用户给出了正确答案,您也会收到"Wrong Answer "...,因为您要将字符串与数字进行比较:pupilAns是一个字符串,但realAns是一个整数。因此,在进行pupilAns测试之前,您需要将int转换为realAns,或将str转换为if pupilAns==realAns:。我可能会做前者,如果pupilAns无法转换为int,则会打印错误消息。

答案 2 :(得分:0)

为避免重复提出问题,您应将random.randintrandom.choice来电置于for循环中。 Python中的函数(以及所有其他语言afaik)在调用时进行评估,因此变量FirstNoSecondNoop都填充了各自函数返回的值。

然后,在for - 循环中的每次迭代中,值都不会更改。所以他们保持不变。