Найти - Пользователи
Полная версия: Список питон, очень легкаязадача
Начало » Python для новичков » Список питон, очень легкаязадача
1
safro
Дан массив целых чисел из 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
КУДА ДЕЛИСЬ ЭЛЕМЕНТЫ???
py.user.next
  
>>> 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]
>>>
Rodegast
 >>> 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]
py.user.next
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.
...
safro
Rodegast
не работает, если список заполняется с клавы в строчку
safro
py.user.next
унарный минус тоже пробовал, но он не работает при заполнении списка с клавиатуры в строчку
Думаю дело в различии типов данных, с которыми производятся операции, т. к. алгоритм работает при уже заполненном списке

Перешел с другого языка, поэтому могу довольно глупые вещи делать, буду исправляться : )
py.user.next
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. А если ты можешь их умножить так, то получится вообще другой результат.

Оттуда и путаница. Ты думаешь, что операции непоколебимы, в то время как, на самом деле, они довольно таки вариативные и у них могут быть какие-то свои особенности.
safro
py.user.next
Да, видимо нахрапом не получится, придется основательно с самых низов учить
Спасибо буду пытаться это сделать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB