2015-03-22 18 views
0

Я довольно новичок в программировании, и я экспериментировал со словарями на Python. Тем не менее, я только что обновил Python 3.4 и код, который ранее использовался, не работает должным образом после обновления. Я думал, что я очистил все, но теперь мой словарь, кажется, сломан.Использование словаря с пользовательским вводом

Код работает нормально, пока я не попытаюсь вызвать словарь. Ниже приведен пример кода, который ранее работал корректно в Python 2.7:

userPrompt = input("Month: ") 

months = { 
     1: jan, 
     2: feb, 
     3: mar, 
    } 

months[userPrompt]() 

кажется, есть проблема с этой последней строкой. Нужно ли мне писать словарь по-другому или обращаться к нему по-другому?

+1

пользовательского ввода ** всегда является строкой ** (для изменения между 2.х и 3.х, см HTTPS : //docs.python.org/3/whatsnew/3.0.html#builtins). Либо конвертируйте свои ключи в строки, либо ввод в целые числа. См. http://stackoverflow.com/q/20449427/3001761 – jonrsharpe

ответ

1

Используйте следующее:

int(userPrompt) 

, чтобы получить целое значение вашей входной строки. В python 3 функция input не использует функцию eval. Вместо этого он возвращает необработанную строку, например функцию python 2 raw_input. Программисту нужно преобразовать его в целое.

К примеру, в python2:

>>> type(input()) 
42 
<class 'int'> 

В Python3:

>>> type(input()) 
42 
<class 'str'> 
Смежные вопросы