Целочисленный ввод Python для соответствующего значения команды - PullRequest
0 голосов
/ 29 сентября 2018

Я очень новичок в python, и мне было интересно, есть ли способ преобразовать серию операторов if в два соответствующих списка?

Взять что-то вроде этого:

var = int(input("Enter a number: "))

if var == 1:
    print("One")
elif var == 2:
    print("Two")
elif var == 3:
    print("Three")
elif var == 4:
    print("Four")

И преобразовать это в что-то вроде этого:

commandnumber = [1, 2, 3, 4]
command = [("One", "Two", "Three", "Four")]

print(command[commandnumber.index(var)])

Я не знаю достаточно о Python, чтобы понять, выполнимо ли это или нет.Я в основном хочу, чтобы пользователь мог проще ввести число и получить соответствующую команду (например, print или turtle.forward) в зависимости от того, какое число было введено.

Спасибо за ваше время.

Ответы [ 3 ]

0 голосов
/ 29 сентября 2018

Попробуйте, это немного лучше и не повысит KeyError, если вы ошиблись:

outputs = {
    1: "One",
    2: "Two",
    3: "Three",
    4: "Four",
    'default': 'bad option' 
}
try:
    var = int(input("Enter a number: "))
except ValueError:
    print(outputs.get('default'))        
else:
    print(outputs.get(var, 'bad option'))

Прочитайте здесь , чтобы узнать больше о try except else.

0 голосов
/ 29 сентября 2018

Другой подход без использования словарей может быть:

command = ["One", "Two", "Three", "Four"]
try:
    print(command[val-1])
except:
    print('Invalid option')
0 голосов
/ 29 сентября 2018

Использование словаря может быть лучшим способом сделать это.

outputs = {
    1: "One",
    2: "Two",
    3: "Three",
    4: "Four"
}

var = int(input("Enter a number: "))

print outputs[var]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...