Как найти, где список впервые вышел из строя в Python

#python #list #function

Вопрос:

Я пишу эту программу в школе, где мой учитель хочет, чтобы мы ввели 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 lt; len(list):  if(list[i] lt; 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, вышел из строя первым, что в данном конкретном случае было бы в списке[0]. Я не могу добавить какие-либо функции быстрого доступа, уже встроенные в Python, и часть, где в моем коде написано print(«Этот список чисел является ложным. Список вышел из строя в»,) — вот куда я хочу его добавить, поэтому я оставил его пустым в своей программе. Все остальное в моей программе работает нормально, так что не будет иметь большого значения, если решение не будет найдено, но если кто-нибудь знает, что делать, я весь внимание.

Комментарии:

1. Где вы устанавливаете flag=1 , вы можете просто сказать, что list[i-1] это наш заказ, распечатать его и разорвать цикл.

2. Кроме того, не используйте list в качестве имени переменной — оно переопределяет list встроенное

3. @rdas я попытался добавить list[i-1] , но он напечатал только самый последний упомянутый номер, а не тот, в котором список впервые вышел из строя. Кроме того, я точно не знаю, куда поместить break утверждение в цикл. Я попытался добавить его после print("True Version:",mylist) , но он продолжал говорить, что он находится вне цикла. Также я изменил все на mylist при обращении к списку номеров

4. Можете ли вы привести еще несколько примеров ввода и ожидаемого вывода? Мне непонятно, почему в вашем примере ответ должен быть с индексом 0, а не с индексом 1… и то, и другое способствует плохому сравнению, так почему же виноват первый? Например, для чего будет ожидаемое возвращаемое значение [5,1,6,7,8] ? И для чего [5,1,6,2,7,3] ?

5. Ну, иногда первый индекс может быть виноват, например, если список что-то вроде 10, 4, 8, 5, 10. Он также может иметь индекс 1, если список 1, 2, 1, 3, 5. Это происходит всякий раз, когда список перестает быть от наименьшего до наибольшего.

Ответ №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 lt; len(my_list):  if my_list[i] lt; 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()