Использование переменных в словаре - PullRequest
0 голосов
/ 10 января 2012

Я новичок в Python, и я начал возиться с ним.У меня есть такой простой код:

def guess_number(Name,Gender):
    if Gender=='Male':
        Title='Mr.'
    else:
        Title='Ms.'
    number=int(raw_input("Hello " + Title + Name + ", guess what my favorite number is between 1-10"))
    if number==4:
        print number
        print "That's my favorite number!"
    else:
        print number
        print "Try Again!"
    return number

choice_dict=dict([(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0),(8,0),(9,0),(10,0)])

for i in range(10):
    guess_number("Noam","Male")
    choice_dict[number]=choice_dict[number]+1

print choice_dict[1], choice_dict[2], choice_dict[3], choice_dict[4], choice_dict[5], choice_dict[6], choice_dict[7], choice_dict[8], choice_dict[9], choice_dict[10]

Это простой процесс, где в функции с именем "guess_number" он запрашивает у человека определенное число от 1 до 10.Он повторяет функцию 10 раз и для каждого выбранного числа добавляет +1 к числу в словаре, в конце выводит, сколько раз было выбрано каждое число.

Почему-то я не понимаюон говорит мне, что «число» не определено, хотя я вернул переменную «число» в функции «угадай номер».

Чего не хватает?

Ответы [ 3 ]

4 голосов
/ 10 января 2012

number является локальной переменной для функции guess_number.Это не существует вне этого.То, что вы возвращаете, - это значение - не сама переменная, а ее значение - которое вам нужно использовать или присвоить чему-либо.Вы даже можете назначить его переменной с тем же именем - если вы понимаете, что это другая переменная, которая, как оказалось, имеет то же имя:

number = guess_number("Noam", "Male")
1 голос
/ 10 января 2012

Изменение

guess_number("Noam","Male")

на

number = guess_number("Noam","Male")

number определяется в (локальной) области действия функции guess_number, но не в глобальной области.Чтобы сослаться на number в глобальной области видимости, сначала необходимо связать number со значением, доступным из глобальной области, и (локальные переменные из функции недоступны. См. Правила LEGB ниже.)

Ссылка:

0 голосов
/ 10 января 2012

Переменная «число» в вашей функции «угадай номер» является локальной только для этой функции.Чтобы исправить вашу проблему, вы должны назначить переменную "число" результату из "угадайки".Таким образом, измените

guess_number("Noam","Male")

на

number = guess_number("Noam","Male")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...