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

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

31.05.2021, 23:14. Показов 5471. Ответов 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
5526 / 2879 / 572
Регистрация: 07.11.2019
Сообщений: 4,777
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
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
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
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
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
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
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
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
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
Ответ Создать тему
Новые блоги и статьи
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
сукцессия 44. Решил подать на припринт в межународные сервисы препринтов. Но нужно одобрение от ученых
anaschu 25.07.2026
Английский вариант. Пока кто то не одобрит мою личность, мне не получиться это опубликовать на препринте. Но заявку на публикацию статьи я сегодня подам.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru