интерфейс процентов
У меня имеется данный код:
storage.py
percent = float(0)
unload_percent = float(100)
percif = "[ ░░░░░░░░░░░ ]"
slp = 0.0001
def percents_interface(perc):
if perc < 10:
percif = "[ ░░░░░░░░░░ ]"
elif perc >= 10 and perc < 20:
percif = "[ ▓░░░░░░░░░ ]"
elif perc >= 20 and perc < 30:
percif = "[ ▓▓░░░░░░░░ ]"
elif perc >= 30 and perc < 40:
percif = "[ ▓▓▓░░░░░░░ ]"
elif perc >= 40 and perc < 50:
percif = "[ ▓▓▓▓░░░░░░ ]"
elif perc >= 50 and perc < 60:
percif = "[ ▓▓▓▓▓░░░░░ ]"
elif perc >= 60 and perc < 70:
percif = "[ ▓▓▓▓▓▓░░░░ ]"
elif perc >= 70 and perc < 80:
percif = "[ ▓▓▓▓▓▓▓░░░ ]"
elif perc >= 80 and perc < 90:
percif = "[ ▓▓▓▓▓▓▓▓░░ ]"
elif perc >= 90 and perc < 100:
percif = "[ ▓▓▓▓▓▓▓▓▓░ ]"
elif perc == 100:
percif = "[ ▓▓▓▓▓▓▓▓▓▓ ]"
ru_localization.py
from colorama import init
from time import sleep
from storage import codes
from storage import yes_variants
from storage import percents_interface
from storage import percif
init()
def script_ru_start():
sleep(1)
choice = input("Взломать Пентагон? ")
if choice in yes_variants:
script_ru()
else:
print("Ошибка!")
return
def script_ru():
from storage import percent
from storage import slp
print("Начинается взлом Пентагона...")
sleep(2)
print("")
print("")
while percent < 99.9:
sleep(slp)
print(f"\033[2AПроцент взлома: {round(percent, 1)}%\n{percif}")
percents_interface(percent)
percent = percent + 0.1
slp = slp + 0.00005
sleep(0.5)
print(f"Процент взлома: {round(percent, 1)}\n{percif}\nПентагон успешно взломан!")
sleep(1)
print(f"Спасибо за игру!")
sleep(2)
при работе script_ru() должен брать переменную percif, которая должна изменяться при выполнении. но все выше сказанное не работает. не могу понять почему. Программа исправно работает.
Ответы (3 шт):
Возможно, так заработает:
def percents_interface(perc):
global percif
...
Сейчас у вас percif внутри функции percents_interface - это локальная переменная этой функции, глобальную переменную вы так не поменяете.
Но вообще лучше не пользоваться глобальными переменными, а делать, например, классы и пользоваться переменными классов. И не пользоваться в функциях не переданными в них явно переменными. Тоже самое с изменением переменных функциями, если что-то поменяли - лучше это вернуть в явном виде из функции через return и принять в том месте, где функция была вызвана.
я решил это редактированием функции, теперь она сразу выводит print, а не передает переменную "percif"
percents_interface() можно записать в одну строчку: percif = ("▓"*(perc//10)).ljust(10,"░"). И сразу вставить в нужное место
print(f"Процент взлома: {round(percent, 1)}%\n {('▓'*(percent//10)).ljust(10, '░')}")