在Python 3.4中打印变量

51

所以,语法似乎已经与我在Python 2中学到的有所不同...这是目前为止我所学到的内容

for key in word:
    i = 1
    if i < 6:
        print ( "%s. %s appears %s times.") % (str(i), key, str(wordBank[key]))

第一个值是整数,第二个是字符串,最后一个是整数。

我应该如何修改我的打印语句,以便正确地打印这些变量?


1
print() 是 Python 3 中的一个函数,而不是一个语句。将您最后一行中除了单词“print”之外的所有内容都用括号括起来,这样就可以了。 - MattDMo
2
@CMac:不,你不是。你做了这个:print(....),它会返回None,然后是None % (one, two, three_strings)。你想要在print(....)调用内部完成something % (one, two, three_strings) - Martijn Pieters
请将此链接(https://docs.python.org/3/whatsnew/3.0.html)保存以备将来参考。 - MattDMo
这是一个不错的链接:https://matthew-brett.github.io/teaching/string_formatting.html - leozilla
6个回答

135

语法已经改变,print现在是一个函数。这意味着%格式化需要在括号内完成:1

print("%d. %s appears %d times." % (i, key, wordBank[key]))

然而,由于您正在使用Python 3.x。 您应该实际使用更新的str.format方法:

print("{}. {} appears {} times.".format(i, key, wordBank[key]))

虽然%格式化目前还没有被正式弃用,但是它正在被不建议使用,推荐使用str.format,并且在将来的版本中很可能会从语言中移除(也许是Python 4?)。


1小细节提醒: %d 是整数的格式说明符,不是 %s


3
非常笨重的 Python 3.6 之前的语法现在已被 f-strings 取代,根据 wwii 的回答。您能否更新您的答案,因为它已经过时了? - smci

61

3.6版本及以上:使用f-string(格式化字符串字面值)查看说明文档

print(f"{i}. {key} appears {wordBank[key]} times.")

9
尝试使用格式语法:
print ("{0}. {1} appears {2} times.".format(1, 'b', 3.1415))

输出:

1. b appears 3.1415 times.

打印函数与其他函数一样,需要在其参数周围加上括号进行调用。


6
您还可以这样格式化字符串:
>>> print ("{index}. {word} appears {count} times".format(index=1, word='Hello', count=42))

输出什么

1. Hello appears 42 times.

由于这些数值是命名的,它们的顺序并不重要。使下面的示例与上面的示例输出相同。
>>> print ("{index}. {word} appears {count} times".format(count=42, index=1, word='Hello'))

以这种方式格式化字符串可以让您实现此目的。
>>> data = {'count':42, 'index':1, 'word':'Hello'}
>>> print ("{index}. {word} appears {count} times.".format(**data))
1. Hello appears 42 times.

1
问题似乎是一个错位的)。在你的示例中,你把%放在了print()外面,你应该把它移到里面:

使用这个:

print("%s. %s appears %s times." % (str(i), key, str(wordBank[key])))

0

在Python中,可以使用format方法打印值。以下这个小例子将有所帮助:输入两个数字a和b,第一行打印a+b,第二行打印a-b。

print('{:d}\n{:d}'.format(a+b,a-b))

同样地,在答案中我们可以这样做

print ("{0}. {1} appears {2} times.".format(22, 'c', 9999))

Python中的字符串方法format()用于指定字符串格式。因此,{0}、{1}、{2}等类似于数组索引,被称为位置参数。因此,{0}被分配为在格式(a+b)中写入的第一个值,{1}被分配为第二个值(a-b),依此类推。我们也可以使用关键字而不是位置参数,例如:
print("Hi! my name is {name}".format(name="rashi"))

因此,这里的名称是关键字,其值为Rashi。 希望有所帮助 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接