我正在用python做一个数学测验,并使用3个运算符:加、减和乘。我想使用算术运算符,但我发现它很困难,因为python只是将它作为符号来读取,如果我只打印它。我使用以下代码:
import random
import operator
opslist = [ # This is the bit that I want to change, i also want
operator.add, # the operators all on one line
operator.sub,
operator.mul
]
num1 = random.randint(1,10) # These are two random numbers for my quiz
num2 = random.randint(1,10)
ops = random.choice(opslist) #Random operator for my quiz
total = (ops(num1,num2)) # Answer for my quiz
print (num1,ops,num2) # Random question for my quiz这是输出:
6 <built-in function add> 51.)如何使输出"6+5“
2.)此外,我如何使这些数字只进行小的计算,得到肯定的答案,这样问题就不会像"5-8“这样的问题。
发布于 2015-03-20 23:51:40
我也会在你的代码中使用字典。我就是这么做的。
import random
import operator
opslist= {
operator.add: "+", # the operators all on one line
operator.sub: "-",
operator.mul: "x"
}
num1 = random.randint(1,10) # These are two random numbers for my quiz
num2 = random.randint(1,10)
ops = random.choice(list(opslist.keys())) #Random operator from opslist keys
total = (ops(num1,num2)) # Answer for my quiz
print(num1,opslist[ops],num2)当打印问题时,程序会打印出操作员的标志。要确保没有负数,请在“总计”下面添加以下内容:
while total < 0:
num1 = random.randint(1,10)
num2 = random.randint(1,10)
ops = random.choice(opslist)
total = (ops(num1,num2))发布于 2015-03-20 23:50:46
您可以使用字典将操作映射到其符号表示形式。此外,还可以添加一些减法逻辑,以确保num2低于num1
import random
import operator
ops = {
operator.add: '+',
operator.sub: '-',
operator.mul: '*'
}
num1, num2 = random.randint(1, 10), random.randint(1, 10)
op = random.choice(ops.keys())
if op != operator.sub or num2 <= num1:
print "%d %s %d = %d" % (num1, ops[op], num2, op(num1, num2))可能的结果:
3 - 2 = 1https://stackoverflow.com/questions/29177501
复制相似问题