You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 08:35:42