Как зациклить индекс после того, как я использовал функцию ввода? - PullRequest
0 голосов
/ 22 сентября 2019

Я пишу программу, когда пользователь вводит 'apple' в первый раз, она напечатает день 0 и первый элемент в списке.когда пользователь вводит «яблоко» во второй раз, он напечатает день 1 и второй элемент.И я хочу повторить это 30 раз в течение 30 дней.

Может ли кто-нибудь помочь мне с этим?

Спасибо

мой код:

list_1=["a", "b", "c", "d", "e", "f", "g"]
index = 6
a = 0
i = 0
while True:
a = input("Enter:")
if a == "apple":
    if i < 31:
        index = (index + 1) % 7
        d = list_1[index]
        print( "day" ,i, d )
        start = input("Start: ")
        current = input("Current: ")
        i += 1   
        a += 1

мой вывод:

   Enter:apple
   day 0 a
   Start: 2
   Current: 3

   day 1 b
   Start: 2
   Current: 3

   day 2 c
   Start: 2
   Current: 3
   ...
   ...
   ...

Ожидаемый вывод:

   Enter:apple
   day 0 a
   Start: 2
   Current: 3

   Enter:apple
   day 1 b
   Start: 2
   Current: 3
   ...
   ...
   ...
   ...
   Enter:apple
   day 6 g
   Start: 2
   Current: 3

   Enter:apple
   day 7 a
   Start: 2
   Current: 3
   ...
   ...
   ...
   ...
   Enter:apple
   day 30 c
   Start: 2
   Current: 3

Ответы [ 2 ]

1 голос
/ 22 сентября 2019

Как уже указывал @aryerez, вы инициализируете переменную 'i' в цикле, поэтому она будет всегда сбрасываться в ноль в каждой итерации.Таким образом, решением будет сохранить строку инициализации - i = 0 перед циклом while.Я не понимаю, почему вы увеличиваете переменную 'a', потому что это ваша входная переменная.

0 голосов
/ 22 сентября 2019

Похоже, что он производит то, что вы хотите.Вы должны переместить и i, и индекс вне цикла.

list_1=["a", "b", "c", "d", "e", "f", "g"]
i = 0
index = 6
while True:
    a = input("Enter:")
    if a == "apple":
        a = 0
        if i < 31:
            index = (index + 1) % 7
            d = list_1[index]
            print( "day" ,i, d )
            start = input("Start: ")
            current = input("Current: ")
            i = i + 1
            a = a + 1

Вот что делает опубликованный вами цикл

while(true) #like saying while true is a true statement or while true==true
    get user input
    if input == 'apple'
        then set a=0, i=0, index=6
        if i < 31 #which it can't be because we just set it to 0
            Do some arithmetic on index #which will always start as 6 because we just assigned it
            ...
            increase i and a by 1 #They will be equal to 1 now
Now go through the loop again
     get input
     if input=='apple'
          set a=0, i=0, and index=6 again
          check i<31 #can't be, we just set it to 0
              do arithmetic on index #which is equal to 6 again because we just set it.
              ...
              increase a and i by 1
And your loop does this over and over

Но если вы сначала назначите i и индекс вне цикла, тогда мы только установим их равными 0 и 6 один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...