Если обе переменные равны нужно остановить программу и вывести результат
Не работает оператор break, пишет none, а потом краш. Как исправить код, чтобы при получении двух одинаковых значений он останавливался.
import random
def lucky():
x = random.randrange(1, 65)
y = random.randrange(1, 65)
print(x, y)
equal(x, y)
def equal(x, y):
while x != y:
print(lucky())
if x == y:
break
print(x, y)
lucky()
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Например, так:
import random
def lucky():
x = random.randrange(1, 65)
y = random.randrange(1, 65)
print(x, y)
return x, y
def equal():
while True:
x, y = lucky()
if x == y:
break
equal()
Пример вывода:
21 10
52 10
30 34
8 23
23 26
7 16
42 14
19 39
48 32
19 53
60 64
44 41
9 49
46 47
43 6
1 60
41 31
31 4
22 60
27 54
52 30
28 50
48 25
43 16
28 20
64 13
15 50
18 16
8 64
19 51
21 2
35 38
34 35
53 62
53 52
10 10
Вкратце про ошибки и т.д.:
- не нужно несколько раз печатать одно и то же, печатайте
xиyгде-то в одном месте - для того, чтобы проверять результат работы одной функции в другой функции, нужно возвращать из той результат и присваивать его куда-то
- используйте "бесконечный" цикл
whileс условием иbreakвнутри цикла - это удобно - если функция ничего не возвращает, то на самом деле она возвращает
None, который вы и печатали - старайтесь не использовать рекурсию (циклический вызов функции самой из себя сразу или по цепочке управления), тщательно не продумав архитектуру кода, в рекурсии очень легко запутаться и сделать её бесконечной, что у вас и произошло