【问题标题】:Printing few strings in one print command differs from printing them using multiple print commands在一个打印命令中打印几个字符串与使用多个打印命令打印它们不同
【发布时间】:2019-06-19 18:33:17
【问题描述】:

为什么调用第一个打印结果与调用下四个打印结果不同?这里发生了什么?

crates = 5
gap = 10

print(crates * ' ', crates * '#', gap * ' ', crates * '#')

print("differs from:")

print(crates * ' ', end = '')
print(crates * '#', end = '')
print(gap * ' ', end = '')
print(crates * '#')

【问题讨论】:

  • print 在它打印的内容之间添加一个空格(即每个, 都在print 中添加一个空格)。使用end=' ' 而不是end='',它们会匹配。或者将sep='' 添加到您第一次打印的末尾。
  • 嗨@user3565923 我试图解释为什么这两种情况有你看到的打印模式,请查看下面的答案:)

标签: python string output


【解决方案1】:

来自文档:https://docs.python.org/3/library/functions.html#print

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

将对象打印到文本流文件,以 sep 分隔,后跟 end。 sep、end、file 和 flush(如果存在)必须作为关键字参数给出。

在第一种情况下,在 print 中打印多个用逗号分隔的字符串会在它们之间添加一个显式空格 ' ',这是因为 print 的默认参数 sep=' ' 将打印的多个项目用空格分隔

In [124]: print('hello','world')                                                                                                                             
hello world

在第二种情况下,放置end = '' 可确保行不被换行符\n 终止(根据默认参数end='\n'),而是由空字符终止

In [130]: print('hello',end='') 
     ...: print('world',end='')                                                                                                                              
helloworld

在问题中运行你的例子给了我们

      #####            #####
differs from:
     #####          #####

您看到在第一个字符串中添加了一个额外的空格 ' ',但在第二个字符串中没有,并且第二个字符串不是由换行符终止,而是由一个空字符终止

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2021-05-14
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多