Использование inquirer в словаре

#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. Приветствуется, но не стесняйтесь отклонять, если у вас все еще есть сомнения! в конце концов, это была всего лишь моя интерпретация.