random.randint(a, b)
возвращает случайное целое число N
, такое что a <= N <= b
random.randrange(a, b)
возвращает случайное целое число N
такое, что a <= N < b
Обратите внимание на разницу между <
и <=
Если вам нужны числа в диапазоне от -5 до 5 (включительно), вам нужно ...
randint(-5, 5)
или
randrange(-5, 6)
, но не
randint(-5, 4)
Следующий код достигнет вашей цели:
import random
iteration_number = 0
while True:
iteration_number += 1
num1 = random.randint(-5, 5)
num2 = random.randint(-5, 5)
print("Generated number 1: ", num1)
print("Generated number 2: ", num2)
product = num1 * num2
print("Product result: ", product)
if product == 0:
break # exit the loop
print("We iterated", iteration_number, "times.")
Хотя приведенный выше код работает, он довольно уродлив.Это потому, что когда-то это был массивный скрипт, а не разбитый на отдельные функции.Приведенный ниже код выполняет тот же конечный результат, но его легче читать, понимать и изменять:
import random
def gen_once():
"""
generate data once
"""
num1 = random.randint(-5, 5)
num2 = random.randint(-5, 5)
return num1, num2
def test_once(num1, num2):
if num1 * num2 == 0:
return True
return False
def gen_and_test_once():
num1, num2 = gen_once()
return test_once(num1, num2)
def gen_and_test_many():
iteration_number = 0
while True:
iteration_number += 1
test_result = gen_and_test_once()
if product == 0:
return iteration_number
iteration_count = gen_and_test_many()
print("We iterated", iteration_count, "times.")