2

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

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

3 回答 3

2

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

所以你的打印看起来像:

print(num1, opsStr [op] ,num2,"=?\n")
于 2013-02-09T03:16:21.083 回答
0

试着查一下。

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

或者,您可以使用op.__name__来提供更美观的东西。

于 2013-02-09T03:18:56.703 回答
0

我建议:

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

然后打印符号。

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

于 2013-02-09T03:24:49.533 回答