Все бы хорошо, но в нашей программе есть одна логическая ошибка и как минимум одна недоработка. Для выхода пользователь должен ввести 0. Но посмотрите, что происходит при этом.
Программа считает 0 ... еще одним вариантом, но никак не признаком выхода, поэтому она сообщает, что введенный вариант неправльный. Но он и не может быть правильным, поскольку случайные числа генерируются в диапазоне от 1 до 100.
Исправить эту ошибку можно, если добавим конструкцию:
if answer == 0:
break
Данную инструкцию нужно добавить в самое начало тела цикла. Если пользователь введет 0, выполнение будет прервано. Также было бы неплохо, чтобы программа выводила статистику по окончанию игры:
pirint("Oбщий счет: ", score, " из ", i)
Измененный код приведен в листинге:
Листинг. Окончательный вариант
import random
print("*" * 10, "Угадай число", "*" * 10)
рrint("Компьютер выберет случайным образом число от 1 до 10. Попробуй угадать это число. Для выхода введите 0")
answer = 1;
score = 0; i = 0
while answer:
rand = random.randint(l, 10)
answer = int(input("Bвeдитe число: "))
if answer 0:
break
if answer == rand:
score = score +1
рrint("Правильно!")
else:
рrint("Попробуйте еще раз!")
i = i + 1
рrint("Общий счет ", score, " из ", i)
print("Дo встречи!")
Вывод программы будет следующим:
********** Угадай ЧИСЛО **********
Компьютер выберет случайным образом число от 1 до 10.
Попробуй угадать это число. Для выхода введите 0
Введите число: 7
Попробуйте еще раз!
Введите число: 5
Попробуйте еще раз!
Введите число: 4
Попробуйте еще раз!
Введите число: 0
Общий счет 1 из 3
До встречи!
Вот теперь все правильно и работает как нужно!
Примечание. При чтении данных мы не производим проверку их корректности. Если пользователь введет строку вместо числа, то выполнение программы будет установлено, а на консоли будет изображено сообщение об ошибке. Для обработки таких ситуаций используются блоки try.except, которые мы пока рассматривать не будем.