Определите, является ли список восходящим, нисходящим или ни одного без встроенных - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь решить проблему

Учитывая список n терминов, проверьте, находятся ли элементы в порядке возрастания, убывания или нет, без использования функций def и inbuilt.

Пример ввода:

list1 = [1,2,3,4] # Output -> In list1 elements are arranged in ascending order.
list1 = [4,3,2,1] # Output -> In list1 elements are arranged in descending order.
list1 = [1,3,2,4] # Output -> In list1 the elements are not arranged in any order.

Я мог бы легко сделать это, используя list1.sort() и list1.sort(reverse=True)

То, что я написал ...

list1 = [1,2,3,4]
if list1 == list1.sort():
     print('ascending')
elif list1 == list1.sort(reverse=True):
     print('descending')
else:
    print('not in order')

Есть ли лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 29 октября 2019

Вот возможное решение:

ascending = True
descending = True
prev_index = 0
for index in range(1, len(list1)):
    ascending = ascending and list1[index] >= list1[prev_index]
    descending = descending and list1[index] <= list1[prev_index]
    prev_index = index

if ascending:
    print("Elements are arranged in ascending order")
elif descending:
    print("Elements are arranged in descending order")
else:
    print("Elements are not arranged in any order")

Когда все элементы списка равны (например, list1 = [1,1,1]), как по возрастанию, так и по убыванию равны True: в моем решении списоксчитается восходящим.

0 голосов
/ 29 октября 2019

Вы можете использовать цикл, например, для (условий), и сравнить, если первый элемент меньше следующего и т. Д.

Вот псевдокод:

for(conditions)

if(element < next element)

keep going

if not then break and display
that the array is not arranged

Примечание: Это будет для возрастающего порядка, для нисходящего порядка будет аналогичным, просто изменив if (условие)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...