#python #list #loops #dictionary
Вопрос:
У меня есть список словарей с вопросами. Нужно перебирать словари по одному за раз, это также можно делать случайным образом. Каждый вопрос состоит из 2 частей, и их нужно рассматривать отдельно.
Например: вопрос — 'Am I dog?'
если пользователь отвечает 'yes'
, он должен получить 'bark'
, если он отвечает 'no'
, он должен получить 'what am I?'
.
Код выглядит следующим образом:
qa = [{"question": "Am I a dog?", "yes": "bark?",
"no": "Am I a cat?"},
{"question": "Are you a lion?", "yes": "growl?",
"no": "Am I an elephant?"},
{"question": "Am I a person?", "yes": "speak?",
"no": "Am I an animal"},
{"question": "Am I winter?", "yes": "snow?",
"no": "Am I summer"}]
user1 = []
for i in qa:
print(i)
answer1 = input("enter 'yes' or 'no'.n").lower()
if 'yes' in answer1:
user1.append('yes')
if 'yes' in answer1:
print('what do I do?')
user1.append(qa.value[i]) # doesn't work
else:
print("error")
elif 'no' in answer1:
user1.append('no')
if 'no' in answer1:
print('what am I?')
user1.append(qa.value[i]) #doesn't work
else:
print("error")
else:
print("error")
print(user1)
Мне нужно, чтобы пользователь видел только вопрос, затем, если он введет «да», он получит значение «да», а если он введет «нет», он получит значение «нет». Прямо сейчас код показывает все значение «вопроса», которого я не хочу. Помогите, пожалуйста.
Комментарии:
1. Зачем вам нужен список пользователей 1?
2.
print(i)
должно бытьprint(i["question"])
3. @PatrickJane для хранения ответов.
Ответ №1:
Вы, по сути, дважды проверяете одно и то же условие.
if 'yes' in answer1: user1.append('yes') if 'yes' in answer1:
Немного лучшая версия вашей программы с той же логикой, только с другим синтаксисом была бы:
user1 = []
for i in qa:
print(i)
answer1 = input("enter 'yes' or 'no'.n").lower()
print(i.get(answer1, ''))
user1.append(answer1)
ПРОБНЫЙ ПРОГОН:
Am I a dog?
enter 'yes' or 'no'.
>>> no
Am I a cat?
Are you a lion?
enter 'yes' or 'no'.
>>> yes
growl?
Am I a person?
enter 'yes' or 'no'.
>>> no
Am I an animal
Am I winter?
enter 'yes' or 'no'.
>>> yes
snow?
Ответ №2:
Это должно сработать. я сам по себе словарь, поэтому я провел поиск ключей с помощью i.
qa = [{"question": "Am I a dog?", "yes": "bark?",
"no": "Am I a cat?"},
{"question": "Are you a lion?", "yes": "growl?",
"no": "Am I an elephant?"},
{"question": "Am I a person?", "yes": "speak?",
"no": "Am I an animal"},
{"question": "Am I winter?", "yes": "snow?",
"no": "Am I summer"}]
user1 = []
for i in qa:
print(i["question"])
answer1 = input("enter 'yes' or 'no'.n").lower()
if 'yes' in answer1:
user1.append('yes')
if 'yes' in answer1:
print('what do I do?')
user1.append(i["yes"]) # should work
else:
print("error")
elif 'no' in answer1:
user1.append('no')
if 'no' in answer1:
print('what am I?')
user1.append(i["no"]) # should work
else:
print("error")
else:
print("error")
print(user1)
Комментарии:
1. Спасибо, Калеб, он правильно печатает вопросы, но зависит от того, ответит ли пользователь » да » или «нет», мне нужно значение этого ответа @Caleb Sadler