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

为何调用int()后变量仍为string类型?求修复方案

问题:类型转换未生效,输出类型不符合预期

以下是主代码片段:

Tile = SelectTile()
int(Tile)
TileY = Tile
TileX = 0
#Temporary debug:
print("type of tile is: ", type(Tile), "type of TileY is: ", type(TileY))

预期输出:

type of tile is:  <class 'int'> type of TileY is:  <class 'int'>

实际输出:

type of tile is:  <class 'str'> type of TileY is:  <class 'str'>

附SelectTile函数代码:

def SelectTile():
    print("Select Tile to put \"O\" in:")
    print("")
    print(" 1 ॥ 2 ॥ 3 ")
    print("===॥===॥===")
    print(" 4 ॥ 5 ॥ 6 ")
    print("===॥===॥===")
    print(" 7 ॥ 8 ॥ 9 ")
    Tile = input()
    int(Tile)
    #if Tile != 1 or 2 or 3 or 4 or 5 or 6 or 7 or 8 or 9:
    #    print("Invalid Tile! Try again")
    #    SelectTile()
    return Tile

原因分析

Python 的 int() 函数不会直接修改原变量,它会返回一个新的整数对象。你在两处都调用了 int(Tile) 但没有把返回值重新赋值给 Tile,所以 Tile 始终是 input() 返回的字符串类型,后续赋值给 TileY 自然也是字符串类型。

修复方案

只需要在调用 int() 时,把转换后的结果重新赋值给 Tile 即可,最佳修复位置是在 SelectTile 函数内部,这样函数直接返回整数,外部代码无需再处理:

修改后的 SelectTile 函数:

def SelectTile():
    print("Select Tile to put \"O\" in:")
    print("")
    print(" 1 ॥ 2 ॥ 3 ")
    print("===॥===॥===")
    print(" 4 ॥ 5 ॥ 6 ")
    print("===॥===॥===")
    print(" 7 ॥ 8 ॥ 9 ")
    Tile = input()
    # 将转换后的整数重新赋值给 Tile
    Tile = int(Tile)
    # 可以取消注释下面的校验逻辑(注意原逻辑有问题,需修正为正确判断方式)
    # if Tile not in (1,2,3,4,5,6,7,8,9):
    #     print("Invalid Tile! Try again")
    #     return SelectTile()
    return Tile

同时主代码里多余的 int(Tile) 可以删除,简化为:

Tile = SelectTile()
TileY = Tile
TileX = 0
print("type of tile is: ", type(Tile), "type of TileY is: ", type(TileY))

这样运行后,输出就会符合预期,Tile 和 TileY 都会是整数类型。


内容的提问来源于stack exchange,提问作者fozzy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 16:06:27