Python整数列表遍历For循环卡在首个条件判断问题求解
代码问题分析
- 输入未转换为整数类型:
input()函数默认返回字符串类型,直接比较会按照ASCII码规则判断,和整数大小比较逻辑完全不同,比如字符串'10'会小于'2',会导致判断结果错误。 - 多余的循环逻辑:
for int in n_seq语句会让判断逻辑重复执行和列表元素数量一致的次数(你当前代码中是6次),所以才会重复输出6次结果,判断列表的排序状态只需要执行1次即可。同时不要用Python内置关键字int作为循环变量名,会覆盖内置的整数类型功能。 - 判断逻辑语法错误:你写的
[0] < [1] < [2]...是直接比较两个单元素列表[0]和[1],这个判断永远为真,所以每次都会输出升序提示,完全没有读取你存入n_seq列表的元素,正确的写法应该是n_seq[0] < n_seq[1] < n_seq[2]...,需要指定要读取的列表名称。 - 输入逻辑不匹配:你开头让用户输入了整数数量
int_num,但后续硬编码写死了要输入6个整数,完全没有用到这个变量,逻辑无法适配不同数量的输入场景。
修正后的代码
# 获取输入的整数数量 int_num = int(input("Enter how many integers you have?: ")) n_seq = [] for i in range(int_num): num = int(input(f"Enter {i+1}th integer: ")) n_seq.append(num) # 判断排序状态 is_asc = all(n_seq[i] <= n_seq[i+1] for i in range(len(n_seq)-1)) is_desc = all(n_seq[i] >= n_seq[i+1] for i in range(len(n_seq)-1)) if is_asc: print("Your sequence is sorted in ascending order.") elif is_desc: print("Your sequence is sorted in descending order.") else: print("Your sequence is out of order.")
内容的提问来源于stack exchange,提问作者Psiberian_Mushky
相关产品推荐
相关产品推荐

