2016-05-14 3 views
0

Я хочу сделать цикл for, который постоянно запрашивает новый ввод, который имеет другое имя, поэтому будет q1, q2, q3, q4 и т. Д. Таким образом, мне не нужно делать больше ввода или определенное количество из них.Как создать цикл, который делает новый ввод снова и снова?

Мне также нужно распечатать тот же вопрос на каждом входе.

«Что бы вы хотели добавить к своему супу?»

Спасибо за любую помощь, которую я могу получить.

+0

Используйте словарь для имен. – cdarke

+0

Является ли ваш вопрос относительно структуры такого цикла for в python или вы спрашиваете о том, как хранить неопределенное количество ответов? – CorbinMc

+0

Я хочу хранить неопределенное количество ответов, но для каждого из них должен быть отдельный вопрос. @CorbinMc – BlizzardGizzard

ответ

1

Чтобы сохранить неопределенное количество ответов на ваши вопросы, вы должны использовать список. Создайте пустой список перед началом цикла for и используйте функцию list.append(), чтобы добавить каждый ответ в свой список по ходу.

Список имеет то преимущество, что он относительно эффективен с точки зрения памяти. Использование словаря требует сохранения пар ключ-значение (используя вдвое больше памяти) вместо того, чтобы просто полагаться на порядок значений в памяти.

Пример кода может выглядеть следующим образом:

n = 10 # the number of iterations to perform 
answers = list() 
for i in range(0, n): 
    answers.append(input("question?")) 

print(answers[2]) #this would print the third entered answer 
print(answers[4]) #this would print the fourth entered answer 
+0

Большое вам спасибо! ^^^^ – BlizzardGizzard

1

Простой, но вам, вероятно, не нужен цикл for. Вот простой пример использования словаря:

answers = {} 
count = 1 

while True: 
    ans = input("What would you like to add to your soup? ") 
    if ans.lower() == 'nothing': 
     break 

    answers['q' + str(count)] = ans 
    count += 1 

print(answers) 

У нас есть бесконечный цикл (while True), но брейк-аут, когда пользователь вводит «Ничего». У вас этого нет, но в большинстве приложений вам понадобится нечто подобное.

Пример запуска:

What would you like to add to your soup? carrots 
What would you like to add to your soup? peas 
What would you like to add to your soup? chicken 
What would you like to add to your soup? noodles 
What would you like to add to your soup? nothing 
{'q4': 'noodles', 'q2': 'peas', 'q1': 'carrots', 'q3': 'chicken'} 

Использование словаря вы можете использовать любые имена, которые вы хотите, но мне интересно, если вам действительно нужны эти имена, и почему они вам нужны. Обычно достаточно просто добавить ответы в список.

answers = [] 

while True: 
    ans = input("What would you like to add to your soup? ") 
    if ans.lower() == 'nothing': 
     break 

    answers.append(ans) 

print(answers) 

Как вы можете видеть, код намного проще и прост в использовании. Результатом примера будет:

['carrots', 'peas', 'chicken', 'noodles'] 
+0

Ну, я использую его для программы, которую я должен написать в школе, в которой мне нужно получить ответы и поместить их в .csv и распечатать на отдельной строке вместе с еще двумя рядом строк рядом с ней , Как имя исполнителя - как долго они находятся на сцене - сколько они получают. – BlizzardGizzard

+0

Я также не знаю, что происходит в этом словаре. – BlizzardGizzard

+0

Возможно, вам понадобится решение списка, Keep It Simple (KISS). – cdarke

1

вариация на тему с использованием списка:

answers = [] 
while True: 
    whom = raw_input("Who is on stage ") 
    if whom == "": 
     break 
    duration = raw_input("For how many minutes ") 
    answers.append((whom,duration)) 
for i in answers: 
    print i[0], "was on stage for", i[1], "minutes" 
Смежные вопросы