Python中print输出字符串与len()返回值时出现意外空格原因求解
空格出现的原因
这个空格是Python内置print()函数的默认行为,和len()没有任何关系。
当你给print()传入多个用逗号分隔的参数时,函数会默认在两个相邻参数的输出内容之间插入一个空格,同时默认在所有内容输出完毕后追加一个换行符。
你代码里的print传入了两个独立参数:
- 前半部分字符串拼接结果:
my_dict['name'] + " has won",对应输出内容为troy aikman has won - 后半部分的数值:
len(my_dict['superbowls']),对应输出内容为3
两个参数用逗号分隔,所以print自动在两者中间插入了默认的空格分隔符,最终输出就是你看到的带空格的结果。
替换为加号报错的原因
你把逗号换成加号会触发报错,是因为加号做字符串拼接时要求两边的对象都是字符串类型,而len()返回的是整数int类型,不同类型直接用加号拼接会触发类型不匹配的错误。
实现无空格输出的方案
如果要输出你预期的无空格结果,可以用以下几种常用方案:
- 把数值手动转成字符串后再用加号拼接:
print(my_dict['name'] + " has won" + str(len(my_dict['superbowls'])))
- 用f-string格式化(Python3.6及以上版本支持,是目前最推荐的字符串拼接写法):
print(f"{my_dict['name']} has won{len(my_dict['superbowls'])}")
- 修改print的默认分隔符参数:把
sep参数显式设置为空字符串即可
print(my_dict['name'] + " has won", len(my_dict['superbowls']), sep='')
内容的提问来源于stack exchange,提问作者Samantha Manning
相关产品推荐
相关产品推荐

