Доброго времени суток!
Сделал следующее задание из книги Python Programming for the Absolute Beginner (автор Michael Dawson):
Here's a bigger challenge. Write the pseudocode for a program where the player and the computer trade places in the number guessing game. That is, the player picks a random number between 1 and 100 that the computer has to guess. Before you start, think about how you guess. If all goes well, try coding the game.
Сейчас интересно: А как бы другие справились с этим заданием?
Я понимаю, что нужно было сделать так: компьютер просит Вас выбрать любое число в пределах от 1 до 100 (в моей игре его надо ввести), после чего он делает свою первую попытку и называет произвольное число (естественно в тех же самых пределах). Если предложенное компьютером число не соответствует числу, которое Вы загадали, компьютер просит Вас подсказать ему “выше” или “ниже” (в игре слова ‘UP’ и ‘DOWN’ соответственно) находится загаданное Вами число. После того как компьютер угадывает Ваше число, игра заканчивается и компьютер сообщает Вам о том, сколько попыток ему потребовалось для того, чтобы угадать это число.
Я выполнил задание, но что на мой взгляд не менее важно - я “обучил” программу делать следущее.
К примеру, Вы загадали число 20 => компьютер делает свою первую попытку и называет число 40 => Вы подсказываете (я это так называю): DOWN => компьютер генерирует произвольное число В ПРЕДЕЛАХ ОТ 1 ДО 39 включительно и предлагает его в качестве ответа; допустим сгенерировано число 39 => Вы решаете “обмануть” компьютер и подсказываете: UP => компьютер не дурак (!) - выводит следущее сообщение: Oops, kazhetsya, Vi pozabili: kogda ya nazval chislo 40, Vi skazali MEN'SHE! T.k. posle chisla 39 idet chislo 40, men'she kotorogo, yakobi, nahoditsya zagadannoe Vami chislo, ya otkazivajus' gadat' VISHE 39!!!; еще пару раз скажите UP - компьютер прекратит игру и выведит следущее сообщение: Ya tak ne igraju!!!; если не будете как в танке и скажите DOWN => компьютер продолжит игру и сгенерирует произвольное число в пределах от 1 до 38 включительно; допустим компьютер сгенерировал и предложил число 36 => Вы случаем толи забыли, толи перегадали, так сказать, свое то-самое, первоначально Вами загаданное/введенное число 20 и говорите UP => компьютер не знает, что UP - “неверно” и произвольно выбирает либо 37, либо 38 (т.к. ранее Вы сказали компьютеру, что Ваше число находится выше 36, но ниже 39); допустим выбрано число 38 => Вам либо “UP”, либо “DOWN”: скажите UP - компьютер напомнит, что выше ни-ни - там знакомое нам число 39 (в общем, известный случай); говорите DOWN => и компьютер наталкивается на единственно возможное число 37; wow, думает он, what the hell? - число же совсем не ТО!!! Ну, как говорится, чем богаты, тем и рады: 37 так 37; выводит сообщение: Naskol'ko mne izvestno, pervonachal'no Vi zagadali chislo 20, no t.k. Vi skazali mne, chto Vashe chislo vishe 36 i nizhe 38, to ostaetsya tol'ko chislo 37. Nesmotrya na to, chto chislo 37 ne yavlyaetsya chislom Vami pervonachal'no zagadanim, ya budu schitat', chto ya otgadal Vashe chislo i igra zakonchena!
Выше были рассмотрены нестандартные случаи, о которых, как я счел, должен знать компьютер (т.к от human being можно ожидать все, что угодно) и которые я прописал в программу. Единственное, что не достает - так это то, что пользователь вместо числа может ввести муру какую-нибудь, которую, соответственно, программа не в состоянии обработать. Кстати, на случай если пользователь вместо UP или DOWN вводит что-либо иное, программа просит его: Ispol'zujte ‘UP’ ili ‘DOWN’! Mne nuzhna podskazka!!! Если б знал КАК, то прописал бы подобную просьбу и для “числа”, но к сожалению за неимением такого “know-how” вынужден отложить внедрение подобной функции на будущее. Знаю, в JavaScript есть такая штука как NaN (Not a Number), которая отличает numbers от strings, но как такое организовать в Питоне - еще не научился! Если кто знает, можете подсказать - буду рад!