我怎么能循环这个程序

时间:2015-03-11 10:26:25

标签: python loops

我需要循环这个程序来问问题十次,但似乎没有用

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

2 个答案:

答案 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))