Как применить вложенные циклы while в функции python - PullRequest
1 голос
/ 20 июня 2019

Я изучаю Python и пытаюсь построить игру с угадыванием чисел. Игра будет случайным образом генерировать целое число от 1 до 250 (оба включительно), чтобы угадать пользователя. Когда пользовательский ввод выходит за пределы диапазона, он запрашивает у пользователя, что это наш диапазон, и запрашивает другой ввод. Кроме того, он будет запрашивать пользователя, если он слишком высок или слишком низок, пока не будет угадано правильное число. В любой момент времени, если пользователь введет «стоп», он завершит игру. Как часть требования о назначении, мне нужно кодировать 2 новые функции в дополнение к уже предоставленным и включить их в финальный запуск игры.

Я пытаюсь преобразовать циклы while ниже в функцию с небольшим прогрессом. Он либо заканчивается ошибкой позиционного аргумента, либо бесконечным циклом.

the_number = random.randint(1,250)

# capture initial user input
user_input = get_user_input()

# repeat code below as long as the user has not guessed the right number
while user_input != the_number:

    # repeat code below as long as user has not entered STOP
    while user_input != 'STOP':

        # verify user input is within range
        check_range(user_input)

        if user_input < the_number:
            slow_print("{} is too low". format(user_input))
            print('\n')
            user_input = get_user_input()

        elif user_input > the_number:
            slow_print("{} is too high". format(user_input))
            print('\n')
            user_input = get_user_input()

        else:
            slow_print("Congratulations you have guessed the correct number")
            break

    else:
        slow_print('\nGame stopped by user. Thank you for playing')
        break

Пожалуйста, кто-нибудь может подсказать, как я могу преобразовать циклы while в функцию, которая работает.

1 Ответ

0 голосов
/ 20 июня 2019

Я не уверен, что вы пытаетесь достичь, но если все, что вам нужно сделать, это добавить еще 2 функции, то, возможно, это то, что вы ищете;

the_number = random.randint(1,250)

# capture initial user input
user_input = get_user_input()

# repeat code below as long as the user has not guessed the right number
while user_input != the_number:

    # repeat code below as long as user has not entered STOP
    while user_input != 'STOP':

        # verify user input is within range
        check_range(user_input)

        if user_input < the_number:
            tooLow(user_input)
            user_input = get_user_input()

        elif user_input > the_number:
            tooHigh(user_input)
            user_input = get_user_input()

        else:
            slow_print("Congratulations you have guessed the correct number")
            break

    else:
        slow_print('\nGame stopped by user. Thank you for playing')
        break

def tooLow(number):
  slow_print("{} is too low". format(number))
  print('\n')

def tooHigh(number):
  slow_print("{} is too high". format(number))
  print('\n')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...