Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
3 / 3 / 1
Регистрация: 18.02.2023
Сообщений: 31

Выведите те же числа в том же порядке, взяв в скобки минимальное

07.06.2023, 14:59. Показов 1800. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На обучение в Орден Джедаев брали совсем юных, чувствительных к Силе, детей. Но бывали и исключения. На данном этапе обучения их называли "юнлингами". С группой юнлингов занимается один джедай, но когда они переходят в ранг падаванов, то к ним прикрепляется, индивидуально, один мастер-джедай.
На тренировках по прыжкам в высоту, для оценивания подготовки, выбираются пять лучших юнлингов для оценки. Каждый юнлинг ставит оценку от 1 до 20, после чего одна наименьшая и одна наибольшая оценки отбрасываются.
Вам нужно написать программу, которая будет демонстрировать результаты прыжка.

Она должна выводить пять оценок, которые поставили юнлинги, не меняя их порядка, а затем их сумму, и при этом брать в скобки те оценки, которые не учитываются при расчете суммы.

Входные данные
На вход подается 5 натуральных чисел от 1 до 20, разделенных пробелом.

Выходные данные
Выведите те же числа в том же порядке, взяв в скобки минимальное (а если их несколько – самое левое из них) и максимальное (а если их несколько – самое правое из них) число, а также сумму всех чисел, не взятых в скобки. Все числа (включая сумму) должны быть напечатаны в одной строке и разделены одним пробелом (внутри скобок пробелов быть не должно). Перед суммой должен стоять знак равенства, отделенный слева и справа одним пробелом. Порядок оценок должен быть такой же, как и во входных данных.

Примеры
№ Входные данные Выходные данные
1 2 3 4 5 (1) 2 3 4 (5) = 9
Запрещенные операторы: max; min; index; sort
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.06.2023, 14:59
Ответы с готовыми решениями:

Выведите числа в порядке возрастания, справа от каждого числа выведите сумму его нечётных делителей
Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы: — символ «?» означает ровно одну...

Выведите в n строках номера предметов в том порядке, в котором их следует сдавать
Сессия Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или input.txt Вывод стандартный вывод или...

Выведите в n строках номера предметов в том порядке, в котором их следует сдавать
Сессия Ограничение времени:1 секунда Ограничение памяти:64Mb Ввод:стандартный ввод или input.txt Вывод:стандартный вывод или...

14
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
07.06.2023, 16:06
Цитата Сообщение от cloun_zxc Посмотреть сообщение
Запрещенные операторы: max; min; index; sort
почему запрещены?
0
1 / 1 / 0
Регистрация: 22.03.2019
Сообщений: 4
07.06.2023, 18:16
Ниже код для любого числа оценок, единственное не учитывает правильность ввода (если символы или пустой массив на входе).

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
numbers = input().split()
numbers = [int(x) for x in numbers]
 
num_min = numbers[0]
ind_min = 0
for i in range(1,len(numbers)):
    if numbers[ind_min] > numbers[i]:
        ind_min = i
        
ind_max = 0
for i in range(1,len(numbers)):
    if numbers[ind_max] <= numbers[i]:
        ind_max = i
        
result = ""
 
for i in range(len(numbers)):
        result += str(numbers[i]) + " "
 
for i in range(len(numbers)):
    if i in {ind_min, ind_max}:
        result += "(" + str(numbers[i]) + ") "
    else:
        result += str(numbers[i]) + " "
      
summa = 0        
for i in range(len(numbers)):
    if i not in {ind_min, ind_max}:
        summa += numbers[i] 
 
result = result + "= " + str(summa)
 
print(result)
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2023, 19:19
Цитата Сообщение от cloun_zxc Посмотреть сообщение
Примеры
№ Входные данные Выходные данные
1 2 3 4 5 (1) 2 3 4 (5) = 9
Нормально скопипастить пример нельзя?

Добавлено через 40 секунд
Так?

Python
1
assert func('1 2 3 4 5') == '(1) 2 3 4 (5) = 9'
Добавлено через 6 минут
Функции minx/max и вывод сами допишите.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>>> lst = [1, 2, 3, 4, 5]
>>> mi = min(lst)
>>> ma = max(lst)
>>> marks = [False] * len(lst)
>>> for i, e in enumerate(lst):
...     if e == mi:
...         marks[i] = True
...         break
... 
>>> for i, e in enumerate(reversed(lst)):
...     if e == ma:
...         marks[-i - 1] = True
...         break
... 
>>> marks
[True, False, False, False, True]
Добавлено через 3 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
>>> result = []
>>> s = 0
>>> for e, mark in zip(lst, marks):
...     if mark:
...         result.append(f'({e})')
...     else:
...         result.append(f'{e}')
...         s += e
... 
>>> print(' '.join(result))
(1) 2 3 4 (5)
>>> s
9
Добавлено через 1 минуту
Цитата Сообщение от Kron-x Посмотреть сообщение
единственное не учитывает правильность ввода
И надо было
Цитата Сообщение от cloun_zxc Посмотреть сообщение
взяв в скобки […] максимальное (а если их несколько – самое правое из них) число,
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
07.06.2023, 19:20
Kron-x, вроде сказано
Цитата Сообщение от cloun_zxc Посмотреть сообщение
Она должна выводить пять оценок, которые поставили юнлинги, не меняя их порядка
Python
1
2
3
4
5
arr_s = input('Введите пять чисел от 1 до 20 в неубывающем порядке через пробел->').strip()
print('('+ arr_s[0] + ')', end='')
print(a := arr_s[1:-1], end='')
print('('+ arr_s[-1] + ') = ', end='')
print(sum(map(int, a.split())))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2023, 19:22
Цитата Сообщение от idealist Посмотреть сообщение
Введите пять чисел от 1 до 20 в неубывающем порядке через пробел-
Вот только входные данным могут быть такими:

Code
1
19 3 1 3 19
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
07.06.2023, 19:24
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
19 3 1
это разве неубывающий порядок?
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
07.06.2023, 19:26
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Вот только входные данным могут быть такими:
19 3 1 3 19
По условию
Цитата Сообщение от cloun_zxc Посмотреть сообщение
Она должна выводить пять оценок, которые поставили юнлинги, не меняя их порядка
Цитата Сообщение от cloun_zxc Посмотреть сообщение
Выведите те же числа в том же порядке
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
07.06.2023, 19:28
Где ты увидел в задании, что на вход подаются отсортированные данные?
0
Любознательный
 Аватар для YuS_2
7406 / 2256 / 360
Регистрация: 10.03.2016
Сообщений: 5,216
07.06.2023, 19:32
idealist, а кстати, да... откуда вообще взялся неубывающий порядок?
Это же совсем не эквивалент:
Цитата Сообщение от cloun_zxc Посмотреть сообщение
не меняя их порядка
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
07.06.2023, 19:35
YuS_2, а, да, я неверно понял условия, пардон.
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
07.06.2023, 21:26
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
numbers = [int(x) for x in input().split()]
 
s = sum(numbers)
ln = len(numbers)
imin = 0
imax = 0
for i in range(1, ln):
    if numbers[i] < numbers[imin]:
        imin = i
    if numbers[i] >= numbers[imax]:
        imax = i
        
res = ''
for i in range(ln):
    el = numbers[i]
    if i in {imin, imax}:
        res += f'({el}) '
    else:
        res += f'{el} '
      
s = s - (numbers[imin]+numbers[imax])        
res += f'= {str(s)}'
print(res)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
08.06.2023, 00:01
Ну, так можно:

Python
1
2
3
4
5
6
from random import randint
arr = [randint(1,4) for _ in range(5)]
i_min = [i for i in range(len(arr)) if all([arr[i] <= a for a in arr])][0]
i_max = [i for i in range(len(arr)) if all([arr[i] >= a for a in arr])][-1]
[print('(', arr[i], ')',sep='', end=' ') if i in (i_min, i_max) else print(arr[i], end=' ') for i in range(len(arr))]
print('=', sum(arr) - arr[i_min] - arr[i_max])
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
08.06.2023, 15:40
thyrex, аналогично:

взяв в скобки […] максимальное (а если их несколько – самое правое из них) число,
Добавлено через 21 секунду
минимум - первый
0
Вирусоборец
 Аватар для thyrex
14450 / 7489 / 1582
Регистрация: 06.09.2009
Сообщений: 27,133
08.06.2023, 16:01
Лучший ответ Сообщение было отмечено cloun_zxc как решение

Решение

Рыжий Лис, а что не так в работе моего варианта?

Bash
1
2
3
4
5
6
7
8
1 1 2 5 5
(1) 1 2 5 (5) = 8
 
2 1 3 5 4
2 (1) 3 (5) 4 = 9
 
5 5 2 1 1
5 (5) 2 (1) 1 = 8
Да и вообще, количество оценок ограничено пятью, поэтому вообще можно убрать лишнюю переменную
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
numbers = [int(x) for x in input().split()]
 
s = sum(numbers)
imin = 0
imax = 0
for i in range(1, 5):
    if numbers[i] < numbers[imin]:
        imin = i
    if numbers[i] >= numbers[imax]:
        imax = i
        
res = ''
for i in range(5):
    el = numbers[i]
    if i in {imin, imax}:
        res += f'({el}) '
    else:
        res += f'{el} '
      
s = s - (numbers[imin]+numbers[imax])        
res += f'= {str(s)}'
print(res)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.06.2023, 16:01
Помогаю со студенческими работами здесь

Выведите в n строках номера предметов в том порядке, в котором их следует сдавать
Сессия Ограничение времени:1 секунда Ограничение памяти:64Mb Ввод:стандартный ввод или input.txt Вывод:стандартный вывод или...

Найдите и выведите все делители числа n в порядке возрастания, а затем в порядке убывания
Дано целое число n. Найдите и выведите все делители числа n в порядке возрастания, а затем в порядке убывания. Входные данные: 60 ...

Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае
Нужна помощь по scheme, не могу понять как оно должно выглядеть (define a (read)) (define b (read)) (define (Func a b) (if...

Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае.
пробовала сделать ,но выдаёт ошибки я не понимаю,что он требует ТЕКСТ ЗАДАЧИ. Даны два целых числа A и В (каждое в отдельной...

Выведите все числа от A до B включительно, в порядке возрастания, если A < B, или в порядке убывания в противном случае
Нужна помощь по scheme, не могу понять как оно должно выглядеть (define a (read)) (define b (read)) (define (Func a b) (if (...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru