Вот подсказка: на первой строке отобразится первый, последний и средний элементы списка, разделенные символом.
Я пытаюсь получить это выяснено в течение нескольких часов, но не знаю, правильный процесс, чтобы вернуть середину массива. Вот мой код:
primary = []
length = 0
i = ("MORE")
while i != "NOMORE":
i = str(input("?"))
print(i)
if i == "NOMORE":
break
primary.append(i)
length = length + 1
mid = (length/2)
print(primary[0]," , ", primary[-1]," , ",primary.pop([mid]))
Код работает, чтобы получить правильные входы из программы, но поскольку списки будут переменной длины, я предполагаю, что будет использоваться какая-то форма цикла. Первичная.pop([mid]) была моей плохой попыткой получить медианную печать. Я знаю, что середина не будет напечатана, так как это неправильный тип переменной, но как я могу это заменить?
Любая помощь приветствуется.
Вы необязательно вызываете метод pop()
на primary
с [mid]
когда вам нужно просто индексировать primary
с mid
. Вы также должны использовать оператор //
вместо /
для получения целочисленного значения для индекса. Поскольку индекс основан на 0, средняя точка должна быть (length - 1)//2
вместо:
primary = []
length = 0
i = ("MORE")
while i != "NOMORE":
i = str(input("?"))
print(i)
if i == "NOMORE":
break
primary.append(i)
length = length + 1
mid = (length - 1) // 2
print(primary[0]," , ", primary[-1]," , ",primary[mid])
(length - 2) // 2
хотя это правильно. Попробуйте ввести 1
, 2
, 3
и NOMORE
. Ожидаемый результат должен быть 1 , 3 , 2
, но при (length - 2) // 2
выход равен 1 , 3 , 1
.
length/2
часто возвращает float. Вы должны всегда использовать//
для целочисленного деления, если вы собираетесь использовать результат для индексации списка