自动数学方程生成器无法正确显示

时间:2013-02-09 03:14:26

标签: python function

我正在尝试编写一个会产生数学问题的程序。每个问题都应该具有以下格式:

<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>

3 个答案:

答案 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应该是一个全局常量