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
相关产品推荐
相关产品推荐

