我正在尝试编写一个会产生数学问题的程序。每个问题都应该具有以下格式:
<num> <op> <num> = ?
其中每个num表示介于-50和50之间的随机数,并且从四个基本数学运算符中随机选择op:+, - ,/,*。
到目前为止,我有:
import random
from operator import add, sub, mul, truediv
def main():
random.seed()
ops = (add, sub, mul, truediv)
op = random.choice(ops)
num1 = random.randint(-50,50)
num2 = random.randint(-50,50)
answer = op(num1, num2)
answer = round(answer,2)
print("Welcome! Here is your practice problem:\n")
print(num1, op ,num2,"=?\n")
main(
但是当我编译它时,它会回来,例如:
-2 <built-in function truediv> -27 =?
而不是: -2 / -27 =?
如何获取它以显示运算符而不是
<built-in function truediv>
答案 0 :(得分:2)
制作一个字典opsStr = {add :'+', sub: '-', ...}
并打印所选操作符的相应条目。
所以你的印刷品看起来像:
print(num1, opsStr [op] ,num2,"=?\n")
答案 1 :(得分:0)
尝试查找。
op_display = {
add: '+',
sub: '-',
mult: '*',
truediv: '/',
}
print(num1, op_display[op], num2,"=?\n")
或者,您可以使用op.__name__
来提供更具代表性的内容。
答案 2 :(得分:0)
我建议:
ops = [(add,'+'), (sub, '-'), (mul, '*'), (truediv, '/')]
op, symbol = random.choice(ops)
然后打印符号。
请注意,ops应该是一个全局常量