2013-02-09 88 views
2

我想写一个程序什么会产生数学问题。每个问题应具有以下格式:自动数学方程生成器不能正确显示

<num> <op> <num> = ? 

其中每个NUM代表-50和50以及运算之间的随机数随机地从四个基本数学运算符选自:+, - ,/,*。

到目前为止,我有:

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> 

回答

2

做一个字典opsStr = {add :'+', sub: '-', ...}并打印选定操作其相应的条目。

所以打印会是什么样子:

print(num1, opsStr [op] ,num2,"=?\n") 
0

尝试寻找它。

op_display = { 
    add: '+', 
    sub: '-', 
    mult: '*', 
    truediv: '/', 
} 
print(num1, op_display[op], num2,"=?\n") 

或者你可以使用op.__name__给的东西更像样。

0

我建议:

ops = [(add,'+'), (sub, '-'), (mul, '*'), (truediv, '/')] 
op, symbol = random.choice(ops) 

然后打印符号。

请注意,ops应该是一个全局常量

+0

一个全局常量?请解释。 – Hyperboreus 2013-02-09 03:52:37

+0

@Hyperboreus,你需要解释什么?当然你知道如何创建一个全局常量... – 2013-02-09 04:02:44

+0

其实我甚至不知道python有常量。为什么它必须是全球性的?恕我直言,除非没有其他办法,否则应该避免使用全局变量。你如何创建一个全局常量?用重写的__setattr__包装在类中? – Hyperboreus 2013-02-09 04:15:35