【问题标题】:How to find Where a List First Went out of Order in Python如何在 Python 中查找列表首先出现故障的位置
【发布时间】: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。当列表不再是从小到大的时候。

标签: python list function


【解决方案1】:

类似的东西

# Function Definitions
def start():
    my_list = []
    for i in range(0, 5):
        number = int(input("Enter a number: "))
        my_list.append(number)
    flag = False
    i = 1
    while i < len(my_list):
        if my_list[i] < my_list[i - 1]:
            # found out of order element
            flag = True
            print(f'Out of order at {my_list[i - 1]}')  # print the element
            break  # no need to continue
        i += 1
    if not flag:
        print("This list of numbers is true.")
    return flag


# Main Program
start1 = start()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 2023-03-09
    • 2018-04-02
    • 2017-01-02
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    相关资源
    最近更新 更多