Форум сайта python.su
1
Делаю задание по книге, процедурой, так как до функций ещё не добрался. Проблема возникла во время присваивания.
есть переменная - “сила”
присваиваю переменной “увеличиваемый_параметр”, переменную “сила”.
Провожу операции над переменной “увеличиваемый_параметр”, но это не влияет на параметр сила, как будто я провожу операцию над локальной переменной, а не над глобальной. Почему?
Вот код:
# Генератор Персонажей # # Смысл задачи, составить программу в которой пользователь, распределяет # параметры по характеристикам героя. МЕНЮ = (""" Выберите, пункт меню: 0. Выход. 1. Добавить очки. 2. Убрать очки.""" ) запас_очков = 30 сила = 1 ловкость = 2 мудрость = 3 здоровье = 4 пункт_меню = "" # Предлагаем пользователю поработать с меню. while пункт_меню != "0": print(МЕНЮ) пункт_меню = input("Укажите нужный вам пункт меню: ") if пункт_меню == "0": print("Программа завершена") elif пункт_меню == "1": номер_параметра = "" while номер_параметра != "0": print("Ваши параметры:") print(" 0. Выйти в предыдущее меню.") print(" 1. Сила = ", сила) print(" 2. Ловкость = ", ловкость) print(" 3. Мудрость = ", мудрость) print(" 4. Здоровье = ", здоровье) номер_параметра = input("Введите номер параметра, для увеличения: ") if номер_параметра == "0": # Возврат в предыдущее меню. pass # Принимаем значение выбранного пункта меню. elif номер_параметра == "1": выбранный_параметр = "сила" увеличиваемый_параметр = сила elif номер_параметра == "2": выбранный_параметр = "ловкость" увеличиваемый_параметр = ловкость elif номер_параметра == "3": выбранный_параметр = "мудрость" увеличиваемый_параметр = мудрость elif номер_параметра == "4": выбранный_параметр = "здоровье" увеличиваемый_параметр = здоровье # Модуль увеличения параметра. print("Ваш запас очков равен - ", запас_очков) увеличение = int(input("Укажите на какое значение нужно увеличить {}: ".format(выбранный_параметр))) while увеличение > запас_очков or увеличение < 0: print("Ваш запас очков равен - ", запас_очков) print("Вы решили увеличить на {}!".format(увеличение)) увеличение = int(input("Укажите верное значение")) # Теперь можно, наконец, увеличить параметр. увеличиваемый_параметр = увеличиваемый_параметр + увеличение запас_очков = запас_очков - увеличение print(сила, увеличиваемый_параметр, увеличение, запас_очков) # данная строка выводит на экран, что переменная - "сила", своё значение не изменила.
Отредактировано Mixeyka (Сен. 28, 2014 13:46:36)
Офлайн
568
Код программы покажите.
Офлайн
1
FishHook
Кода не видно?
Офлайн
568
А, так это программа на питоне? Я думал вы перепутали и кусок одинэса нам показываете.
Вы и дальше в таком же стиле собираетесь писать?
Офлайн
857
MixeykaОперация + создаёт новый объект типа int, который связывается с именем увеличиваемый_параметр. Имя сила остаётся связанным с первоначальным объектом типа int.увеличиваемый_параметр = увеличиваемый_параметр + увеличение
>>> n = 1 >>> id(n) 1287271584 >>> id(n + 0) 1287271584 >>> id(n + 1) 1287271600 >>>
Отредактировано py.user.next (Сен. 28, 2014 13:58:53)
Офлайн
1
py.user.next
Спасибо.
FishHook
Это, конечно, середина работы, но примерно так и пишу.
Офлайн
568
MixeykaА вы вообще в сети или где-то еще много видели примеров программ на кириллице?
FishHook
Это, конечно, середина работы, но примерно так и пишу.
Офлайн
1
FishHook
Ёпт, ты про это… Не бери в голову.
Офлайн
33
MixeykaНет у нас процедур.
Делаю задание по книге, процедурой, так как до функций ещё не добрался.
Офлайн
253
BudulianinУ многих в таком виде оно само не лезет. Неплохо указать в начала файла его кодировку а то потом чудеса начнутся.
Не бери в голову.
>>> a=2 >>> b=a >>> id(a) 10025900 >>> id(b) 10025900 >>> b+=1 >>> id(b) 10025888 >>> b 3
>>> a=[1,2,3] >>> b=a >>> b+=[4,5,6] >>> b [1, 2, 3, 4, 5, 6] >>> a [1, 2, 3, 4, 5, 6]
Отредактировано doza_and (Сен. 28, 2014 21:49:21)
Офлайн