Python入门求助:列表元素仍为字符串而非整数的问题排查
问题分析与解决方案
嘿,这个问题其实是Python新手非常容易踩的小坑,我来给你掰扯清楚:
你代码里的核心问题是:你调用了int(input1)做类型转换,但没有把转换后的结果保存下来!
看你循环里的这段代码:
input1 = (input('Enter 2 positive, whole numbers you would like to multiply ')) int(input1) # 这里只是做了转换,但结果没存回变量 input_list = input_list + [input1]
int()函数会把输入的字符串转换成整数,但它不会自动修改原来的input1变量——你得把转换后的结果重新赋值给input1,或者直接在赋值的时候完成转换,否则input1还是原来的字符串,加到列表里的自然也是字符串,最后调用multiply的时候就会因为传了字符串而报错啦。
修正后的代码方案
方案一:直接在赋值时完成类型转换(推荐)
这种写法更简洁,一步到位:
def multiply(a, b): c = a * b return c input_list = [] for items in range(1, 3): # 直接把输入转成整数后赋值给input1 input1 = int(input('Enter 2 positive, whole numbers you would like to multiply ')) # 用append往列表里加元素,比input_list + [input1]更高效 input_list.append(input1) result = multiply(input_list[0], input_list[1]) print(result)
方案二:先获取输入再转换赋值
如果你想把步骤拆开来写,也可以这样:
def multiply(a, b): c = a * b return c input_list = [] for items in range(1, 3): input1 = input('Enter 2 positive, whole numbers you would like to multiply ') # 把转换后的整数存回input1变量 input1 = int(input1) input_list.append(input1) result = multiply(input_list[0], input_list[1]) print(result)
额外小提示
- 用
list.append()代替input_list = input_list + [input1]:每次用+拼接列表都会创建一个新的列表对象,而append是直接在原列表上添加元素,效率更高,代码也更简洁。 - 可以考虑加个输入验证,比如判断用户输入的是不是正整数,避免非数字输入导致报错,但这是进阶内容,等你熟悉基础之后再尝试也没问题~
内容的提问来源于stack exchange,提问作者mike-telford
相关产品推荐
相关产品推荐

