有人能帮我解决这个问题吗:
import random
import operator
from operator import add, sub, mul
from random import randint
score = 0
name = input("What is your name? ")
for i in range(10):
n1 = randint(1,10)
n2 = randint(1,10)
ops =[["+", operator.add],["-", operator.sub],["*", operator.mul]]
randomOp = random.choice(list(ops))
operator = randomOp[0]
op = randomOp[1]
prod = op(int(n1), int(n2))
ask = ("What is",int(n1),operator,int(n2),"?")
ans = input(ask)
if ans == ("%d" % (prod)):
print ("That's right -- well done")
score = score + 1
else:
print ("No, The answer is %d. " % (prod))
print (name, "I asked you 10 questions. You got %d of them right." % (score))
print ("Quiz is finished")
您为
operator
名称指定了一个字符串:您现在正在屏蔽}中的一个,无论随机选择的第一个迭代是什么)。在
operator
模块。不要重复使用这样的名称,因为for
循环operator.add
的下一个迭代现在尝试查找该字符串上的add
属性(因此,'+'
、'-'
或{您还直接导入了3个函数:
^{pr2}$因此,一个简单的解决方案是使用这3个名称,而不是引用模块上的函数:
在这里我使用元组而不是列表(因为更改代码中的
ops
序列可能是一个错误)。您也可以将该赋值移出for
循环的;每次迭代都重新创建它几乎没有意义。在相关问题 更多 >
编程相关推荐