如何让程序判断输入列表是否为已排序列表?我的校验代码失效求助
问题分析与修复
你的代码里判断原列表是否有序的功能失效,核心是这两个错误:
compare=c.split没有调用split()方法,导致compare是函数对象而非原始输入的列表,和整数类型的values无法比较。- 即便调用
c.split(),得到的是字符串列表,而values已被转为整数列表,类型不同也无法正确判断是否相等。
修复后的代码
c = input("Enter list values all on one line, separated by space\n") # 先把原始输入转成整数列表,保存用于后续比较 compare = list(map(int, c.split())) values = compare.copy() # 复制一份用于排序,不修改原始列表 print("Original list:", compare) # 冒泡排序逻辑 for i in range(len(values)): for j in range(i+1, len(values)): if values[i] > values[j]: values[j], values[i] = values[i], values[j] print("New list:", values) # 比较原始列表和排序后的列表是否一致 if compare != values: print("Not in order") else: print("In order")
关键修改说明
- 先将原始输入转为整数列表
compare,确保后续比较的是同类型的整数列表。 - 用
values = compare.copy()复制原始列表,避免排序操作修改原始的compare列表,保证比较的准确性。 - 将两个独立的
if判断改为else分支,逻辑更严谨,避免重复判断。
内容的提问来源于stack exchange,提问作者koko
相关产品推荐
相关产品推荐

