Как сделать, чтобы пользовательский ввод следовал списку в указанном порядке c - PullRequest
1 голос
/ 20 марта 2020

У меня есть кодовый блок, который заставляет пользователя вводить числа Фибоначчи. Блок кода:

    numb_list = [0, 1, 2, 3, 5, 8, 13, 21, 34, 55]
    numb = int(input('Enter the next Fibonacci number >'))
    while numb in numb_list and numb <= 50:
      numb = int(input('Enter the next Fibonacci number >'))
        if numb in numb_list:
          print('Well done')
        else:
          print('Try again')

Я прошу пользователя ввести эти цифры. Когда пользовательский ввод превышает 50 или вводит все правильные числа, программа выдает «Хорошо сделано». Если пользовательский ввод делает ошибку, программа выводит «Попробуй еще раз». Это работает отлично, но как я сделаю так, чтобы пользовательский ввод следовал этому списку в указанном порядке c, и если он не в этом порядке, программа выводит «Попробовать еще раз».

Это текущий вывод:

    Enter the next Fibonacci number >1
    Enter the next Fibonacci number >1
    Enter the next Fibonacci number >2
    Enter the next Fibonacci number >3
    Enter the next Fibonacci number >8
    Enter the next Fibonacci number >3
    Enter the next Fibonacci number >

Это вывод, который я хотел бы получить:

    Enter the next Fibonacci number >1
    Enter the next Fibonacci number >1
    Enter the next Fibonacci number >2
    Enter the next Fibonacci number >3
    Enter the next Fibonacci number >8
    Enter the next Fibonacci number >3
    Try again

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

Спасибо!

Ответы [ 2 ]

3 голосов
/ 20 марта 2020

Вместо этого вы можете перебирать целевой номер через numb_list и использовать while l oop, чтобы продолжать запрашивать ввод у пользователя, пока введенный номер не совпадет с целевым числом:

numb_list = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
for target in numb_list:
    while int(input('Enter the next Fibonacci number >')) != target:
        print('Try again')
print('Well done')
0 голосов
/ 20 марта 2020

Предполагая, что вы хотите печатать Well done каждый раз, когда вводится правильное значение, и что вы изменяете numb_list, чтобы в нем была дополнительная 1 (согласно последовательности Фибоначчи), вы можете перемещаться по списку с помощью индексировать каждый раз, когда вы получаете следующее значение в последовательности:

numb_list = [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
numb = 0
current_index = 1
while numb <= 50:
    numb = int(input('Enter the next Fibonacci number >'))
    if numb_list[current_index] == numb:
        print('Well done')
        current_index += 1
    else:
        print('Try again')

Если вы не хотите печатать Well done каждую итерацию, вы можете просто удалить оператор print()

...