2015-03-21 2 views
0

У меня есть программа, которая просит пользователя задать вопрос, а затем ввести ответ. Сейчас я попрошу пользователя ввести 5 вопросов и ответов. Таким образом, в основном он задает пользователю вопрос и его ответ 5 раз. Мне бы очень хотелось, чтобы он спрашивал у пользователя, сколько вопросов они хотели бы напечатать, а затем на основании этого он представляет пользователю «введите свой вопрос» и «введите свой ответ» и сохранит эти вещи в качестве переменных (т. Е. «q1» и «a1» и повторяется в зависимости от того, сколько вопросов/ответов они хотят ввести), поэтому я могу использовать эти переменные в заявлении печати позже в программе. Я думал об использовании цикла while с условием продолжения до и обратным отсчетом до 0, а затем цикл заканчивается, но как я могу постоянно создавать новые переменные?Создание нескольких переменных в цикле

` oneistart= raw_input('What is the first question: ') 
oneiend= raw_input('What is the first answer: ') 
+2

Для этого вам нужен словарь. Ваш вопрос - это «ключ», а ответ - «значение». Вы должны исследовать их. – ha9u63ar

+1

Вы действительно _don't_ хотите создать несколько переменных. :) Как сказал ha9u63ar, «dict» хорош для этого. См. [Как сделать переменные переменные в Python?] (Http://stackoverflow.com/questions/1373164/how-do-i-do-variable-variables-in-python) и [Как я могу создавать списки из список строк?] (http://stackoverflow.com/questions/14241133/how-can-i-create-lists-from-a-list-of-strings) –

+2

Использование 'dict' позволяет найти ответ, если вам задан вопрос. Другая структура данных, заслуживающая рассмотрения для этого, - это список кортежей, с вопросом как один член кортежа и ответ, как другой. –

ответ

0

Я думаю, лучше, чем создавать динамические переменные в python, сохранить его в виде списка dicts like.

lis = [] 
n = int(raw_input("How many? ")) 
for i in xrange(n): 
    q = raw_input("enter q: ") 
    a = raw_input("enter a: ") 
    lis.append({"q"+str(i+1): q, "a"+str(i+1): a}) 
print lis 
>>>[{'q1': 'ques1', 'a1': 'ans1'}, {'q2': 'ques2', 'a2': 'ans2'}] 
+0

Динамические динамические переменные можно создавать в Python. Один из них - «globals() [" q1 "] = ...'. – EOL

+0

Циклы 'for' предназначены для того, чтобы делать то, что вы эмулируете с помощью цикла' while'. – EOL

+0

@EOL обновлено и спасибо за внимание. :) – itzMEonTV

1

Как насчет работы со словарем?

d = dict() # Creates an empty dictionary 

oneistart = raw_input('What is the first question: ') 
oneiend = raw_input('What is the first answer: ') 

d[oneistart] = oneiend # updates the dictionary with new key-value (or updates existing value associated to a key 

Кроме того, если вы звоните d.values() вы получите список всех значений (то есть ответы), и вы можете видеть, сколько ответов вы получили? Существуют также другие функции, связанные с объектом словаря, которые вы можете исследовать, прочитав документацию (ваша задача!).

Это вы имели в виду?

+0

Ваш 'd [oneistart] = oneiend # обновляет словарь с новым значением ключа', не находится внутри блока кода. Кроме того, эти точки с запятой не нужны. –

+0

@ PM2Ring Semicolon - хорошая практика - не о необходимости. Я работаю с C/C++/Java одновременно, так что это стало привычкой - а не нападающим, я надеюсь :) – ha9u63ar

+0

Точка с запятой, возможно, * не * хорошая практика Python: практически никто их не использует, на Python, поэтому ваш код выглядит странно, как если бы он был написан кем-то, кто не знает о практике Python, поэтому это может отправить неправильный сигнал. – EOL

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