显示分区

时间:2014-03-21 17:54:10

标签: python-3.x

我正在尝试使用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=1000total=4000,而不是显示:

  

获取字谜并保存它们...... 1000/4000或:完成25%。

显示:

  

获取字谜并保存它们...... 1000/4000或:0%完成。

如果有人可以帮助弄清楚如何解决这个问题。 感谢阅读和帮助。

1 个答案:

答案 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.'