Python实现一位数构造指定规则三位数的代码错误排查
错误原因说明
- 核心运行错误来自
list.sort()方法的特性:Python 里的sort()是原地排序方法,仅修改调用它的原列表的元素顺序,没有返回值(实际返回None)。你将lists.sort()的返回值赋值给变量y后,y的值为None,后续执行y[2]这类索引取值操作时,就会触发类型错误,提示'NoneType' object is not subscriptable。 - 额外优化点:你的代码里
int(a)、int(c)等转换是冗余的,d1到d3已经提前转成了整数类型,排序后元素还是整数,无需二次转换。
修正后的参考代码
方案1:直接使用原地排序后的原列表
d1 = int(input()) d2 = int(input()) d3 = int(input()) lists = [d1, d2, d3] # sort是原地排序,直接修改lists本身 lists.sort() max_num = lists[2] min_num = lists[0] rest_num = lists[1] num = max_num * 100 + min_num * 10 + rest_num print(num)
方案2:使用sorted()函数获取新的排序后列表
sorted()会返回新的排序完成的列表,不会修改原列表,更符合你原来的写法逻辑:
d1 = int(input()) d2 = int(input()) d3 = int(input()) lists = [d1, d2, d3] y = sorted(lists) max_num = y[2] min_num = y[0] rest_num = y[1] num = max_num * 100 + min_num * 10 + rest_num print(num)
内容的提问来源于stack exchange,提问作者students
相关产品推荐
相关产品推荐

