【发布时间】:2021-10-29 17:43:21
【问题描述】:
我在学校写这个程序,我的老师要我们在一个列表中输入 5 个数字,如果数字列表不是按从小到大的顺序排列,那就是说列表最先出现的位置顺序。
我的代码:
#Function Definititions
def start():
list = []
for i in range(0,5):
number = int(input("Enter a number: "))
list.append(number)
flag = 0
i = 1
while i < len(list):
if(list[i] < list[i-1]):
flag = 1
i += 1
if(not flag) :
print("This list of numbers is true.")
else:
print("This list of numbers is false. List became out of order at", )
list = sorted(list, reverse=False)
print("True Version:",list)
return flag
#Main Program
start1 = start()
我想说的是,例如 10、4、5、8、10 之类的列表首先出现故障的位置,在这种特殊情况下,它将位于 list[0] 处。我无法添加任何已经内置在 Python 中的快捷函数,而我的代码中显示的部分 print("This list of numbers is false. List become out of order at", ) 是我想要的添加它,这就是我在程序中将其留空的原因。我的程序中的其他一切工作正常,所以如果找不到解决方案也没关系,但如果有人确实知道该怎么做,我会全神贯注。
【问题讨论】:
-
你在哪里设置
flag=1,你可以说list[i-1]是我们的订单,打印它并打破循环。 -
另外,不要使用
list作为变量名 - 它会覆盖list内置 -
@rdas 我尝试添加
list[i-1],但它只打印了提到的最后一个数字,而不是列表第一次出现故障的那个数字。此外,我不完全知道将break语句放在循环中的哪个位置。我尝试在print("True Version:",mylist)之后添加它,但它一直说它在循环之外。在提到数字列表时,我也将所有内容都更改为mylist -
你能再举几个输入和预期输出的例子吗?我不清楚为什么在你的例子中答案应该是索引 0 而不是索引 1 ......两者都导致了不好的比较,那么为什么要责备第一个呢?例如,
[5,1,6,7,8]的预期返回值是多少?[5,1,6,2,7,3]呢? -
嗯,第一个索引有时可能是罪魁祸首,比如列表是 10、4、8、5、10。如果列表是 1、2,它也可以是索引 1, 1、3、5。当列表不再是从小到大的时候。