2

数学の問題を生成するプログラムを作成しようとしています。各問題は次の形式である必要があります。

<num> <op> <num>  = ?

各 num は -50 から 50 までの乱数を表し、op は 4 つの基本的な数学演算子 (+、-、​​/、*) からランダムに選択されます。

これまでのところ、私は持っています:

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

dictopsStr = {add :'+', sub: '-', ...}を作成し、選択した演算子に対応するエントリを出力します。

したがって、印刷は次のようになります。

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

私は提案します:

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

次に、シンボルを印刷します。

ops は実際にはグローバル定数でなければならないことに注意してください

于 2013-02-09T03:24:49.533 に答える
0

調べてみてください。

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

または、より見栄えのするものを提供するために使用することもできますop.__name__

于 2013-02-09T03:18:56.703 に答える