为什么这个字符串打印出来的时候有空格?

问题描述 投票:0回答:1

Hello,
后面有一个空格,我不明白为什么。

这段代码来自CS50的Python课程,我没有得到它的输出是怎样的

Hello,(space)David
,例如,当输入名称是
David
时。

name = input("What is your name? ")
name = name.strip()
print(f"Hello, {name}")

怎么有空间?

附注我想这是个初学者问题,但我是初学者,所以:)

python cs50 string-interpolation
1个回答
3
投票

你被迫呆在那里的空间就在你的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

以下是 Python

print()
函数的工作原理:

我明白你为什么会感到困惑。请注意以下事项:

  1. 这是 print 函数中的

    1
    参数。不要将此字符串中的逗号混淆为将多个参数分隔到
    print
    函数中的逗号:

    arg1 = f 字符串

    f"Hello, {name}"

    print(f"Hello, {name}")
    
  2. 这是

     函数中以逗号分隔的参数:

    arg1 = 字符串

    print

    
    arg2 = 变量 
    "Hello,"
    
    

    name
    
    
  3. 这是

    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

    
    arg2 = 变量 
    "Hello,"
    
    arg3 = 字典关键字参数 
    name
    ,其中 
    sep=""
     是根据 
    sep
     函数的官方文档
    预定义且可识别的字典关键字。

    print()
    
    
© www.soinside.com 2019 - 2024. All rights reserved.