python - 如何修复我的动态进度条,以便为它制作可自定义的长度,并且它仍然用正确数量的字符填充进度条?
问题描述
我无法让条形图一一填满符号。我的意思是它已填满,但它一次放置 2 或 3 个(取决于当前百分比)符号,当它计数到另一个 10% 时,它再次放置 2-3 个符号直到 100%
我尝试了我所知道的一切(我几周前才开始编程),但唯一能让它一个一个填满的方法是我取长条的长度并遍历它。那不是我想要的,因为百分比取决于填充了多少列表元素。这不好,因为我不想列出一个 100 个字符的长列表,只是为了逐个计算“百分比”,而不是每 5%。
例如:上次我制作了一个 20 字符长的列表,这意味着当最后一个元素被填满时,它是 100%,但在这种情况下,我必须在每个循环的 count 变量中添加 +5。但是如果我想让它变成一个 10 字符长的列表,并且在 1 个循环之后它将 5 添加到 count 变量,那么我得到的最大“百分比”是 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% 之后它会填充正确的数量,在每 10% 传递之后,但我希望它根据 count 变量的百分比一个一个地填充。如果我将它设为 5 个字符长列表,我仍然希望它计数到 100% 并同时以正确的速度填充。
我不想导入一个已经有一个完整工作进度条的模块,我想自己做,但遗憾的是,百分比陷入了死胡同:D
我不知道你是否能理解我的问题,但这是我能解释它的最好方法,对不起我的语法错误,我的主要语言不是英语。
解决方案
如果你有 20 个元素,那么你应该每100/20 = 5
百分比添加一个平方。如果您有 10 个元素,则每个100/10 = 10
百分比添加平方。如果你有N
元素,那么每个100/N
百分比。然后平方数是count/(100/N)
为了使它看起来更好,您甚至可以将99/N
其用作步骤。
我打印'123456789012345678901234567890'
以轻松检查它打印了多少 suqares。
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)
推荐阅读
- docusignapi - 不同应用程序的不同 webhook 端点?
- realm - 在领域中具有必需属性的可空 int 不会被存储
- javascript - fs.writeFile() 回调争论之类的函数如何工作?
- ruby-on-rails - 如何在 devise_invitable 邀请视图中包含邀请者的姓名?
- python - 在 3D 绘图 + 热图中绘制 4 个变量
- python - AttributeError:“列表”对象没有属性“拆分”无法找出错误
- javascript - javascript 运算符与输入的 decimalx 不匹配
- php - 我可以在不使用 session_start 的情况下获得帮助重写我的 php 代码吗?如果我需要附加任何其他内容,请告诉我
- sonarqube - 如何使用 Open JDK 11 安装 SonarQube
- angular - (用户管理系统) - web app的第一页是登录页面