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

Страшный калькулятор

31.05.2021, 23:14. Показов 5277. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите программу, которая принимает на вход список длин в разных единицах измерения (миллиметры, сантиметры, метры, километры) и выводит сумму его элементов, представленную в наиболее подходящих единицах измерения: так, чтобы длина получившейся строки была минимальна.
Помогите пожалуйста решить! Буду очень благодарен!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.05.2021, 23:14
Ответы с готовыми решениями:

Страшный запрос
Здравствуйте. Подскажите или сделайте) Как эти 2 запроса сделать в один $sb = $GLOBALS->GetAll('SELECT...

Страшный экран
Строил сайт и сам не заметил, как получил вот такое, при переходе с второстепенной страницы на главную (был в пункте правого меню и потом...

Страшный и ужасный decimal
Многоуважаемый Ол (All). Подскажите пожалуйста что это за чо? > var d1 = decimal.Parse("1,000"); > var d2 =...

30
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
03.06.2021, 00:10
Студворк — интернет-сервис помощи студентам
Очередная правка:
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from fractions import Fraction
text='100000мм'
txt_list=text.split()
units=('мм','см', 'км', 'м')
power=list(map(Fraction, ['1/1000', '1/100', '1000', '1']))
distance=Fraction(0)
for word in txt_list:
    for idx, unit in enumerate(units):
        if unit==word[-len(unit):]:
            distance+=(power[idx]*Fraction(word[:-len(unit)])) # convert to meters
            break
distance_txt=[]
for i in range(len(units)):
    distance_txt.append(f'{float(distance/power[i]):g}{units[i]}')
print(min(distance_txt, key=len))
1
710 / 356 / 104
Регистрация: 09.02.2018
Сообщений: 805
03.06.2021, 00:56
Цитата Сообщение от u235 Посмотреть сообщение
Очередная правка:
А ты упорный человек . Добрался до отметки в 56 пройденных тестов.
Кликните здесь для просмотра всего текста
Code
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
......................FF........
................FF.F..F...F....
================================
================================
FAIL: _22 (__main__.CalcTests)
 
Вход: 1000001мм
Выход: 1км
Несовпадение: 1км != 1000001мм.
================================
================================
FAIL: _23 (__main__.CalcTests)
 
Вход: 1000010мм
Выход: 100001см
Строка "100001см" по длине больше, чем строка "1км 1см".
================================
================================
FAIL: _48 (__main__.CalcTests)
 
Вход: 1000011мм
Выход: 100001см
Несовпадение: 100001см != 1000011мм.
================================
================================
FAIL: _49 (__main__.CalcTests)
 
Вход: 1000101мм
Выход: 1000.1м
Несовпадение: 1000.1м != 1000101мм.
================================
================================
FAIL: _51 (__main__.CalcTests)
 
Вход: 1001001мм
Выход: 1001м
Несовпадение: 1001м != 1001001мм.
================================
================================
FAIL: _54 (__main__.CalcTests)
 
Вход: 1010001мм
Выход: 1010м
Несовпадение: 1010м != 1010001мм.
================================
================================
FAIL: _58 (__main__.CalcTests)
 
Вход: 1100001мм
Выход: 1.1км
Несовпадение: 1.1км != 1100001мм.
--------------------------------
--------------------------------
 
Ran 63 tests in 0.024s
 
FAILED (failures=7)
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
03.06.2021, 06:16
Лучший ответ Сообщение было отмечено ArtAndreev21 как решение

Решение

КулХацкеръ,
Python
1
2
3
4
5
6
for i in range(len(units)):
    res = distance/power[i]
    if int(res) == res:
        res = int(res)
    distance_txt.append(str(res)+unit)
print(min(distance_txt, key=len))
А вывод "1км 1мм" вместо "1000001мм" -> мне кажется спорен -> иначе в тестах верным ответом должен быть, например, "9*10^9км" или "9*10**9км" вместо "9000000000км". Или в условиях должна быть прописана возможность применения нескольких единиц измерения в ответе; или должны быть примеры, где это показывется
3
1 / 1 / 0
Регистрация: 29.08.2020
Сообщений: 57
03.06.2021, 13:53  [ТС]
спасибо

Добавлено через 3 минуты
А что такое unit? это то что на ввод даётся?
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
03.06.2021, 14:03
ArtAndreev21,
unit - единица измерения длины
text - вводные данные ("то, что на ввод даётся")

Добавлено через 1 минуту
"Расшифровка" в начале кода u235
0
1 / 1 / 0
Регистрация: 29.08.2020
Сообщений: 57
03.06.2021, 14:05  [ТС]
точно, понял. Благодарю
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
01.07.2021, 18:50
Программа ошибается при вводе 1м 10см
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
01.07.2021, 19:29
JessyPinkman,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from fractions import Fraction
text='1м 10см'
txt_list=text.split()
units=('мм','см', 'км', 'м')
power=list(map(Fraction, ['1/1000', '1/100', '1000', '1']))
distance=Fraction(0)
for word in txt_list:
    for idx, unit in enumerate(units):
        if unit==word[-len(unit):]:
            distance+=(power[idx]*Fraction(word[:-len(unit)])) # convert to meters
            break
distance_txt=[]
 
for i in range(len(units)):
    res = distance/power[i]
    if int(res) == res:
        res = int(res)
    distance_txt.append(str(res)+units[i])
print(min(distance_txt, key=len))
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
01.07.2021, 19:32
она и ошибается
0
Эксперт Python
8850 / 4501 / 1864
Регистрация: 27.03.2020
Сообщений: 7,316
01.07.2021, 21:23
JessyPinkman, выводит 110см
А должно?
0
0 / 0 / 0
Регистрация: 10.05.2020
Сообщений: 57
01.07.2021, 22:06
Должно 1.1м
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.07.2021, 22:06
Помогаю со студенческими работами здесь

Страшный размер DB.mdb
Всем привет, проблема в следующем, некоторое время работал с базой через приложение (C++ Builder 6) . Как вскоре появилась ошибка...

Самый страшный вирь
Здравствуйте. Подхватил вирь под названием Trojan.Win32.Agent.aec. Перестали запускаться .ехе файлы. При попытке запуска выскакивает...

Страшный звук при включении.
вчера поставил новый проц(e8400 был e7200) разогнал до 415х9 на 1.4в(e7200 работал так-же, но на 1.45в) переставил комп в корпус(до этого...

Самый страшный фильм ужасов!
Может кто-то знает нормальный фильм ужасов?

Импликация - страшный суд, ад и погибель
Читаю Шилтда. Глава Операторы. Помогите разобрать как и в какой последовательности работает следующий код : using System; ...


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

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru