什么意思在Python中意味着什么?难以理解

时间:2012-04-26 17:00:30

标签: python

我现在在论坛上搜索了一下,我仍然很困惑。如果有人可以指导我阅读更深入解释这一内容的文章,我将非常感激。我正在介绍python课程,我找到了我的问题的解决方案,但我想知道如何\为什么它的工作原理。作业是返回玩家的击球平均值,并在MLB显示时显示。因此,例如,8个击球中的4个击球时间为.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"。我也看到%以不同的方式使用,我只想找到一个很好的解释。希望我不会因为这个问题而受到抨击。谢谢你的帮助。

5 个答案:

答案 0 :(得分:4)

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

例如,%3d%.2f是格式化输出的不同方式。第一个示例意味着您要显示一个整数并为其保留3个空格。第二个意味着您要显示小数点后2位数的浮点类型值。

请参阅中的String Formatting Operations http://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

答案 1 :(得分:3)

算术表达式中的

%表示模数。

像“%。3f”这样的文字字符串中的

%只是一个普通字符;它与模数无关。

但是当你将%符号与%运算符结合使用时,其中包含%符号的字符串是特殊的。在这种情况下,左边的值是一个字符串,因此模数含义不适用;相反,你得到格式化。字符串中的%-sequences是占位符,它们被元组中的值替换,根据字符串中每个'%'之后的内容进行格式化。例如,“%。3f”表示“小数点后三位数的浮点值。”。

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

答案 2 :(得分:1)

在:

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

百分号以两种不同的方式使用,这两种方式都与模数运算符无关。

具体做法是:

答案 3 :(得分:0)

查看http://docs.python.org/release/2.6/library/string.html

  

“格式规范”用于包含的替换字段中   在格式字符串中定义单个值的显示方式   (请参阅格式字符串语法。)它们也可以直接传递给   内置格式()函数。每种格式表类型都可以定义如何   格式规范将被解释。

Python中的模数函数只是mod(p,q)

答案 4 :(得分:0)

用于格式化字符串的%与模数运算符不同。注意它是如何在引号内。

用于字符串格式化的

%是许多编程语言中的标准和约定 - http://en.wikipedia.org/wiki/Printf_format_string