Python代码报错:unsupported operand type(s) for +: 'int' and 'str'求助
解决Python中int与str拼接的报错问题
嘿,这个报错我太熟了!咱们先搞清楚问题出在哪:你代码里的number是整数类型,而"st"/"nd"/"rd"/"th"是字符串类型,Python不允许直接用+把整数和字符串拼在一起,这就是你看到unsupported operand type(s) for +: 'int' and 'str'错误的原因。
下面给你几种简单的解决方案,任选一种都能搞定:
方案1:把整数转成字符串再拼接
用str(number)把整数转换成字符串类型,就能和后缀正常拼接了,修改后的代码如下:
numbers = range(1,10) for number in numbers: if number == 1: print(str(number) + "st") elif number == 2: print(str(number) + "nd") elif number == 3: print(str(number) + "rd") else: # 替换原来的elif number,逻辑更清晰 print(str(number) + "th")
方案2:用f-string(Python 3.6+推荐)
f-string是Python里最简洁直观的字符串格式化方式,直接把变量放进{}里就行,代码更清爽:
numbers = range(1,10) for number in numbers: if number == 1: print(f"{number}st") elif number == 2: print(f"{number}nd") elif number == 3: print(f"{number}rd") else: print(f"{number}th")
方案3:使用字符串format方法
这是比较传统的格式化方式,兼容性也很好:
numbers = range(1,10) for number in numbers: if number == 1: print("{}st".format(number)) elif number == 2: print("{}nd".format(number)) elif number == 3: print("{}rd".format(number)) else: print("{}th".format(number))
顺便提个小优化:你原来代码里的elif number:其实可以改成else:,因为前面已经判断了1、2、3这三个特殊值,剩下的数字直接走else分支就好,逻辑更清晰~
内容的提问来源于stack exchange,提问作者user11685941
相关产品推荐
相关产品推荐

