Как использовать необработанный ввод для определения переменной

Вот мой код:

Adherent = "a person who follows or upholds a leader, cause, etc.; supporter; follower."

word=raw_input("Enter a word: ")

print word

Когда я запускаю этот код и ввожу Adherent, появляется слово Adherent. Как я могу получить вместо этого определение Adherent?


person user2757442    schedule 20.06.2014    source источник
comment
Вам нужна input функция.   -  person vaultah    schedule 20.06.2014
comment
@frostnational Нет в Python 2.x, что явно является тем, что это (из-за наличия raw_input и print оператора.   -  person rlms    schedule 20.06.2014
comment
Я предлагаю вам попробовать руководство.   -  person rlms    schedule 20.06.2014
comment
@sweeneyrod о, верно.   -  person vaultah    schedule 20.06.2014
comment
@frostnational Да, вы не хотите вызывать эту функцию, поскольку она оценивает ввод данных пользователем, чего вы почти никогда не хотите делать.   -  person rlms    schedule 20.06.2014


Ответы (2)


Вы можете (должны) использовать словарь, где слова отображаются на определения:

>>> word_dct = {"Adherent" : "a person who follows or upholds a leader, cause, etc.; supporter; follower."}
>>> word=raw_input("Enter a word: ")
Enter a word: Adherent
>>> word_dct[word]
'a person who follows or upholds a leader, cause, etc.; supporter; follower.'
>>>

Создание динамических переменных - плохая и потенциально опасная практика. Их не только очень легко потерять из виду, но если вы используете exec или eval для их создания, вы рискуете выполнить произвольный код. См. Почему следует избегать exec () и eval ()? для Дополнительная информация. Даже доступ к locals или globals обычно не одобряется в пользу использования списка или словаря.

person Community    schedule 20.06.2014
comment
+1 Что может быть лучше для реализации 'словаря', чем использование 'словарь'? - person tobias_k; 20.06.2014

Adherent - это переменная, и ваша первая строка устанавливает значение "a person who follows or upholds a leader, cause, etc.; supporter; follower."
word также является переменной, значение предоставляется пользователем.
print() печатает значение, которое хранит переменная. Если вы хотите, чтобы пользователь мог выбрать слово для определения, вам понадобится словарь слов.

words = {
  "Adherent": "a person who follows or upholds a leader, cause, etc.; supporter; follower.",
}

Первое значение («Приверженец») является ключевым. Он связан со второй строкой.
Словарь работает так же, как и список, за исключением того, что значения в списке доступны по их индексу. Доступ к значениям в словаре осуществляется по их ключу.

So:

words = {
 "Adherent": "a person who follows or upholds a leader, cause, etc.; supporter; follower.",
}
word = raw_input("Word: ")
print words[word] #this is equivalent to words["Adherent"] if the user inputs "Adherent"

Просто примечание, объекты и переменные обычно должны начинаться со строчных букв.

person Awalrod    schedule 20.06.2014