我正在尝试使用Python 3.2.5为一个漫长的进程进行动态显示,但这个函数不起作用:
def displayProgress(progress, total):
print("Getting anagrams and saving them...", progress, "/", total," or: ", progress//total*100, "% done.", sep="", end="\r")
例如,使用progress=1000
和total=4000
,而不是显示:
获取字谜并保存它们...... 1000/4000或:完成25%。
显示:
获取字谜并保存它们...... 1000/4000或:0%完成。
如果有人可以帮助弄清楚如何解决这个问题。 感谢阅读和帮助。
答案 0 :(得分:2)
在使用100:
乘以之前,分区会移除分数>>> 1000/4000
0.25
>>> 1000//4000
0
你想乘以100 然后使用地板分割:
>>> 1000 * 100 // 4000
25
或应用于print()
来电:
print("Getting anagrams and saving them...", progress, "/", total, " or: ", progress * 100 // total, "% done.", sep="", end="\r")
您可能希望在此处使用字符串格式,并将舍入保留为%
格式化程序(自动将输入数字乘以100并将f
格式应用于结果,添加百分号你):
print("Getting anagrams and saving them... {}/{} or: {:.0%} done.".format(
progress, total, progress / total),
end="\r")
当然,当分数百分比超过0.5时,这也将进行四舍五入。 300个中的200个将显示为67%
。
演示:
>>> progress, total = 1000, 4000
>>> "Getting anagrams and saving them... {}/{} or: {:.0%} done.".format(progress, total, progress / total)
'Getting anagrams and saving them... 1000/4000 or: 25% done.'