为啥 Python 在打印 int then string 后添加空格? [复制]

Posted

技术标签:

【中文标题】为啥 Python 在打印 int then string 后添加空格? [复制]【英文标题】:Why does Python add a whitespace after printing int then string? [duplicate]为什么 Python 在打印 int then string 后添加空格? [复制] 【发布时间】:2021-03-30 07:42:33 【问题描述】:

这是我的代码:

num = input('Amount of numbers:')
num = int(num)
for x in range(1, num + 1):
    if x == 1:
        print('1st')
    elif x == 2:
        print('2nd')
    elif x == 3:
        print('3rd')
    elif x >= 4:
        print(x, 'th')

这是输出(样本):

Amount of numbers:8
1st
2nd
3rd
4 th
5 th
6 th
7 th
8 th

如您所见,4 之后的所有数字在它和“th”之间都有一个空格。我该如何解决这个问题?

【问题讨论】:

将此用于elif部分elif x >= 4: x = str(x)+'th' print(x) 从docs:"print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)打印objects到文本流filesep分隔后跟@987654329 @。” 【参考方案1】:

不要使用, 逗号,它会自动给出一个空格。

所以把最后一行改成:

        print(x, 'th')

收件人:

        print(str(x) +'th')

【讨论】:

【参考方案2】:

您可以将数字转换为字符串,然后将其打印为

print(str(x) + 'th')

或者您可以将默认分隔符的值更改为空字符串而不是默认空格:

print(x, 'th', sep='')

【讨论】:

【参考方案3】:

你可以optionally give a separator argument 任何你想要的“逗号应该如何表现”(作为其他答案的另一个选项......

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

所以你可以使用""

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

如果您确实决定使用单个字符串,因为其他答案建议您真的应该只使用字符串格式而不是 + 连接

print("numth".format(num=x))

【讨论】:

【参考方案4】:

打印功能

您可以将数字转换为字符串,然后打印出来。 print(str(x) + 'th')

或者直接使用sep

num = input('Amount of numbers:')
num = int(num)
for x in range(1, num + 1):
    if x == 1:
        print('1st')
    elif x == 2:
        print('2nd')
    elif x == 3:
        print('3rd')
    elif x >= 4:
        print(x, 'th', sep="")

使用格式字符串

或者你也可以使用这个。

print("numth".format(num=x))

或 f 个字符串

print(f"xth")

【讨论】:

【参考方案5】:

使用格式化字符串在字符串中插入变量。 f"xth"

【讨论】:

以上是关于为啥 Python 在打印 int then string 后添加空格? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥 int i=strlen(st)会报错?

为啥 1 == int 的计算结果为 False? [复制]

为啥我的 C 函数不打印任何内容?

为啥我打印的值超出范围?

我的列表中的打印函数返回 int 值而不是列表中的字符串

为啥合并打印顺序相反