Найти тему
Будни питониста

Исправление логической ошибки в программе.

Все бы хорошо, но в нашей программе есть одна логическая ошибка и как минимум одна недоработка. Для выхода пользователь должен ввести 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, которые мы пока рассматривать не будем.