我希望我的问题一直是随机的,但是他们不断重复。除此之外,如果答案不正确,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))
答案 0 :(得分:2)
您需要选择循环内的随机数。你所做的只是选择一次随机数,然后问问题10次。
答案 1 :(得分:1)
其他人已经回答了为什么问题不是随机的,所以我不会解决你问题的那一部分。
即使用户给出了正确答案,您也会收到"Wrong Answer "...
,因为您要将字符串与数字进行比较:pupilAns
是一个字符串,但realAns
是一个整数。因此,在进行pupilAns
测试之前,您需要将int
转换为realAns
,或将str
转换为if pupilAns==realAns:
。我可能会做前者,如果pupilAns
无法转换为int
,则会打印错误消息。
答案 2 :(得分:0)
为避免重复提出问题,您应将random.randint
和random.choice
来电置于for
循环中。 Python中的函数(以及所有其他语言afaik)在调用时进行评估,因此变量FirstNo
,SecondNo
和op
都填充了各自函数返回的值。
然后,在for
- 循环中的每次迭代中,值都不会更改。所以他们保持不变。