2017-10-30 8 views
-2

私は数学的問題プロンプターを記述しました。そして分裂の場合にそれを確実にしたい。結果は整数だけであり、0で除算されません。次のコードを使用します。モジュロif文が期待される出力を生成しない

while tries < problems: 
    print("What is ....") 
    print() 
    num1 = random.randint(0,9) 
    num2 = random.randint(0,9) 
    operation = random.randint(1,4) 
    if operation == 1: 
     op = '-' 
    if operation == 2: 
     op = '+' 
    if operation == 3: 
     op = '/' 
     while num2 == 0 or num1%num2 > 0: 

       num1 = random.randint(0,9) 
       num2 = random.randint(0,9) 

ただし、生成される唯一の問題は、答えが常に1. 0または分子であるということです。唯一例えば : 4/1 5/1 6/1 または0/5 0/6 0/6又は3/3 2/2 1/1

+0

あなたのコードは意図したとおりに動作します。このような小さな間隔で数値を生成する性質により、あなたが言及したケースが頻繁に表示されますが、ランダム整数ジェネレータのインターバルのサイズを大きくしない限り、それをバイパスすることはできません。 – Jerrybibo

答えて

0

オーケー私はこれで100%ではありませんが、私の結果は、実際の問題のいくつかの例を示しています。例3,6,7,9ですが、説明したようなものが発生する可能性がさらに高くなります。ランダムな操作でも、実際の除算の問題はかなり少なくなる可能性があります。

1 num1 0 num2 4 
2 num1 3 num2 3 
3 num1 6 num2 3 
4 num1 4 num2 4 
5 num1 4 num2 4 
6 num1 6 num2 2 
7 num1 8 num2 2 
8 num1 5 num2 1 
9 num1 8 num2 2 
10 num1 6 num2 1 
11 num1 0 num2 6 
12 num1 3 num2 3 
13 num1 5 num2 5 
14 num1 6 num2 2 
15 num1 4 num2 1 
16 num1 9 num2 1 
17 num1 0 num2 5 
18 num1 0 num2 8 
19 num1 0 num2 1 
1

あなたのコードはうまくいくようです(最後の2行のインデントの横にありますが、コードをコピーしている間にコードが変更されたと想定しています)。私は、出力8として取得

import random 

random.seed(21334261) 
print("What is ....") 
print() 
num1 = random.randint(0,9) 
num2 = random.randint(0,9) 
print("num1: {} \n num2: {}".format(num1, num2)) 
operation = 3 
if operation == 1: 
    op = '-' 
if operation == 2: 
    op = '+' 
if operation == 3: 
    op = '/' 
    while num2 == 0 or num1%num2 > 0: 
     num1 = random.randint(0,9) 
     num2 = random.randint(0,9) 

print("num1: {} \n num2: {}".format(num1, num2)) 

と4

私の推測、それは確率の問題だけであるということである。

は私が再現可能な結果を​​持っているために、固定種とPythonのフィドルでそれを実行しましたあなたの条件は、num2 = 1またはnum1 = 0の場合、常に真です。

一方で、あなたが説明したカテゴリーに該当しない数少ない他のケースがあります:9/3 8/4 8/2 6/3 6/2 4/2。

編集:MaximTitarenkoのおかげで、whileブロックのインデントが修正されました。

+0

最後の 'while'ブロックのインデントは正しいです。これは、以下の質問から分かります:'分割の場合。結果は整数だけで0で除算されていないので、OPはそれを部門 'operation == 3 'のためだけにインプルメントしたいと思う。 – MaximTitarenko

+0

ああ、それは理にかなっている!修正していただきありがとうございます。 –

関連する問題