0

我需要输出这个:

电子游戏: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%

4

4 回答 4

5

您可以像这样使用字符串格式(对于 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%)
于 2013-10-30T03:45:56.537 回答
1

str.format有一个打印百分比的特殊技巧。

"Video Games: {total}/8 or {percent:.1%}".format(total=total, percent=total/8.0)

表示.1“一位小数”,%表示它是一个百分比,所以它隐式乘以 100

于 2013-10-30T05:24:29.043 回答
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)。对于大多数目的,这是一种微观的速度优化,但我只是养成了它的习惯,并且喜欢阅读代码变得多么容易。

于 2013-10-30T04:00:18.203 回答
0

您可以使用以下内容:

print "Video Games: %d/8 (or %0.2f%%)" % (total, total*100/8)
于 2013-10-30T03:57:38.187 回答