如何修复我的动态进度条,以便我可以为其制作可自定义的长度,并且它仍然用正确数量的字符填充栏?



我无法让条形图一个接一个地填满符号。我的意思是它已填充,但它一次放置 2 或 3(取决于当前百分比(符号,当它数到另外 10% 时,它会再次放置 2-3 个符号,直到 100%

我尝试了我所知道的一切(几周前我刚刚开始编程(,但我能让它一个接一个地填满的唯一方法是我取条的长度并迭代它。这不是我想要的,因为百分比取决于填充了多少列表元素。这不好,因为我不想做一个 100 个字符的长列表只是为了一个接一个地计算"百分比",而不是每 5%。

例如:上次我做了一个 20 个字符长的列表,这意味着当最后一个元素被填满时它是 100%,但在这种情况下,我必须在每个循环的计数变量中添加 +5。 但是如果我希望它成为一个 10 个字符的长列表,并且在 1 次循环后,它将 5 添加到计数变量中,那么我得到的最大"百分比"是 50。

from time import sleep

def bar(blen):
progress = []
for p in range(blen):
progress.append(' ')
count = 0
while True:
count += 1
sleep(0.1)
for i in progress:
indx = progress.index(i)
if count == 10:
percent = (blen * 10) // 100
for m in range(percent + 1):
progress[m] = '■'
elif count == 20:
percent = (blen * 20) // 100
for m in range(percent + 1):
progress[m] = '■'
elif count == 30:
percent = (blen * 30) // 100
for m in range(percent + 1):
progress[m] = '■'
print(''.join(progress), count, end='r')
if count >= 100:
break

bar(19)

所以在上面的这段代码中,我做对了,每 10% 通过一次后,它就会填充正确的数量,但我希望它根据计数变量的百分比逐个填充。如果我把它变成 5 个字符长列表,我仍然希望它计数高达 100% 并同时以正确的速度填充。

我不想导入已经具有完全工作进度条的模块,我想制作自己的模块,但遗憾的是,百分比:D陷入了死胡同

我不知道你是否能理解我的问题,但这是我解释它的最好方法,对不起我的语法不好,我的主要语言不是英语。

如果你有20个元素,那么你应该每100/20 = 5%添加平方。如果您有 10 个元素,则每100/10 = 10% 添加平方。如果您有N元素,则每100/N%。然后平方数是count/(100/N)

为了使它看起来更好,您甚至可以使用99/N作为步骤。

我打印'123456789012345678901234567890'以轻松检查它打印了多少 suqare。

from time import sleep
def bar(blen):
step = 99/blen
for count in range(101):
sleep(0.1)
a = int(count/step)
b = blen-a
print('■'*a, end='')
print(' '*b, end='')
print(count, end='r')
print('123456789012345678901234567890')
bar(20)

最新更新