(python) лучший способ реализовать множественный ввод от пользователя - PullRequest
0 голосов
/ 05 марта 2020

Я спрашиваю у моего пользователя информацию, и у меня, как правило, много полей для ввода, и я считаю, что повторять строку ввода за строкой - действительно повторяющееся.

текущий код:

a= input(str("a value:  "))
b= input(str("b value:  "))
c= input(str("multiple c values:  ")).split(" ")

(значения изменились из моих проектов, все же используйте)

все мои поля ввода работают, как и предполагалось, но я бы хотел очистить код.

Ответы [ 3 ]

0 голосов
/ 05 марта 2020

Вы можете использовать словарь для хранения ввода, где ключи - это переменные, а значения - это вопросы. Затем в l oop замените значения / вопросы на входные данные

пример кода:

dictr = {"a": "a value: ", "b": "b value: ", "c": "multiple c values: "}

for key, value in dictr.items():
    dictr[key] = input(value).split(" ")

print(dictr)

выход:

a value: a
b value: b
multiple c values: a b c
{'a': ['a'], 'b': ['b'], 'c': ['a', 'b', 'c']}
0 голосов
/ 05 марта 2020

Разделите ваш код на вопросы и вопросы, например:

# question and whether it's a multi one
questions={"a": False,
           "b": False,
           "c": True}

answers={}
for k, v in questions.items():
    q="multiple {} values: " if v else "{} value: "
    answers[k]=input(q.format(k))

print(answers)
0 голосов
/ 05 марта 2020

Обратите внимание, что если у вас есть особый случай (c здесь), вы все равно должны рассматривать его отдельно. Не обращая внимания на особые случаи, вы можете использовать dict в следующих строчках:

val = {}
keys = ['a', 'b']

for key in keys:
    val[key] = input(key+(" value:  "))

Затем используйте val['a'] вместо a в вашем коде.

Если вы не хотите использовать dict и должны использовать val[...] везде, вы можете использовать эту строку вместо

globals()[key] = input(key+(" value:  "))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...