我需要输出:
视频游戏: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%
答案 0 :(得分:5)
您可以使用String formatting(对于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%)
答案 1 :(得分:1)
str.format
有一个打印百分比的特殊技巧。
"Video Games: {total}/8 or {percent:.1%}".format(total=total, percent=total/8.0)
.1
表示“小数点后一位”,%
表示它是一个百分比,因此它隐含地乘以100
答案 2 :(得分:0)
您可以使用以下内容:
print "Video Games: %d/8 (or %0.2f%%)" % (total, total*100/8)
答案 3 :(得分:0)
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) 。在大多数情况下,它是一个微观的速度优化,但我养成了它的习惯,并且喜欢阅读代码更容易。