#python #inquirer
#python #средство запроса
Вопрос:
Я пытаюсь создать словарь, который получает входные данные от пользователя. Мой текущий код (еще не закончен)
person = {
"name": str(inp("Enter your name: ")),
"age": int(inp("Enter your age: ")),
"gender": # Help
}
Хорошо, я также написал небольшой код с помощью inquirer, который дает 2 варианта:
questions = [
inquirer.List('gender',
message="What gender are you?",
choices=['Male', 'Female'], ),
]
answers = inquirer.prompt(questions)
Это дает пользователю 2 альтернативы в консоли. Мужской и женский.
Но как мне сделать так, чтобы мой гендерный код был связан с элементом «gender» лично?
Ответ №1:
Поскольку ваш объект person является словарем, вы можете просто установить gender
подобное так:
person["gender"] = new_value
С inquirer кажется .prompt()
, что функция возвращает словарь, где ключи (например, пол в вашем словаре person) являются названиями вопросов (я полагаю, что для вас это было бы gender
). В этом случае вы можете связать предыдущий код с нашими новыми знаниями и написать что-то вроде этого:
person["gender"] = answers["gender"]
Если вы хотите написать все вышеперечисленное в более сжатой форме, вы можете попробовать что-то вроде этого:
questions = [
inquirer.List('gender',
message="What gender are you?",
choices=['Male', 'Female'], ),
]
answers = inquirer.prompt(questions)
person = {
"name": str(inp("Enter your name: ")),
"age": int(inp("Enter your age: ")),
"gender": answers["gender"]
}
И, конечно, если вы хотите сохранить порядок вопросов, вы можете просто извлечь вопросы для имени и возраста следующим образом:
name = str(inp("Enter your name: "))
age = int(inp("Enter your age: "))
questions = [
inquirer.List('gender',
message="What gender are you?",
choices=['Male', 'Female'], ),
]
answers = inquirer.prompt(questions)
person = {
"name": name,
"age": age,
"gender": answers["gender"]
}
Комментарии:
1. igotinfected, я отклоняю предложенное вами редактирование вопроса Espiring, потому что оно изменяет код, который был частью проблемы… Пожалуйста, укажите исправления в своем ответе вместо того, чтобы изменять вопрос…
2. @Yatin Я понимаю ваши рассуждения, но я не верю, что в данном случае проблема заключалась в ошибочной переменной, вопрос заключался в том, как получить доступ к этим данным и назначить их объекту person, я законно полагаю, что OP не заметил, что в его вопросе переменные имеют разные имена.
3. Хм … хорошо, пожалуйста, предложите другое редактирование.. Я одобрю
4. Приветствуется, но не стесняйтесь отклонять, если у вас все еще есть сомнения! в конце концов, это была всего лишь моя интерпретация.