【发布时间】:2017-09-21 17:46:34
【问题描述】:
这是我当前的代码。打印将在“!”之前放置一个空格我已经在论坛上搜索了一个小时,但现在一切对我来说都太复杂了。这是一个愚蠢的问题,但我必须知道它为什么在逗号后添加这个随机空格。
fn = input("What's your First Name? ")
ln = input("What's your Last Name? ")
print ('Hello,',fn, ln,'!')
【问题讨论】:
这是我当前的代码。打印将在“!”之前放置一个空格我已经在论坛上搜索了一个小时,但现在一切对我来说都太复杂了。这是一个愚蠢的问题,但我必须知道它为什么在逗号后添加这个随机空格。
fn = input("What's your First Name? ")
ln = input("What's your Last Name? ")
print ('Hello,',fn, ln,'!')
【问题讨论】:
当你打印一个字符串列表时,python 会插入一个空格。
$ python3
Python 3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 08:49:46)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print('My','name','is','doug')
My name is doug
>>> print('My'+'name'+'is'+'doug')
Mynameisdoug
您想将元素组合成单个字符串或(更好的方法)使用字符串格式输出。
>>> fn = "Bob"
>>> ln = "Jones"
>>> msg = "Hello, "+fn+" "+ln+"!"
>>> print(msg)
Hello, Bob Jones!
>>> msg = "Hello, {0} {1}!".format(fn,ln)
>>> print(msg)
Hello, Bob Jones!
>>>
【讨论】:
这是一个愚蠢的问题,但我必须知道它为什么要随机添加 逗号后的空格。
print 的默认设置是逗号后添加空格。
删除! 之前的空格的一种方法是这样做:
print('Hello,',fn, ln, end='')
print('!')
Out : Hello, First Last!
这里end= 指定了在 print() 语句结束时应该打印的内容,而不是default newline。
另一个更简单的方法是 concatenate 字符串。即,
print('Hello,',fn, ln + '!')
【讨论】:
在 python 3.6 中,您可以使用fstrings,它可读性好,并且比其他格式方法稍快:
print(f'Hello {fn} {ln}!')
【讨论】:
这是格式字符串的工作。
Python 3:
print('Hello {} {}!'.format(fn, ln))
Python 2:
print 'Hello %s %s!' % (fn, ln)
【讨论】:
您可以将感叹号 (ln) 之前的元素连接到末尾:
fn = input("What's your First Name? ")
ln = input("What's your Last Name? ")
print ('Hello,', fn, ln + '!')
给予:
Hello, Fist Last!
print() 声明文档指出:
所有非关键字参数都像 str() 一样转换为字符串并写入流中,以 sep 分隔
因为默认情况下,sep 是一个空格 (' '),所以在传递给 function 的每个参数之间都有空格。如上,如果你自己将感叹号连接到ln 上,则默认的sep 参数不会被插入,也不会得到空格。
【讨论】:
ln 转换为字符串是不必要的,因为ln 已经是一个字符串