2013-02-09 96 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