【问题标题】:What's the purpose of %d and %s%d 和 %s 的目的是什么
【发布时间】:2013-06-12 19:26:55
【问题描述】:

在你因为问这个问题而生我的气之前,我已经在寻找答案,但似乎仍然无法理解他们到底做了什么。 我在 SOF 上看到了一个名为“marcog”的用户的回答。例如:

name = "marcog"
number = 42
print "%s %d" (name, number)

我当时所做的是删除这部分,代码仍然输出完全相同的内容。

name = "marcog"
number = 42
print(name, number)

您能简单解释一下我们使用它们的原因吗? 顺便说一句,我使用的是 3.3.1。

【问题讨论】:

  • %s and %d python 的可能重复项
  • 不是真正的重复。
  • 正如史蒂夫的回答所示,当您实际上所做的只是打印出两个变量之间有一个空格时,差异并不是很有意义,但是当您使用 %d 和 %s 之类的格式说明符时较大的字符串的中间,则差异变得更加明显。在某些情况下,格式说明符还允许您指定更多格式信息,例如字段的宽度、小数位数等。

标签: python python-3.x


【解决方案1】:

它告诉print 输出一个字符串(%s)和一个有符号整数(%d)。如果您想要更复杂的输出,这将更有用。例如:

print("Hello %s your number is %d" % (name, number))

使用您提供的示例值,这将输出:

你好,marcog,你的号码是 42

【讨论】:

  • 问题明确提到了 Python 3,而您使用的是 Python 2 语法。
【解决方案2】:

它们用于使用%(模)运算符进行字符串格式化(主要包含变量)。它在很大程度上基于 C 的标准 lib printf 调用——完整的文档在这里:

http://docs.python.org/2/library/stdtypes.html#string-formatting

【讨论】:

  • +1 用于链接到文档,而其他答案都没有
【解决方案3】:

字符串格式化是字符串操作,所以不一定要和print语句一起使用。

my_string = "%s %d"%("foo bar", 5)
foo, bar, five = my_string.split()
print("%s %d %s"%(bar, five, foo))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-22
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-18
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多