Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 9, 2020 15:22:42

safro
Зарегистрирован: 2020-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

Дан массив целых чисел из N элементов. Необходимо заменить элементы с k1-го по k2-й включительно на противоположные по знаку.
Формат входных данных
В первой строке входного файла записано число N (1≤N≤1000). Во второй строке через пробел записаны N целых чисел, по модулю не превосходящих 100000, — элементы массива. Третья строка состоит из двух чисел: k1 и k2 (1≤k1≤k2≤N).

Формат выходных данных
Выведите в выходной файл элементы массива после требуемой замены.

Примеры:
Вход
5
1 2 -3 0 5
2 4
Выход
1 -2 3 0 5


n = int(input())
a =
total =
k1, k2 = map(int,input().split())
for i in range(k1 - 1, k2):
a = a*(-1)
total =
print(' '.join(total))

Вывод:
1 5
КУДА ДЕЛИСЬ ЭЛЕМЕНТЫ???

Офлайн

#2 Ноя. 10, 2020 00:37:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

  
>>> lst = [1, 2, 3, 4, 5]
>>> 
>>> k1, k2 = 2, 4
>>> 
>>> for i in range(k1 - 1, k2):
...     lst[i] = -lst[i]
... 
>>> lst
[1, -2, -3, -4, 5]
>>>



Онлайн

#3 Ноя. 10, 2020 14:53:11

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2756
Репутация: +  184  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

 >>> s = [1, 2, -3, 0, 5]
>>> n, k = 1, 3
>>> [ x*-1 if i  >= n and i <= k else x * 1 for i, x in enumerate(s) ]
[1, -2, 3, 0, 5]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Ноя. 10, 2020 15:04:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

Rodegast
  
x*-1
Повёлся на этот бред автора? Есть в питоне унарный минус.
  
-x

Rodegast
  
i  >= n and i <= k
Вот так это в питоне делается
  
n <= i <= k

Да и задание говорит
safro
Третья строка состоит из двух чисел: k1 и k2 (1≤k1≤k2≤N).
То есть k1 не может быть меньше единицы.

Поэтому, если и делать enumerate, то с аргументом
  
>>> list(enumerate('abcdef', 1))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e'), (6, 'f')]
>>>

И в целом
  
>>> import this
The Zen of Python, by Tim Peters
 
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
...



Отредактировано py.user.next (Ноя. 10, 2020 15:07:26)

Онлайн

#5 Ноя. 10, 2020 18:38:57

safro
Зарегистрирован: 2020-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

Rodegast
не работает, если список заполняется с клавы в строчку

Офлайн

#6 Ноя. 10, 2020 18:42:01

safro
Зарегистрирован: 2020-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

py.user.next
унарный минус тоже пробовал, но он не работает при заполнении списка с клавиатуры в строчку
Думаю дело в различии типов данных, с которыми производятся операции, т. к. алгоритм работает при уже заполненном списке

Перешел с другого языка, поэтому могу довольно глупые вещи делать, буду исправляться : )

Отредактировано safro (Ноя. 10, 2020 19:01:48)

Офлайн

#7 Ноя. 11, 2020 03:51:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9882
Репутация: +  853  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

safro
но он не работает при заполнении списка с клавиатуры в строчку
Вводить надо строку. А вот когда ты ввёл, ты строку разбиваешь на куски, а потом эти куски, которые тоже являются строками, преобразуешь в целые или вещественные числа.
  
>>> '123' + 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> int('123') + 1
124
>>> float('123') + 1
124.0
>>>
Естественно, что со строками можно выполнять только операции для строк, а чтобы числовые операции выполнять, надо выполнять их с числами. И операция унарного минуса - это числовая операция.

safro
Перешел с другого языка, поэтому могу довольно глупые вещи делать
Есть языки, которые сами преобразуют неявно одни типы к другим, но они тоже именно преобразуют типы, просто делают это в скрытом виде.

К строке тоже можно применить и операцию сложения и операцию умножения, но это “сложение” и это “умножение” является строчным и никакого отношения к числовому “сложению” и числовому “умножению” не имеет.

В математике же может быть вообще много сложений и умножений. Например, у целых чисел одно сложение и одно умножение (хотя это два умножения - левое и правое), а у векторов - одно сложение и два умножения: скалярное уножение и векторное умножение. А у матриц вообще умножение такое, что менять множители местами нельзя, ты можешь умножить матрицу A на матрицу B, но не можешь умножить ту же матрицу B на ту же матрицу A. А если ты можешь их умножить так, то получится вообще другой результат.

Оттуда и путаница. Ты думаешь, что операции непоколебимы, в то время как, на самом деле, они довольно таки вариативные и у них могут быть какие-то свои особенности.



Онлайн

#8 Ноя. 11, 2020 15:34:34

safro
Зарегистрирован: 2020-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Список питон, очень легкаязадача

py.user.next
Да, видимо нахрапом не получится, придется основательно с самых низов учить
Спасибо буду пытаться это сделать

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version