我编写了一个数学问题提示器。并希望确保在分裂的情况下。结果只是整数而不是除以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
答案 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