Не работает программа с массивом на python
Необходимо по заданию решить следующую задачу: Дан массив A размера N.
- Вывести вначале его элементы с нечетными номерами в порядке возрастания номеров.
- Вывести элементы с четными номерами в порядке убывания номеров.
Написал следующую программу, но она выдает ошибки.
import math
N = int (input ("Введите число N: "))
a = []
a = [0] * N
for i in range(len(a)):
i = str(i + 1)
print("Введите элемент массива " + i + ": ", end = " ")
i = int(i)
i = i - 1
a[i] = int(input())
print("Массив: " + str(a))
while i<=N:
print(str(a[i]))
i=i+2
N=N/2
for i in range(1,N,-1):
print(str(a[i*2]))
Ответы (3 шт):
Во первых делить целые числа надо через // чтобы получались целые числа иначе будут числа с плавающей запятой и полезут ошибки, т.е. вместо
N=N/2
надо
N = N // 2
Во вторых не лучше ли получать элементы массива каким-нибудь более удобным способом? Например в одну строку:
arr = list(map(int, input().split()))
тогда не нужно будет устраивать такой изврат как развели вы
Ну и в третьих задачку можно попробовать сделать в пару строчек:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
res = list(map(lambda j: j[1], filter(lambda i: i[0] % 2 != 0, enumerate(arr)))) + list(map(lambda j: j[1], filter(lambda i: i[0] % 2 == 0, enumerate(arr))))[::-1]
print(*res)
Если нумерация начинается с 1
N = int (input ("Введите число N: "))
a = []
for i in range(N) :
print("Введите элемент массива " + str(i + 1) + ": ", end = " ")
a.append(int(input()))
print("Массив: " + str(a))
for i in range(N) :
if a[i] % 2 :
print(a[i])
for i in range(N - 1, -1, -1) :
if not a[i] % 2 :
print(a[i])
В моем коде номера это индексы
Получаем что нечетные элементы по порядку с начала списка, четные с конца списка
В питоне не принято использовать адресную арифметику без необходимости. Есть более изящные методы:
n = int(input("Введите число N: "))
a = [int(input("Введите элемент массива {}: ".format(i + 1)))
for i in range(n)]
print("Массив:", a)
# items on odd indices ascending
for v in a[1::2]:
print(v)
# items on even indices descending
for v in reversed(a[::2]):
print(v)