%在Python中是什么意思?无法理解

2024-05-20 01:53:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在论坛上搜索了一段时间,但我还是很困惑。如果有人能指点我看一篇更深入地解释这一点的文章,我将不胜感激。我正在学习python课程的简介,我找到了解决问题的方法,但我想知道它是如何工作的。任务是返回一个球员的击球平均值,并将其显示为MLB将显示。比如说,蝙蝠队的4小时8秒的成绩是0.500。这是我找到的有效代码。

from __future__ import division, print_function

def print_batting_average(at_bats, hits):
    average_str = "%.3f" % (hits / at_bats)
    if average_str.startswith("0"):
        average_str = average_str[1:]
    print("Batting average is", average_str)

print_batting_average(4, 2)

我知道这个百分比是模,它给出了剩余的部分。我只是不明白这是如何融入代码的其他部分的。例如“%.3f”。我也看到了%的不同用法,我只是想找到一个很好的解释。希望我不会因为这件事而火冒三丈。谢谢你的帮助。


Tags: 方法代码文章论坛at课程解决问题print
3条回答

在:

"%.3f" % (hits / at_bats)

百分号有两种不同的用法,它们都与模算子无关。

具体来说:

在上下文中,您询问的%用于帮助格式化输出,与任何mod操作无关。

例如,%3d%.2f都是格式化输出的不同方式。第一个示例意味着您希望显示一个整数并为其保留3个空格。第二个表示希望在小数点后显示一个浮点数类型的值,其中包含两个数字。

参见中的String Formatting Operationshttp://docs.python.org/library/stdtypes.html#string-formatting-operations了解有关各种格式类型和选项的详细信息。

你可能会遇到这样的事情:

number_of_Widgets = 5
cost = 66.8788
print 'Total cost for %d widgets is $ %5.2f.' % (number_of_Widgets, cost)

收益率:

Total cost for 5 widgets is $ 66.88.

“”中包含的部分使用格式化指令作为行尾中提供的实际变量值的占位符。这些值前面是%然后()包含提供这些值的变量。

下面是一个简单的示例,说明为什么格式化字符串可以方便地格式化输出:

这里我们不为数字预留额外的空间,当它达到10时,你可以看到它改变了输出。

In [9]: for i in xrange(5,15):
   ...:     print '%d is the number' % i
   ...:
5 is the number
6 is the number
7 is the number
8 is the number
9 is the number
10 is the number
11 is the number
12 is the number
13 is the number
14 is the number

在这里,我们用两个空格格式化这个数字,并得到一个前导空格来表示一个数字。

In [10]: for i in xrange(5,15):
   ....:     print '%2d is the number' % i
   ....:
 5 is the number
 6 is the number
 7 is the number
 8 is the number
 9 is the number
10 is the number
11 is the number
12 is the number
13 is the number
14 is the number

%在算术表达式中表示模数。

%在像“%.3f”这样的文本字符串中只是一个普通字符;它与模数无关。

但是当您将带%符号的字符串与%运算符一起使用时,它们是特殊的。在本例中,左边的值是一个字符串,因此模的含义不适用;相反,您将获得格式设置。字符串中的%-序列是占位符,由元组中的值替换,其格式根据字符串中每个“%”后面的内容设置。对于实例,“%.3f”表示“小数点后三位的浮点值”。

有关格式规范的详细信息,请参见http://docs.python.org/library/stdtypes.html#string-formatting;它与C中的printf函数族大致相同

相关问题 更多 >