Тема: Алгоритм до задачі

#введення списку
n=int(input('Введіть кількість елементів списку n ():'))
print('Введіть елементи списку через Enter')
a=[]
for i in range(n):
 x=int(input())
 a+=[x]

Чи правильно роблю?

2

Re: Алгоритм до задачі

0. Python потребує відступів; без відступів код некоректний.
1. На цьому форумі рекомендується використовувати тег code (кнопка <>) для розміщення коду в подальшому.
2. Код цілком придатний для заявленої мети (якщо, звісно, елементи списку - цілі числа). Єдине що

a += [x]

трохи краще записується як

a.append(x)

Ваш варіант створює додатковий список і одразу його викидає. Але то дрібниця.

Подякували: leofun01, Jarko, P.Y., ITrobot4

3

Re: Алгоритм до задачі

1. Тут буде ValueError:

n=int(input('Введіть кількість елементів списку n ():'))

Функція int() може конвертувати в число тільки рядок, в якому є тільки число.

2. Тут буде ValueError:

for i in range(n):

В range() потрібно передавати число.

3. Навіщо цей print?

print('Введіть елементи списку через Enter')

4. Краще передавати в цикл сам рядок, а не генератор:

#введення списку
n=input('Введіть кількість елементів списку n ():')
a=[]
for i in n:
 a.append(int(x))

Але цей варіант видасть помилку на розділювачі, тому...
5. Найкращий спосіб:

#введення списку
n=input('Введіть кількість елементів списку n ():')
a = n.split()

На пітоні майже все можна зробити кількома рядками коду.

4

Re: Алгоритм до задачі

1. Не буде, якщо ввести щось, що може бути перетворене на число, очевидно ж.
2. Не буде, тому що в n буде число. Якщо в п.1 буде ValueError, то цей рядок просто не буде виконаним.
3. Щоб вивести відповідний текст, очевидно.
4. В цикл не передається ніякого генератора, ви про що взагалі?
5. Що саме ви хочете ділити split-ом, якщо введуть кількість, себто одне число?

Подякували: ITrobot1

5

Re: Алгоритм до задачі

koala написав:

1. Не буде, якщо ввести щось, що може бути перетворене на число, очевидно ж.
2. Не буде, тому що в n буде число. Якщо в п.1 буде ValueError, то цей рядок просто не буде виконаним.
3. Щоб вивести відповідний текст, очевидно.
4. В цикл не передається ніякого генератора, ви про що взагалі?
5. Що саме ви хочете ділити split-ом, якщо введуть кількість, себто одне число?

Дякую, я дуже неуважний.

6

Re: Алгоритм до задачі

koala написав:

1. Не буде, якщо ввести щось, що може бути перетворене на число, очевидно ж.
2. Не буде, тому що в n буде число. Якщо в п.1 буде ValueError, то цей рядок просто не буде виконаним.
3. Щоб вивести відповідний текст, очевидно.
4. В цикл не передається ніякого генератора, ви про що взагалі?
5. Що саме ви хочете ділити split-ом, якщо введуть кількість, себто одне число?

Дякую, я досі думав, що range() - це генератор. :D

7

Re: Алгоритм до задачі

ITrobot написав:

Дякую, я досі думав, що range() - це генератор. :D

А... тоді я неправильно вас зрозумів. Просто n - це число.

Подякували: ITrobot1

8

Re: Алгоритм до задачі

Вибачте за мою неуважність. Я згоден з koala, краще використовувати append(), якщо необхідно вводити саме через Enter.
Але на мою думку, зручніше все ж таки через пробіл. І код коротший:

a = input("Введіть елементи списку через пробіл: ").split()
a = list(map(int, a))

Або в  один рядок:

a = list(map(int, input("Введіть елементи списку через пробіл: ").split()))