Найти - Пользователи
Полная версия: Игра "Угадай число". Нужен совет
Начало » Центр помощи » Игра "Угадай число". Нужен совет
1
far4ikg
Всем доброго времени суток. Месяц назад начал заниматься программированием, начал с Python3. Написал вот такую игру, для практики. Хотел узнать мнения знатоков питона, можно ли упростить код, сделать покороче, или же сделать оформление лучше, чтобы было читабельнее и т.п.
 import random
import time
 
name = input('Привет, как тебя зовут? \n').capitalize()
time.sleep(1)
print('Что ж, ', name, ', я загадываю число от 1 до 20. \n', sep='')
time.sleep(1)
scoreNpc = 0
scoreGamer = 0
 
 
def funct1(score1, score2):
    numberRandom = random.randint(1, 20)
    try:
 
        for i in range(1, 5):
 
            number = input('Попробуй угадать: \n')
            if number == 'x':
                break
            number = int(number)
            time.sleep(1)
 
            if number == numberRandom:
                score2 += 1
                print('Отлично, ', name, '! Ты справился за количество попыток: ', str(i), sep='')
                print('Хочешь еще попробовать? (y)')
                quest1 = input()
 
                if quest1 == 'y':
                    print('Пошли по новой, ', name, ', я загадал новое число от 1 до 20.\n', sep='')
                    funct1(score1, score2)
                else:
                    print('Счёт: ', name, ': ', score2, ' Машинка: ', score1, sep='')
                    if score1 > score2:
                        print('Ну что же, ', name, ', можешь меня поздравить, я выиграл =)', sep='')
                    if score1 < score2:
                        print('Ну что же, ', name, ', поздравляю тебя с победой, ты выиграл =)', sep='')
                    if score1 == score2:
                        print('Ну что же, ', name, ', ничья..! =)', sep='')
                        break
                break
 
            elif number > numberRandom:
                print("Твое число слишком большое.\n")
 
            elif number < numberRandom:
                print("Твое число слишком маленькое.\n")
 
            if i == 4 and number != numberRandom:
                score1 += 1
                print('Эх, ', name, ' ты не справился за 4 попытки...', ' я выбирал число ', numberRandom, sep='')
                print('Хочешь еще раз попробовать ? (y)')
                quest2 = str(input(''))
                
                if quest2 == 'y':
                    print('Пошли по новой, ', name, ', я загадал новое число от 1 до 20.\n', sep='')
                    funct1(score1, score2)
                else:
                    print('Счёт: ', name, ': ', score2, ' Машинка: ', score1, sep='')
                    if score1 > score2:
                        print('Ну что же, ', name, ', можешь меня поздравить, я выиграл =)', sep='')
                    if score1 < score2:
                        print('Ну что же, ', name, ', поздравляю тебя с победой, ты выиграл =)', sep='')
                    if score1 == score2:
                        print('Ну что же, ', name, ', ничья..! =)', sep='')
                        break
                break
 
    except ValueError:
        print('Нужно ввести целое число!')
        print('Пошли по новой, ', name, ', я загадал новое число от 1 до 20.\n', sep='')
        funct1(score1, score2)
 
 
funct1(scoreNpc, scoreGamer)
print('Спасибо за игру, ', name, ', скорее возвращайся, поиграем!', sep='')
far4ikg
подсказали на другом форуме, переделал:
 import random
import time
player_name = input('Привет, как тебя зовут? \n').capitalize()
print(f'Что ж, {player_name}, я загадываю число от 1 до 20.')
score = {'ИИ': 0, player_name: 0}
time.sleep(2)
def main_function(score_npc, score_player):
    random_number = random.randint(1, 20)
    for cycle in range(1, 5):
        player_number = input('Попробуй угадать: ')
        time.sleep(random.randint(1, 3))
        if player_number == 'x':
            break
        try:
            player_number = int(player_number)
        except ValueError:
            print('Нужно вводить целое число!')
            break
        if player_number == random_number:
            score_player += 1
            print(f'Отлично, {player_name}! Ты справился за количество попыток: {str(cycle)}')
            break
        elif cycle == 4 and player_number != random_number:
            score_npc += 1
            print(f'Эх, {player_name} ты не справился за 4 попытки... я выбирал число {random_number}')
            break
        elif player_number > random_number:
            print("Твое число слишком большое.\n")
        elif player_number < random_number:
            print("Твое число слишком маленькое.\n")
    def second_function():
        quest = input('Хочешь еще попробовать? y/n ')
        if quest == 'y':
            print(f'Пошли по новой, {player_name}, я загадал новое число от 1 до 20.\n')
            main_function(score_npc, score_player)
        elif quest == 'n':
            print(f'Счёт: {player_name}: {score_player},  ИИ: {score_npc}')
            if score_npc > score_player:
                print(f'Ну что же, {player_name}, можешь меня поздравить, я выиграл =)')
            if score_npc < score_player:
                print(f'Ну что же, {player_name}, поздравляю тебя с победой, ты выиграл =)')
            if score_npc == score_player:
                print(f'Ну что же, {player_name}, ничья..! =)')
        else:
            second_function()
    second_function()
main_function(score['ИИ'], score[player_name])
print(f'Спасибо за игру, {player_name}, скорее возвращайся, поиграем!')

Решено
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB