Python 如何使用算术符号而不是内置函数
我正在用python做一个数学测验,我正在使用3个操作符:加法、减法和乘法。我想使用算术运算符,但我发现这很困难,因为如果我只是打印它,python只是将其作为符号读取。我使用以下代码:Python 如何使用算术符号而不是内置函数,python,math,Python,Math,我正在用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 lin
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> 5
65
1.)如何使输出为“6+5”
2.)另外,我如何使数字只进行小的计算,从而得到肯定的答案,这样问题就永远不会是“5-8”之类的问题。您可以使用字典将操作映射到其符号表示形式。您还可以为减法添加一些逻辑,以确保
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))
我会在你的代码中使用字典。这就是我所做的
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))
总数<0时:
num1=random.randint(1,10)
num2=随机的随机数(1,10)
ops=随机选择(opslist)
总计=(运营(num1,num2))
您可以用其中一个替换打印以获得不带引号的“干净”输出:打印(%d%s%d=%d”%(num1,ops[op],num2,op(num1,num2))
或者如果您不想破坏答案:打印(%d%s%d%)(num1,ops[op],num2))
看起来不错!michealpri的答案有一种更好的方法,可以在不满足约束条件的情况下生成新的num1,num2集(例如num2op=random.choice(ops.keys())
是问题所在。您正在使用python3。更改为op=random.choice(list(ops.keys())
是否有方法将“opslist”和opslistsymbols”组合在一起,这样我就可以使用更少的行数并提高代码的效率?错误:打印(num1,opslistsymbols[ops],num2)NameError:name'opslistsymbols'未定义micheal你能回答我帐户上的其他问题吗?Michealpri你是负数代码对我来说效率不高。这是因为我在重复我之前声明的所有变量,如num1、num2等。有没有办法避免负数,而不重复代码,这样就可以了有效率的
while total < 0:
num1 = random.randint(1,10)
num2 = random.randint(1,10)
ops = random.choice(opslist)
total = (ops(num1,num2))