2014-12-17 3 views
-2

Хорошо, я следую этому курсу codecademy python, и мой код верен, но я не совсем понимаю его. Мне пришлось пойти на форумы, чтобы найти правильный ответ. Вот код:Проблема с пониманием, где определена переменная

score = {"a": 1, "c": 3, "b": 3, "e": 1, "d": 2, "g": 2, 
    "f": 4, "i": 1, "h": 4, "k": 5, "j": 8, "m": 3, 
    "l": 1, "o": 1, "n": 1, "q": 10, "p": 3, "s": 1, 
    "r": 1, "u": 1, "t": 1, "w": 4, "v": 4, "y": 4, 
    "x": 8, "z": 10} 

def scrabble_score(word): 
    total = 0 
    #Make my word lowercase even when i type in caps 
    t = word.lower() 

    for key in t: 
     total += score[key] 
    return total 
print scrabble_score(raw_input("Your word: ")) 

Я получаю все, кроме этого:

total += score[key] 

Как скрипт знать, что «оценка» переменная? Я нигде не определил его. Является ли это глобальной переменной? EDIT: Я был очень устал, задавая этот вопрос (был бодр, 23-25 ​​часов, если быть точным). Теперь я вижу, что я фактически определил переменную.

+1

Похоже, 'score' глобальный словарь. Обычно вы хотите избежать глобальных переменных в Python, если они не являются константами, такими как 'PI = 3.141592'. – iCodez

+0

'оценка', вероятно, определена в глобальном масштабе – inspectorG4dget

+0

Глобалы - это почти всегда плохая идея. Избегайте их, если сможете. – simonzack

ответ

0

Вы можете изменить свое решение этой проблемы, если это необходимо:

def scrabble_score(word,score): # score doesn't need to be global 
    total = 0 
    t = word.lower() 
    for key in t: 
     total += score[key] 
    return total 

x = raw_input("Enter word: ") 
# declare what score is here 
print(srabble_score(x,score)) 
+0

Означает ли это, что я могу заменить 'score' любой переменной, которую я хочу? –

+0

@ ZanderMoysal да. Но в то же время оценка также должна быть значимой. Вы используете score [key], который предполагает, что оценка - это строка/list/tuple/dictionary. – ha9u63ar

+0

В целях тестирования я заменил «score» var «яйцами». И это бросило мне ошибку, говоря, что «яйца» не определены. Но в любом случае, спасибо. @hagubear –

Смежные вопросы