Modulo if语句不产生预期输出

时间:2017-10-30 16:05:41

标签: python if-statement random while-loop modulo

我编写了一个数学问题提示器。并希望确保在分裂的情况下。结果只是整数而不是除以0.使用以下代码。

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

2 个答案:

答案 0 :(得分:1)

您的代码似乎很好(除了最后两行的缩进,但我认为它在复制代码时已被更改)。

我在python小提琴中使用固定种子运行它以获得可重现的结果:

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

我得到输出8和4.

我的猜测是,它只是一个概率问题:如果num2 = 1或者num1 = 0,你的条件将始终为真。

另一方面,只有少数其他案例有效并且不属于您所描述的类别:9/3 8/4 8/2 6/3 6/2 4/2。

编辑:更正了while块的缩进,感谢MaximTitarenko。

答案 1 :(得分: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