Проблема: создание программы, которая позволяет пользователю угадывать число, сгенерированное компьютером. У игрока есть 5 попыток, и если он угадает, программа заканчивается.
Я сделал эту программу двумя способами.
первый путь
import random
import sys
def computer_number () :
return random.randint (1, 20)
def user_number () :
return int (input ("Number: "))
def number_verification () :
w_ans = 0 # counts the number of wrong ans..
t = 0 # counts the number of turns so far...
while True :
cpu_number = computer_number ()
print (cpu_number)
player_number = user_number ()
if cpu_number == player_number :
print ("Right guess.")
sys.exit () # program ends when user guesses right
else:
w_ans += 1
t += 1
print ("Wrong answer.", 5 - t, " turns left.")
if t > 4 :
print ("Maximum tries exceded.")
sys.exit ()
return w_ans, t
number_verification ()
второй путь
import sys
import random
def number_validation (cpu_number, player_number) :
w_ans = 0
t = 0
while t < 5 :
if cpu_number == player_number :
print ("OK")
sys.exit ()
else :
w_ans += 1
t += 1
print ("Wrong number", 5 - t, " turns left.")
if t > 4 :
print ("Maximum tries exceded.")
sys.exit ()
cpu_number = random.randint (1, 20)
print (cpu_number)
player_number = int (input ("Number: "))
print (number_validation (cpu_number, player_number))
По сути, я не понимаю, это фактцикл while структурирован одинаково в двух моих программах. Однако во второй программе, если я ввожу неправильное число, я получаю следующий вывод:
1
Number: 9
Wrong number 4 turns left.
Wrong number 3 turns left.
Wrong number 2 turns left.
Wrong number 1 turns left.
Wrong number 0 turns left.
Maximum tries exceded.
Почему мои две программы ведут себя по-разному.