На python.в массиве из 10 вещественных чисел отсортировать в порядке убывания все отрицательные элементы. положительные и нулевые элементы оставить на своих местах.
ответ: Попробуй это, надеюсь, правильно понял задание:
def task():
numbers = input("Введите массив чисел через пробел: ")
array = list(numbers.split())
negativelist = []
loopint = 0
for i in range(0, len(array)):
array[i] = int(array[i])
while loopint < len(array):
if array[loopint] < 0:
negativelist.append(array[loopint])
else:
pass
loopint = loopint + 1
negativelist.sort()
final_list = negativelist + array
result = []
for i in final_list:
if i not in result:
result.append(i)
print(result)
Объяснение:
1)Объявляем функцию task() без параметров;
2)Ждем ввода чисел с Превращаем введенные числа в массив с предварительно разбив их по пробелам с Так как нужно отсортировать только негативные элементы, нам нужен будет отдельный массив негативных чисел, создаем пустой лист negativelist и переменную для loop'a loopint;
5)Превращаем все введенные элементы в числа с и функции int();
6)Производим итерацию через массив чисел и, если число меньше 0, добавляем его в лист отрицательных чисел negativelist с функции append(), если же число не отрицательное, то ничего не делаем (pass). Не забываем про луп-переменную.
7)Теперь когда у нас есть отдельный список отрицательных чисел, сортируем его с Объявляем новый список, где отрицательный массив добавляется к введенному пользователем массиву так, чтобы отрицательные числа были слева. Теперь у нас есть отсортированные отрицательные числа слева, но они также остались и на своих первоначальных местах изначально введенного массива, нужно избавиться от них;
9)Сравниваем два массива и, если нет дупликатов, добавляем их в конечный массив result, при этом не трогая неотрицательные числа.
Важно: эта программа будет работать правильно, если все введенные числа будут уникальны, то есть не будут повторяться. Если в массиве будут повторяющиеся числа, то в конечном результате появится только одно такое число. Дальше уж сам поколдуй как-нибудь.
Решается обычным перебором 0 - нет 01 возможно Б, разделяем на 2 варианта 011 (Д) или Б 1 Д 0 | Б 10 (Г) Д 01(Б) | Б Г 1 | Б 101 (101 не существует, значит отсекаем этот вариант) ДБ 0 | Д 010 (также убираем) | БГ 10(Г) ДБ 00 | БГГ 0 | БГ 100(В) ДБ 000(А) |БГГ 00 | БГВ 0 ДБА 1 | БГГ 001(убираем) | БГВ 01(Б) ДБА 11(убираем) | БГВБ 1 | БГВ 011(Д) БГВБ 10(Г) | БГВД 0 осталось 2 цифры БГВБГ 00( убираем) | БГВБ 1000(убираем) | БГВД 000(А) следователь у нас остался только 1 вариант. это БГВДА Лучше и нагляднее все это расписать деревом, но тут как вам удобнее
По хорошему, вам достаточно загуглить слова "логика преобразования". Как мы знаем, в логических выражениях '+' - это '∨', а '*' - это '∧' (строго говоря это не всегда так, и логика множеств и функций в этом не совпадают, но тут нам это неважно). Я буду писать ∨ и ∧ т.к. тут это правильнее и стоит сразу привыкать к общепринятым обозначениям. Рассмотрим внимательнее это выражение (a ∨ (a ∧ b)) ∧ (¬(a ∧ b) ∨ b) Воспользуемся правилом Де-Моргана, которое гласит: ¬( a ∧ b) = ¬a ∨ ¬b подставим (a ∨ (a ∧ b)) ∧ (¬a ∨ ¬b ∨ b) Дальше отметим, что ¬b ∨ b = 1 (a ∨ (a ∧ b)) ∧ (¬a ∨ 1) Так же знаем, что A ∨ 1 = 1, а A ∧ 1 = A, A ∨ A = A (a ∨ (a ∧ b)) ∧ 1 = (a ∨ (a ∧ b)) Следовательно наше выражение пришло к виду a ∨ (a ∧ b) , также, используя дистрибутивность можно написать это выражение как a ∨ (a ∧ b) = ( a ∨ a) ∧ ( a ∨ b) = a ∧ (a ∨ b)
ответ: Попробуй это, надеюсь, правильно понял задание:
def task():
numbers = input("Введите массив чисел через пробел: ")
array = list(numbers.split())
negativelist = []
loopint = 0
for i in range(0, len(array)):
array[i] = int(array[i])
while loopint < len(array):
if array[loopint] < 0:
negativelist.append(array[loopint])
else:
pass
loopint = loopint + 1
negativelist.sort()
final_list = negativelist + array
result = []
for i in final_list:
if i not in result:
result.append(i)
print(result)
Объяснение:
1)Объявляем функцию task() без параметров;
2)Ждем ввода чисел с Превращаем введенные числа в массив с предварительно разбив их по пробелам с Так как нужно отсортировать только негативные элементы, нам нужен будет отдельный массив негативных чисел, создаем пустой лист negativelist и переменную для loop'a loopint;
5)Превращаем все введенные элементы в числа с и функции int();
6)Производим итерацию через массив чисел и, если число меньше 0, добавляем его в лист отрицательных чисел negativelist с функции append(), если же число не отрицательное, то ничего не делаем (pass). Не забываем про луп-переменную.
7)Теперь когда у нас есть отдельный список отрицательных чисел, сортируем его с Объявляем новый список, где отрицательный массив добавляется к введенному пользователем массиву так, чтобы отрицательные числа были слева. Теперь у нас есть отсортированные отрицательные числа слева, но они также остались и на своих первоначальных местах изначально введенного массива, нужно избавиться от них;
9)Сравниваем два массива и, если нет дупликатов, добавляем их в конечный массив result, при этом не трогая неотрицательные числа.
Важно: эта программа будет работать правильно, если все введенные числа будут уникальны, то есть не будут повторяться. Если в массиве будут повторяющиеся числа, то в конечном результате появится только одно такое число. Дальше уж сам поколдуй как-нибудь.