为何第一种方法错误而第二种正确?数据类型转换原理是什么?
两段Python代码的错误与正确分析
错误方法代码
# FIRST METHOD(INCORRECT) two_digit_number = input number0 = two_digit_number[0] number1 = two_digit_number[1] int(number0) int(number1) result = number0 + number1 print(result)
正确方法代码
# SECOND METHOD(CORRECT) two_digit_number = input number0 = two_digit_number[0] number1 = two_digit_number[1] result = int(number0) + int(number1) print(result)
错误方法的问题
- 未保留类型转换结果:调用
int(number0)和int(number1)时,只是临时生成了整数,但没有把转换后的值存回变量。number0和number1依然是字符串类型,所以number0 + number1执行的是字符串拼接,而非数字相加。比如输入"12",输出会是"12"而不是3。 - 额外语法错误:代码里
two_digit_number = input是错的,应该写成two_digit_number = input()——input是函数对象,必须加括号才会触发调用,获取用户输入。原代码会尝试取函数的索引,运行时直接报错。
正确方法的原因
- 直接用转换后的值计算:在求和时,直接将字符串形式的数位转为整数再相加,此时执行的是数字加法,能得到两个数位的正确和。
- (注:同样需要把
input改成input()才能正常运行)
数据类型转换的工作机制
Python的类型转换函数(如int()、str()、float())是无副作用的——它们不会修改原变量的内容,只会返回一个新的目标类型对象。如果想让原变量存储转换后的值,必须显式重新赋值:
number0 = int(number0)
只有这样,后续使用number0时才会是整数类型。单纯调用转换函数却不保存结果,原变量的类型和值都不会发生变化。
内容的提问来源于stack exchange,提问作者Dimitris Aligiannis
相关产品推荐
相关产品推荐

