Недавно начал душить питона по вечерам, изучая книгу Доусона “Программируем на Python”.
В конце пятой главы есть задание - создать “Генератор персонажей для ролевой игры”. В условиях дан общий пул статов в 30 очков, которые можно перераспределять по желанию. У меня вроде все работает и добавляет статы, в то же время отнимает использованные очки от общего пула. Так же и наоборот.
Однако, при попытке вывода на экран общего списка характеристик везде показывает нули.
Есть два варианта - через словарь и через список. Результаты одни и те же. Что я делаю не так?
Вот через словарь (через список то же самое, только вместо пар данных у меня четыре кортежа):
# начальные значения
pool = 30
health = 0
strength = 0
wisdom = 0
agility = 0
new_stat = 0
choice = None
stat = None
# список характеристик
character_stats = { "Здоровье:" : health, "Сила:" : strength,
"Мудрость:" : wisdom, "Ловкость:" : agility
}
while choice != "0":
print("Сейчас Вам доступно", pool, "очков для распределения.")
print(
"""
0 - Выйти
1 - Добавить характеристики
2 - Отнять характеристики
3 - Показать характеристики
"""
)
# выход
choice = input("Ваш выбор: ")
if choice == "0":
print("Пора в бой Вашим новым героем!")
# добавить характеристики - выбор
elif choice == "1":
stat = input("\nКакую характеристику Вы хотите увеличить?")
stat = stat.lower()
# сколько характеристик добавить
if stat == "здоровье":
new_stat = int(input("Сколько очков здоровья добавить?" ))
health += new_stat
pool -= new_stat
elif stat == "сила":
new_stat = int(input("Сколько очков силы добавить?" ))
strength += new_stat
pool -= new_stat
elif stat == "мудрость":
new_stat = int(input("Сколько очков мудрости добавить? "))
wisdom += new_stat
pool -= new_stat
elif stat == "ловкость":
new_stat == int(input("Сколько очков ловкости добавить? "))
agility += new_stat
pool -= new_stat
else:
print("У персонажа нет характеристики", stat)
# удаление характеристик - выбор
elif choice == "2":
stat = input("\nКакую характеристику Вы хотите уменьшить? ")
stat = stat.lower()
# сколько характеристик удалить
if stat == "здоровье":
new_stat = int(input("Сколько очков здоровья убавить? "))
health -= new_stat
pool += new_stat
elif stat == "сила":
new_stat = int(input("Сколько очков силы убавить? "))
strength -= new_stat
pool += new_stat
elif stat == "мудрость":
new_stat = int(input("Сколько очков мудрости убавить? "))
wisdom -= new_stat
pool += new_stat
elif stat == "ловкость":
new_stat == int(input("Сколько очков ловкости убавить? "))
agility -= new_stat
pool += new_stat
else:
print("Персонажу недоступна характеристика", stat)
elif choice == "3":
print("\nТекущие характеристики:")
for key, value in character_stats.items():
print(key, value)
else:
print("\nПожалуйста, выберите пункт меню.")
input("\n\nНажмите Enter, чтобы выйти.")