Hello,
后面有一个空格,我不明白为什么。
这段代码来自CS50的Python课程,我没有得到它的输出是怎样的
Hello,(space)David
,例如,当输入名称是David
时。
name = input("What is your name? ")
name = name.strip()
print(f"Hello, {name}")
怎么有空间?
附注我想这是个初学者问题,但我是初学者,所以:)
你被迫呆在那里的空间就在你的f弦中:
print(f"Hello, {name}")
# ^
# |
# this adds the space
f 字符串(
f"string"
格式字符串)表示打印 "Hello, "
(逗号后面有空格),后跟 {name}
,这是变量 name
直接替换到该位置的 f 字符串中。请注意,双引号 (""
) 围绕着整个内容。将此与下面的其他示例进行对比。
如果你用 out 格式字符串来写这个,它仍然会有一个空格,因为 Python 会自动在打印参数之间添加空格:
name = "David"
print("Hello,", name)
输出:
Hello, David
要强制存在 no 空格,您必须通过使用 f 字符串设置
sep=""
和 out 来强制分隔符为空字符串,如下所示:
print("Hello,", name, sep="")
...或者,with 使用 f 字符串,但保留空格,如下所示:
print(f"Hello,{name}")
# ^
# |
# no space
两者都会输出:
Hello,David
print()
函数的工作原理:
我明白你为什么会感到困惑。请注意以下事项:
这是 print
函数中的
1参数。不要将此字符串中的逗号混淆为将多个参数分隔到
print
函数中的逗号:
arg1 = f 字符串
f"Hello, {name}"
print(f"Hello, {name}")
这是
函数中以逗号分隔的参数:arg1 = 字符串
print
"Hello,"
name
3 逗号分隔的参数到 print("Hello,", name)
# Note: this is the same. The space between arguments makes no difference.
# This just looks uglier is all:
print("Hello,",name)
函数中:arg1 = 字符串
print
"Hello,"
arg3 = 字典关键字参数 name
,其中
sep=""
是根据
sep
函数的官方文档预定义且可识别的字典关键字。
print()