我需要循环这个程序来问问题十次,但似乎没有用
import os
import random
import operator
score=0
ops={'+':operator.add,
'-':operator.sub,
'*':operator.mul,
'/':operator.truediv}
name=input('what is your name? ')
print('hello lets answer some maths',name)
op = random.choice(list(ops)
)
b=random.randint(1,10)
a=random.randint(1,10)
c=int(input("What is {} {} {}? ".format(float(b), op, float(a))))
if a+b==c:
print("correct.")
score+1
else:
print('incorrect.')
score+0
答案 0 :(得分:1)
您的代码看起来非常糟糕,因为您有随机运算符而无法工作,但您总是测试添加。
重要的是检查输入是否正确。
python 2/3兼容
免责声明:这就像一个完美的算法。例如。 6/7将无法回答。
import random
import operator
try:
input = raw_input
except:
pass
ops={
'+' : operator.add,
'-' : operator.sub,
'*' : operator.mul,
'/' : operator.truediv
}
def question():
b=random.randint(1,10)
a=random.randint(1,10)
op = random.choice(list(ops))
raw = input("What is %s %s %s? " % (a, op, b))
try:
c=float(raw)
except:
return 0
# calls operator functions you defined
if c == ops[op](a,b):
return 1
else:
return 0
if __name__ == '__main__':
score = 0
for n in range(10):
score = score + question()
print('Your socre: %s' % score)
答案 1 :(得分:1)
以下内容将重复您的代码(总是希望添加数字)十次。如果您想要不同的运算符,请更改ops dict,但请注意Yannik的注释。
import random
import operator
ops={'+':operator.add,
'-':operator.add,
'*':operator.add,
'/':operator.add}
name=input('what is your name? ')
print('hello lets answer some maths',name)
score=sum((lambda v: (v,print(['incorrect','correct'][v]))[0])(
(lambda a,f:int(f("What is {1} {0} {2}? ".format(*a)))==ops[a[0]](*a[1:]))(
[random.choice(list(ops))]+list(map(lambda x: random.randint(1,x),[10]*2)),input))
for _ in range(0,10))