Здесь на основании условий установлено значение коров . И если cows равно 4 , тогда цикл while должен прерваться.
Но здесь break обрабатывается так, как будто его нет.
import random
r = random.randint
def get_num():
return "{0}{1}{2}{3}".format(r(1, 9), r(1, 9), r(1, 9), r(1, 9))
n = get_num()
print(n)
n = [z for z in str(n)]
def game():
cows = 0
bulls = 0
print()
usr_num = [i for i in input("enter:\n")]
usr_set = set(usr_num)
while True:
for x in usr_set:
if usr_num.count(x) >= n.count(x):
cows += n.count(x)
bulls += usr_num.count(x) - n.count(x)
elif usr_num.count(x) < n.count(x):
cows += usr_num.count(x)
bulls += n.count(x) - usr_num.count(x)
print("cows: ", cows, " bulls: ", bulls)
if cows == 4:
print("correct!")
break
else:
game()
game()
Когда коровы = 4 , правильно напечатано, но перерыв не показывает своего эффекта
И если мы немного изменим код.
Вместо коров , если мы поставим 4 (если утверждение)
def game():
cows = 0
bulls = 0
print()
usr_num = [i for i in input("enter:\n")]
usr_set = set(usr_num)
while True:
for x in usr_set:
if usr_num.count(x) >= n.count(x):
cows += n.count(x)
bulls += usr_num.count(x) - n.count(x)
elif usr_num.count(x) < n.count(x):
cows += usr_num.count(x)
bulls += n.count(x) - usr_num.count(x)
print("cows: ", cows, " bulls: ", bulls)
if 4 == 4:
print("correct!")
break
else:
game()
game()
Тогда перерыв работает.