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

Python字符串转int失效:日期转换代码无法改变变量类型

问题分析:日期转换代码中变量类型未更新的原因

原代码

while True: 
    d = input("Date: ")
    if "/" in d:
        try:
            x, y, z = d.split("/")
            float(x)
            int(y)
            int(z)
            print(type(x))
            print(type(y))
            print(type(z))
        # print(f" {z : 03d} ")
        # print(f" {x : 03d} ")
        # print(f" {y : 03d} ")
            break
        except:
            break
    if "," in d:
        x, y = d.split(",")
        print(x,y)

问题现象

输入Date: 9/8/2020时,执行float(x)、int(y)、int(z)后,打印x、y、z的类型仍为<class 'str'>,而非预期的数值类型。

原因解析

你调用float()和int()函数时,只是完成了字符串到数值的转换,但没有把转换后的结果重新赋值给原变量。这些函数会返回转换后的数值对象,但如果不将返回值存回x、y、z,原变量依然是最初拆分得到的字符串,自然打印类型还是str。

修正后的代码

while True: 
    d = input("Date: ")
    if "/" in d:
        try:
            x, y, z = d.split("/")
            # 将转换结果重新赋值给变量,覆盖原字符串
            x = float(x)
            y = int(y)
            z = int(z)
            print(type(x))  # 输出 <class 'float'>
            print(type(y))  # 输出 <class 'int'>
            print(type(z))  # 输出 <class 'int'>
            break
        except:
            break
    if "," in d:
        x, y = d.split(",")
        print(x,y)

补充说明

修改后,x、y、z会被替换成转换后的数值类型,此时打印类型就能得到预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:57:09