26

我是 Python 的新手,我想知道如何打印多个值而不在两者之间添加额外的空间。我想要输出ab而不是a b不必调用print两次:

print("a", end="")
print("b")

另外,我有以下代码:

a = 42
b = 84 

我想将它们的值打印为a = 42, b = 84,但如果我这样做

print("a = ", a, ", ", b = ", b)

添加了额外的空格(它输出a = 42 , b = 84

鉴于 Java 风格,

print("a = " + a + ", b = " + b)

提出一个TypeError

4

6 回答 6

43

您可以使用该sep参数摆脱空格:

>>> print("a","b","c")
a b c
>>> print("a","b","c",sep="")
abc

我不知道您所说的“Java 风格”是什么意思;在 Python 中,您不能以这种方式将字符串添加到(比如说)整数,尽管 ifabis 字符串它会起作用。当然,您还有其他几种选择:

>>> print("a = ", a, ", b = ", b, sep="") 
a = 2, b = 3
>>> print("a = " + str(a) + ", b = " + str(b))
a = 2, b = 3
>>> print("a = {}, b = {}".format(a,b))
a = 2, b = 3
>>> print(f"a = {a}, b = {b}")
a = 2, b = 3

最后一个需要 Python 3.6 或更高版本。对于早期版本,您可以模拟相同的效果(虽然我一般不建议这样做,但它有时会派上用场,假装没有意义):

>>> print("a = {a}, b = {b}".format(**locals()))
a = 2, b = 3
>>> print("b = {b}, a = {a}".format(**locals()))
b = 3, a = 2
于 2012-10-03T01:06:13.440 回答
4

print() 函数的实际语法是

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

您可以看到它有一个sep带有默认值的 arg ' '。这就是为什么在两者之间插入空间的原因。

print("United","States")            #Output: United States
print("United","States",sep="")     #Output: UnitedStates
于 2019-07-04T11:47:12.803 回答
1

你也可以使用

print("%d%d" %(a,b))

以格式化字符串的形式打印不由空格分隔的 a 和 b。这与 c 中的类似。

于 2017-09-26T18:27:08.383 回答
0

print()将自动在参数之间留出空格。

>>> print("a", "b", "c")
a b c

要更好地控制间距,您可以使用字符串格式:

>>> v0, v1, v2 = "a", "b", "c"
>>> print("%s%s%s" % (v0, v1, v2))
abc
>>> print("%s%s%s".format(v0, v1, v2)
abc
>>> print(f"{v0}{v1}{v2}")
abc

我喜欢这个主题的指南:https ://realpython.com/python-f-strings/

于 2019-11-19T07:59:09.687 回答
0

要分隔字符串或值,您可以在 print() 中使用 sep 参数

print(a,b,sep='')
于 2020-11-27T14:01:37.277 回答
-2

此页面上,答案是打印您的普通文本并在最后使用 sep=""

所以命令

print("Hole", hole, "Par", par, sep="")

会给

"Hole1Par4"

假设hole==1par==4

于 2015-11-07T04:00:25.117 回答