2017-10-30 12 views
-2

나는 수학 문제 프롬 터를 코딩했습니다. 그리고 분단의 경우에 그것을 확실히하고 싶습니다. 결과는 정수이며 0으로 나누지 않습니다. 다음 코드를 사용하십시오.Modulo 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 줄의 들여 쓰기 옆에 있지만 코드를 복사하는 동안 코드가 변경되었다고 가정합니다). I 출력 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

내 생각은 확률의 문제라는 것이다 :

나는 재현 결과를 가지고 고정 된 종자와 파이썬 바이올린에 달렸다 : num2 = 1 또는 num1 = 0 인 경우 상태는 항상 true입니다.

다른 한편으로는 설명 된 범주에 해당하지 않는 몇 가지 사례 만 있습니다. 9/3 8/4 8/2 6/3 6/2 4/2.

편집 : MaximTitarenko 덕분에 while 블록의 들여 쓰기가 수정되었습니다.

+0

마지막 'while'블록의 들여 쓰기는 다음과 같은 질문에서와 같이 정확합니다. '나누기의 경우. 결과는 정수이고 0으로 나눈 값이 아닙니다. OP는 사업부 '운영 == 3'에 대해서만이를 보충하려고합니다. – MaximTitarenko

+0

아, 이해할 수 있습니다! 수정해 주셔서 감사합니다. –