我需要输出这个:
电子游戏:8/8(或 100.0%)
这是满分 8 分的代码:
total = points+pointsTwo+pointsThree+pointsFour
我将如何编写这段代码以准确地输出我上面写的内容和确切的间距?
我试过了:
print("Video Games:", total, "/8 (or", total*100/8,"%)")
但是有一个空间;8 /8 而不是 8/8 和另一个空格;100.0 % 而不是 100.0%
您可以像这样使用字符串格式(对于 Python 2 或 3):
out = "Video Games: {total}/8 (or {percent}%)".format(total=total, percent=total*100/8)
print(out)
在 Python 3.0 中,上面给出了:
Video Games: 7/8 (or 87.5%)
或在 Python 2.0 中,您会得到以下结果(由于整数除法):
Video Games: 7/8 (or 87%)
编辑:这一切归功于 Gnibbler:
通过让字符串格式化程序负责计算百分比,它可以以更短、更可控的方式完成:
out = "Video Games: {total}/8 (or {ratio:.2%})".format(total=total, ratio=total/8.0)
print(out)
同时给出(注意小数点和尾随零):
Video Games: 7/8 (or 87.50%)
str.format
有一个打印百分比的特殊技巧。
"Video Games: {total}/8 or {percent:.1%}".format(total=total, percent=total/8.0)
表示.1
“一位小数”,%
表示它是一个百分比,所以它隐式乘以 100
Python 有太多不同的方法来制作格式化字符串。我最喜欢的还没有提到,只是简单地提到了:
print "Video Games: %d/8 (or %.1f%%)" % (total, total*100/8.0)
对于 Python 2.7 及以下版本,请注意整数除法(这就是我8.0
在分母中使用的原因)。百分比是%%
为了确保它被解释为文字%
。
有一个扩展版本,用于制作带有大量替换的大字符串,您可能会忘记哪个替换对应于字符串中的哪个替换。它是这样的:
percentage = total*100/8.0
print "Video Games: %(total)d/8 (or %(percentage).1f%%)" % vars()
该vars()
调用会生成{'total': 8, 'percentage': 100.0, ...}
,包括当前命名空间中的所有变量,以便它知道要为%(total)d
和插入什么%(percentage).1f
。它更冗长,但更自我记录。如果您不想为 创建新变量percentage
,您可以这样做:
print "Video Games: %(total)d/8 (or %(percentage).1f%%)" % {"total": total, "percentage": total*100/8.0}
当我了解到使用+
迭代复制字符串的字符串连接时,我开始使用它:构建具有许多+
符号的大字符串可能非常低效,字符串长度接近 O(n^2)。对于大多数目的,这是一种微观的速度优化,但我只是养成了它的习惯,并且喜欢阅读代码变得多么容易。
您可以使用以下内容:
print "Video Games: %d/8 (or %0.2f%%)" % (total, total*100/8)