2015-02-02 3 views
0

У меня есть список, и каждый раз, когда я ввожу «N» в свою программу, я хочу, чтобы список печатал содержимое следующего индекса.цикл через индекс списка python

categories = ["Produce", "Meat", "Dairy" ,"Misc"] 
... 
elif item == "N": 
    for d in categories[:1]: 
     d = categories[0] 
     d += 1 
     print(d) 

Я понимаю, что приведенный выше код пытается добавить целое число в строку и выбросить ошибку. То, что я не смог выяснить, - это увеличить индекс.

Я рассмотрел несколько других сообщений, касающихся похожих проблем, но это решения не нажимают на меня вне контекста.

Пример вывода о том, что он должен выглядеть

Add Item to list 

Produce 
>>Tomatoes 
>>Grapes 
Meat 
>>Hamburger 
Dairy 
>> 

Вся программа

def add_item(): 
    exit_list = ["F", "Finished"] 
    lists = [] 

    start = input("Would you like to add an item to the list? Y/N") 
    print("Add Item to list") 
    categories = ["Produce", "Meat", "dairy","snacks/boxed goods", "Cans", "Misc"] 

    print(categories[0]) 
    while start in ('y', 'Y'): 
     item = input(">>") 
     if item in exit_list: 
      break 
     elif item == "N": 
      for d in categories[:1]: 
       i = 0 
       i +=1 
       d = categories[i] 
       print(d) 

     elif item: 
      lists.append(item) 
    else: 
     print("ok") 
    print(lists) 
    return lists 

add_item() 
+2

Обратите внимание, что отступы большим дело в питоне. Быть осторожен. (Строка 'for' неверна). И вы должны объяснить, что именно вы хотите сделать, чтобы мы предложили наилучший способ сделать это. Если я правильно понял вас, вам не нужен цикл for, просто индекс. – keyser

+0

@keyser Это была моя ошибка с добавлением кода здесь. Код правильно отступом в программе. – Shilo

+1

@ Cs142 Вам нужно больше объяснить, что вы пытаетесь сделать, мы не можем понять это просто вашим кодом. –

ответ

0

Этот код будет отслеживать индекса и увеличивать его каждый раз, когда он используется:

i = 0 
categories = ["hey", "1", "2" ,"3"] 
... 
elif item == "N": 
    print(categories[i]) 
    i += 1 

Обратите внимание, что это сотрудничество де со временем выйдет за пределы. Если вы хотите обернуть, вы можете сделать это, например. % len(categories) на i.

+1

Спасибо.Это легко читаемое здесь решение. Это даже похоже, что использование len позволит мне создать вложенный оператор if, говорящий, когда len == category [5] .. do stuff – Shilo

0
def add_item(): 
    exit_list = ["F", "Finished"] 
    lists = [] 

    start = input("Would you like to add an item to the list? Y/N") 
    print("Add Item to list") 
    categories = ["Produce", "Meat", "dairy","snacks/boxed goods", "Cans", "Misc"] 

    print(categories[0]) 
    i=0 
    while start in ('y', 'Y'): 
     item = input(">>") 
     if item in exit_list: 
      break 
     elif item == "N": 
       i +=1 
       print(categories[i]) 

     elif item: 
      lists.append(item) 
    else: 
     print("ok") 
    print(lists) 
    return lists 

add_item() 
0

В большинстве случаев можно, если не лучше, избегать использования индекса в Python. Один из способов в вашем случае - использовать generator в вашем списке. Следующий код закроется, когда пользователь войдет в q, напечатайте следующий элемент, когда пользователь вводит n, и ничего не делайте, если ввод - это что-то еще.

categories = ["hey", "1", "2" ,"3"]            
user_input = None                

# Transform your list into an iterator                 
categories = iter(categories)             

# While the user doesn't want to quit                      
while user_input != "q":    
    # The user's input is transformed to lower case           
    user_input = input("What do you want to do ? ").lower()      
    if user_input == "n":              
     try:          
      # We print the next value on the iterator i.e. the next 
      # value in your list        
      print(next(categories))            
     except StopIteration:             
      # Raised when the iterator reached the end i.e. when we 
      # have printed all the values in the list 
      print("You've printed all the list!")         
      break   

Возможный выход:

What do you want to do ? hello # Nothing happens here 
What do you want to do ? n 
hey 
What do you want to do ? n 
1 
What do you want to do ? n 
2 
What do you want to do ? n 
3 
What do you want to do ? n 
You've printed all the list! 

Обрати внимание, что этот пример использует Python3 +

Смежные вопросы