Как написать на питоне игру угадай число

Всем начинающим программистам хочется создать на новом языке программирования какую-нибудь игру, но знаний и практических навыков пока еще маловато. Не беда! Давайте создадим простую игру с использованием логических условий!

Иногда лучший способ начать работу с новым языком программирования — посмотреть уже готовую разработку. Смысл состоит из просмотра существующего фрагмента кода, чтобы узнать, как он работает.

Угадай число, game on python

Давайте рассмотрим кусок кода довольно простой, но полностью работающей игры на Python «Угадай число». Вначале посмотрите на код. Посмотрите на синтаксис. Постарайтесь понять, что этот код делает, построчно. Измените код, чтобы узнать, можете ли вы адаптировать эту игру.

Код игры «Угадай число»


import random
NumberToGuess=random.randint(1,100)
userGuess=-1

while userGuess!=NumberToGuess:
userGuess=int(input("Угадай число от 1 до 100"))
if userGuess > NumberToGuess:
print("Число должно быть меньше!")
elif userGuess < NumberToGuess:
print("Число должно быть больше!")
else:
print("Вы угадали, это число = " + str(NumberToGuess))
#Конец игры - выйти из цикла while
break

Давайте разберем, как это работает

Строки


import random
NumberToGuess = random.randint(1,100)

Генерируют случайное целое число от 1 до 100 и помещают его в переменную

NumberToGuess.

Конструкция


while userGuess!=NumberToGuess:

задает цикл с условием. Пока число пользователя не совпадёт с загаданным числом

Блок кода

   

if userGuess > NumberToGuess:
print("Число должно быть меньше!")
elif userGuess < NumberToGuess:
print("Число должно быть больше!")
else:

совершает три сравнения и выводит предупреждающие надписи, чтобы пользователь смог догадаться. Работают так называемые логические условия, если одно из них принимает значение True, то эта часть выполняется.

последняя строка

else:

указывает на то, что число угадано. Дальше выводится надпись, что вы угадали число и программа завершается.

Пример работы программы

Python 3.5.2 (default, Dec 2015, 13:05:11)

[GCC 4.8.2] on linux
>
Угадай число от 1 до 100 60
Число должно быть меньше!
Угадай число от 1 до 100 50
Число должно быть меньше!
Угадай число от 1 до 100 40
Число должно быть меньше!
Угадай число от 1 до 100 30
Число должно быть меньше!
Угадай число от 1 до 100 20
Число должно быть меньше!
Угадай число от 1 до 100 10
Число должно быть больше!
Угадай число от 1 до 100 12
Вы угадали, это число = 12
>

Возможная доработка программы

Не могли бы вы изменить этот код, чтобы подсчитать, сколько попыток сделал пользователь, чтобы угадать правильное число? Как только вы угадаете правильный номер, программа должна рассказать вам, сколько догадок вы использовали, и определит ваш выигрыш.

Проверка времени реакции пользователя Как создать калькулятор на Питоне?

Темы, рассматриваемые в этой главе:

  • Инструкция import.
  • Модули.
  • Цикл while.
  • Условия.
  • Блоки
  • Булевы значения (true и false).
  • Операторы сравнения.
  • Разница между «=» и «==».
  • Условие if.
  • Ключевое слово break.
  • Приведение типов переменных: функции str(), int() и float()
  • Функция random.randint().

В этой главе мы напишем игру «Угадай число» на Python. Помните, как в мультфильме «Алеша Попович и Тугарин змей», конь Юлий играл с деревом? Здесь будет примерно такой же алгоритм: компьютер будет загадывать число от 1 до 20. Ваша задача угадать число, которое задумал компьютер за 6 попыток. После каждой неудачной попытки, компьютер будет давать подсказку: задуманное число больше или меньше вашего ответа.

Эта игра является хорошей практикой по языку Python — в этой небольшой программе м иты будем использовать все ранее изученные функции, кроме того, рассмотрим несколько новых.Вы узнаете, как преобразовывать различные типы данных и зачем это нужно. Так как у нас игровая программа, то мы будем называть пользователя «Игрок», хотя «Пользователь» тоже является правильным определением.

Пример работы программы «Угадай число».

Ниже представлен примерный вид того, как будет выглядеть окно интерпретатора Python после запуска и выполнения программы «Угадай число»(guessesTaken.py). Данные, которые вводит игрок выделены черным цветом:

4-1

Рисунок 4-1.  Работа программы «Угадай число». Данные, вводимые игроком, выделены черным цветом.

Исходный код программы «Угадай число».

Откройте окно редактора файлов IDLE, нажав меню «File»->»New Window». В открывшемся окне, внимательно перепечатайте приведенный ниже код. Сохраните файл с именем guess.py, после чего запустите выполнение программы нажатием кнопки «F5». Обратите внимание, что в начале некоторых строк необходимо добавить 4 или 8 пробелов. Вообще-то, редактор сам это сделает. Просто имейте ввиду, что это не ошибка, а так и должно быть.

Важно! В очередной раз напоминаю, что данный код предназначен для версии Python 3.0 и выше. В версии Python 2.x эта программа работать не будет. Скачать необходимую версию Python можно с моего сайта (страница «Загрузки) или с официального сайта http://www.python.org.

  1. # Это программа «Угадай число»
  2. import random
  3. guessesTaken = 0
  4. print(‘Желаешь разбогатеть, друг? Как тебя зовут?’)
  5. myName = input()
  6. number = random.randint(1,20)
  7. print(‘Ну тогда приступим? ‘+myName+’, я загадал число от одного до 20′)
  8. while guessesTaken < 6:
  9.     print(‘Как ты думаешь, какое?’) #Перед функцией print() должно быть 4 пробела
  10.     guess = input()
  11.     guess = int(guess)
  12.     guessesTaken = guessesTaken+1
  13.     if guess < number:
  14.         print(‘Мое число больше твоего’) #Перед функцией print() должно быть 8 пробелов
  15.     if guess > number:
  16.         print(‘Мое число меньше твоего’)
  17.     if guess == number:
  18.         break
  19. if guess == number:
  20.     guessesTaken = str(guessesTaken)
  21.     print(‘Превосходно ‘+myName+‘! Ты угадал число с ‘+guessesTaken+‘ попытки. Твой выигрыш 10 очков.’)
  22. if guess != number:
  23.     number = str(number)
  24.     print(‘Жаль, но у тебя не осталось попыток. Я загадал число ‘+number+‘. Ты проиграл… Эй! Вы! Двое! Живо! Снимите ка с него шкуру!’)

Хотя я настоятельно рекомендую перепечатывать код программы вручную, вы можете просто скопировать его отсюда, или скачать файл с готовой программой на странице «Загрузки«.

Обсудить на форуме.

Перейти к содержанию

На чтение 2 мин Просмотров 15 Опубликовано 03.03.2023

Содержание

  1. Введение
  2. Игра “Угадай число” на Python
  3. Заключение

Введение

В ходе статьи напишем игру “Угадай число” на языке программирования Python.

Игра “Угадай число” на Python

Для того, чтобы программа загадывала число нам понадобится метод randint() из модуля random. Импортируем его:

from random import randint

Создадим переменную x, в которую добавим рандомное число от одного, до десяти. Также создадим переменную attempt равную нулю. В неё будет сохраняться количество попыток игрока:

from random import randint

x = randint(1, 10)
attempt = 0

Создадим бесконечный цикл, внутри которого будет выводиться надпись “Я загадал число от 1 до 10, угадай его :)”. Далее дадим пользователю возможность ввести число и сохраним его в переменную user_num. Увеличим значение в attempt на единицу:

from random import randint

x = randint(1, 10)
attempt = 0

while True:
    print("Я загадал число от 1 до 10, угадай его :)")
    user_num = int(input("Ваша догадка: "))
    attempt += 1

Добавим условие, что если введённое игроком число равняется загаданному, то он победил. Если же введённое число больше загаданного, то выводится подсказка, что загаданное число меньше. Ну и если введённое число меньше загаданного, выводится подсказка, что загаданное число больше:

from random import randint

x = randint(1, 10)
attempt = 0

while True:
    print("Я загадал число от 1 до 10, угадай его :)")
    user_num = int(input("Ваша догадка: "))
    attempt += 1
    if user_num == x:
        print(f"Ты угадал число, молодец!nКоличество твоих попыток: {attempt}nСпасибо за игру!")
        break
    elif user_num > x:
        print("Моё число меньше.")
    elif user_num < x:
        print("Моё число больше")

Заключение

В ходе статьи мы с Вами написали код для игры “Угадай число” на языке программирования Python. Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin

Python скрипт - игра угадай число.

Python скрипт — игра угадай число.


# файл guess_number.py
# импортируем модуль для работы со случайными числами
import random

# число попыток угадать
guesses_made = 0

# получаем имя пользователя из консольного ввода
name = input('Привет! Как тебя зовут?n')

# получаем случайное число в диапазоне от 1 до 30
number = random.randint(1, 30)
print ('Отлично, {0}, я загадал число между 1 и 30. Сможешь угадать?'.format(name))

# пока пользователь не превысил число разрешенных попыток - 6
while guesses_made < 6:

    
    # получаем число от пользователя
    guess = int(input('Введи число: '))

    
    # увеличиваем счетчик числа попыток
    guesses_made += 1

    if guess < number:
        print ('Твое число меньше того, что я загадал.')

    if guess > number:
        print ('Твое число больше загаданного мной.')

    if guess == number:
        break

if guess == number:
    print ('Ух ты, {0}! Ты угадал мое число, использовав {1} попыток!'.format(name, guesses_made))
else:
    print ('А вот и не угадал! Я загадал число {0}'.format(number))

Вызываем так:


C:/> python guess_number.py

  • Создано 30.04.2020 12:13:25


  • Михаил Русаков

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Improve Article

Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    In the number guessing game, the user selects a number within a defined range and then the program guesses the number. If the number guessed is wrong then the user tells the program that is the actual number is greater than the guessed number or not. Similarly, the program again guesses the number until the actual number is not guessed.
    Approach: The idea is to use binary search, where in each step the half portion of the search space is reduced. Below is the illustration of the approach:
     

    • Initialize the start and end range of the number guessing.
    • Guess the number as middle of the search space. That is 
      Number = frac{startRange + endRange}{2}
       
    • If the number guessed is correct, then terminate the program.
    • Otherwise, Ask the user that guessed number is less than the guessed number or not. If yes then reduce the search space accordingly.

    Below is the implementation of the above approach:
     

    Python

    args = ["N", "N", "Y"]

    index = -1

    def input():

        global index, args;

        index += 1

        return args[index]

    def guessNumber(startRange, endRange):

        if startRange > endRange:

            return True

        mid = (startRange + endRange)//2

        print("Is the number is ",

            mid, "?", end = " ")

        user = input()

        print(user)

        if user == "Y" or user == "y":

            print("Voila ! Successfully Guessed Number.")

            return False

        elif user == "N" or user == "n":

            print("Actual number is greater than",

                            mid, "?", end = " ")

            user = input()

            print(user)

            if user == "Y" or user == "y":

                return guessNumber(mid+1, endRange)

            elif user == "N" or user == "n":

                return guessNumber(startRange, mid-1)

            else:

                print("Invalid Input. Print 'Y'/'N'")

                return guessNumber(startRange, endRange)

        else:

            print("Invalid Input. Print 'Y'/'N' ")

            return guessNumber(startRange, endRange)

    if __name__ == "__main__":

        print("Number Guessing game in python")

        startRange = 1

        endRange = 10

        print("Guess a number in range (1 to 10)")

        out = guessNumber(startRange, endRange)

        if out:

            print("Bad Choices")

    Outputs:

    Number Guessing game in python
    Guess a number in range (1 to 10)
    Is the number is  5 ? N
    Actual number is greater than 5 ? N
    Is the number is  2 ? Y
    Voila ! Successfully Guessed Number.

    The time complexity of this algorithm is O(log n) as we divide the range in half with each iteration of the guessNumber function.

    The space complexity of this algorithm is O(1) as we only use a constant number of variables that do not increase with the size of the input.

    Improve Article

    Save Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    In the number guessing game, the user selects a number within a defined range and then the program guesses the number. If the number guessed is wrong then the user tells the program that is the actual number is greater than the guessed number or not. Similarly, the program again guesses the number until the actual number is not guessed.
    Approach: The idea is to use binary search, where in each step the half portion of the search space is reduced. Below is the illustration of the approach:
     

    • Initialize the start and end range of the number guessing.
    • Guess the number as middle of the search space. That is 
      Number = frac{startRange + endRange}{2}
       
    • If the number guessed is correct, then terminate the program.
    • Otherwise, Ask the user that guessed number is less than the guessed number or not. If yes then reduce the search space accordingly.

    Below is the implementation of the above approach:
     

    Python

    args = ["N", "N", "Y"]

    index = -1

    def input():

        global index, args;

        index += 1

        return args[index]

    def guessNumber(startRange, endRange):

        if startRange > endRange:

            return True

        mid = (startRange + endRange)//2

        print("Is the number is ",

            mid, "?", end = " ")

        user = input()

        print(user)

        if user == "Y" or user == "y":

            print("Voila ! Successfully Guessed Number.")

            return False

        elif user == "N" or user == "n":

            print("Actual number is greater than",

                            mid, "?", end = " ")

            user = input()

            print(user)

            if user == "Y" or user == "y":

                return guessNumber(mid+1, endRange)

            elif user == "N" or user == "n":

                return guessNumber(startRange, mid-1)

            else:

                print("Invalid Input. Print 'Y'/'N'")

                return guessNumber(startRange, endRange)

        else:

            print("Invalid Input. Print 'Y'/'N' ")

            return guessNumber(startRange, endRange)

    if __name__ == "__main__":

        print("Number Guessing game in python")

        startRange = 1

        endRange = 10

        print("Guess a number in range (1 to 10)")

        out = guessNumber(startRange, endRange)

        if out:

            print("Bad Choices")

    Outputs:

    Number Guessing game in python
    Guess a number in range (1 to 10)
    Is the number is  5 ? N
    Actual number is greater than 5 ? N
    Is the number is  2 ? Y
    Voila ! Successfully Guessed Number.

    The time complexity of this algorithm is O(log n) as we divide the range in half with each iteration of the guessNumber function.

    The space complexity of this algorithm is O(1) as we only use a constant number of variables that do not increase with the size of the input.

    Приветствую. Сегодня хотелось бы написать простого ICQ бота для игры в «Угадай число», где у пользователя будет неограниченное количество попыток, а диапазон чисел составит от 1 до 99 для отгадывания. Сразу хотелось бы сказать, что данный бот работает не совсем так, как хотелось бы, это можно увидеть по фото ниже, т. к. я в этом начинающий.

    Для начала нам понадобится сам Python, и специальная библиотека для работы с ботами, качаем её через pip:

    pip install mailru-im-bot

    Теперь, переходим в ICQ и ищем в поиске @metabot. Создаём бота, скопировав и сохранив токен. В дальнейшем он нам понадобится.

    Код игры

    from bot.bot import Bot
    from bot.handler import MessageHandler, BotButtonCommandHandler
    import json
    import random 
    
    ran_num = random.randint(1, 100)
    ran_num = str(ran_num)
    
    TOKEN = "Токен вашего бота"
    bot = Bot(token=TOKEN)
    
    def bot_play_text(bot, event):        
        if event.data["text"] == "/start":                
            bot.send_text(chat_id=event.from_chat, text="Привет! Я бот для игры в угадай число. Начнём?",                                            
                          inline_keyboard_markup="{}".format(json.dumps([[                                                                                                                                        
                                                                        {"text":"Начать", "callbackData":"call_btn_id_1", "style":"attention"}]])))
    
    def num_play(bot, event):        
        if event.data["text"] == ran_num:                
            bot.send_text(chat_id=event.from_chat, text="Да, вы справились")        
        elif event.data["text"] > ran_num:                
            bot.send_text(chat_id=event.from_chat, text="Загаданное число меньше.")        
        elif event.data["text"] < ran_num:                
            bot.send_text(chat_id=event.from_chat, text="Загаданное число больше.")
    
    def bot_play(bot, event):        
        if event.data["callbackData"] == "call_btn_id_1":                
            bot.send_text(chat_id=event.from_chat, text="Я загадал число от 1 до 99, количество попыток: неограниченно.")                
            bot.send_text(chat_id=event.from_chat, text="Ваше предположение?")
    
    bot.dispatcher.add_handler(MessageHandler(callback=bot_play_text))
    bot.dispatcher.add_handler(MessageHandler(callback=num_play))
    bot.dispatcher.add_handler(BotButtonCommandHandler(callback=bot_play))
    bot.start_polling()
    bot.idle() 

    Итог

    Оставьте программу активной и перейдите в ICQ. Найдите своего бота в списке и отправьте команду /start.

    Чтобы получить новое число, придётся закрыть программу и заново открыть.

    Чтобы получить новое число, придётся закрыть программу и заново открыть.

    Понравилась статья? Поделить с друзьями:
  • Как написать на письме кому куда
  • Как написать на передачу экстрасенсы ведут расследование
  • Как написать на передачу пусть говорят первого канала
  • Как написать на передачу пусть говорят андрею малахову
  • Как написать на передачу место встречи нтв