#python
#python
Вопрос:
Когда я запускаю этот код, он ничего не печатает? Я пытался инвертировать значение больше, чем меньше, но это не помогает.
def is_sorted(numbers):
''' Return whether or not the list of numbers is sorted '''
for i in numbers:
if numbers[i] < numbers[i 1]:
print('True')
else:
print('False')
Комментарии:
1. Все, что делает этот код, это определяет функцию — почему вы ожидаете, что она что-нибудь напечатает? На самом деле вам нужно было бы вызвать эту функцию, передав некоторый список чисел в качестве параметра, чтобы что-нибудь произошло.
2. Обе проблемы с этим кодом являются давними дубликатами. Поскольку другие уже объяснили обе проблемы, я просто верю, что ваши проблемы решены, и проголосую за удаление этого сообщения.
Ответ №1:
for i in numbers
в данном случае i
это само число, а не индекс каждого числа. Это было for i in range(len(numbers))
бы, хотя тогда [i 1]
выходило бы за пределы последней итерации.
В качестве альтернативы я бы упростил эту функцию для сравнения каждого элемента со следующим элементом, сжимая фрагмент списка с другим фрагментом, смещенным на единицу. Если записать это как выражение генератора внутри all
этого, произойдет короткое замыкание при попадании первого False
def is_sorted(numbers):
return all(i <= j for i, j in zip(numbers, numbers[1::]))
Например
>>> is_sorted([1,3,5,7])
True
>>> is_sorted([1,6,2,7,3])
False
Ответ №2:
Что-то вроде этого должно работать:
def is_sorted(numbers):
isSorted = True
for i in numbers:
try:
if i > numbers[numbers.index(i) 1]:
isSorted = False
except:
pass
return isSorted
print(is_sorted([1,2],3,9,3))
Вы должны добавить переменную, isSorted
, потому что if i > next number
, она будет печатать False
, но if i < next number
, она будет печатать True
. Вам нужно try
и except
, потому что, если была ошибка, если она была на последнем номере, она была бы проигнорирована. Вам также необходимо изменить i > numbers[i 1]
на i > numbers[numbers.index(i) 1]
, потому что для получения следующего числа нам нужно добавить 1 к индексу, а не к значению.