Python入门问题:列表操作异常打印None的原因及基础解决方法
问题分析与解决方法
错误点与原因
列表存储内容错误
循环内判断输入数是num的倍数时,你把输入的enteredValue添加到了列表里,但题目要求的是把**2-9中符合条件的除数(也就是输入数的倍数因子)**存入列表,比如输入18,应该存2、3、6、9,而不是重复存18。打印
reverse()的返回值导致输出Nonelist.reverse()是原地修改列表的方法,它不会返回修改后的列表,执行后只会返回None。你直接print(possibleMultiples.reverse()),打印的就是这个返回值,这就是输出None的直接原因。
修正后的代码
enteredValue = int(input("Enter a natural number.")) possibleMultiples = [] for num in range(2, 10): if enteredValue % num == 0: possibleMultiples.append(num) # 改为添加符合条件的除数num if possibleMultiples: # 两种排序方式二选一即可 # 方式1:直接按逆序排序 possibleMultiples.sort(reverse=True) print(possibleMultiples) # 方式2:先原地反转,再打印 # possibleMultiples.reverse() # print(possibleMultiples) else: print("该数不是2-9中任何数的倍数")
额外说明
- 如果输入的数没有符合条件的倍数,代码会提示对应的信息,避免输出空列表;
- 两种逆序方式的区别:
sort(reverse=True)是对列表进行从大到小的排序(适合原本无序的列表),reverse()只是把列表元素反转顺序(这里因为循环是从2到9遍历,原本列表是升序,反转后就是降序,两种方式效果一致)。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

