Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33

Мили в километры, галлоны в литры, доллары в рубли

26.03.2024, 13:55. Показов 1229. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Попалась задача: Вы отправляетесь в отпуск в Америку. У себя на родине вы привыкли все считать в рублях, километрах и литрах.

Приехав в Америку, вы запланировали недельную поездку от Нью-Йорка до Лос-Анджелеса на машине. Весь день вы будете ехать, а ночью останавливаться в отеле.

Исходые данные:

Расстояние: 2790 миль;
Стоимость аренды авто на неделю: 820 долларов;
Стоимость одной ночи в отеле (всего 6 ночей): 110 долларов;
Расход бензина: 15.8 миль на один галлон;
Стоимость одного галлона 3.89 доллара;
Курс доллара 77.4 руб.
Необходимо вычислить в рублях, сколько потребуется денег, чтобы проехать этот путь на машине.

При выводе на экран все значения округлите до двух знаков после запятой.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mile = float(2790)
rent = float(820)
cost_hotel = float(110)
gasoline = float(15.8)
cost_oil = float(3.89)
exchange_rate = float(77.4)
 
a = round(mile / gasoline, 2)
b = round(a * cost_oil, 2)
c = round(b + cost_hotel * 6 + rent, 2)
d = round(c * exchange_rate, 2)
print(a, b, c ,d) 
# 167718.06
cost = print("Количество необходимых денег на поездку:", round((mile / gasoline * cost_oil + (cost_hotel * 6) + rent) * exchange_rate,2), "рублей")
# 167718.45
Собственно встал я на том что round можно применить лишь одно конечное число и соответственно значения выходят разные в этих примерах, порылся в гугле нашел numpy чуть почитал - понял пока рановато. Так вот есть ли простой аналог round только на все введённые переменные? Или как вариант не пудрить пока себе этим мозги?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.03.2024, 13:55
Ответы с готовыми решениями:

Создать проект, позволяющий переводить рубли в доллары или доллары в рубли
Создать проект, позволяющий переводить рубли в доллары или доллары в рубли. Курс доллара можно вводить. Расчет выполняется по нажатию на...

Написать программу - конвертер валют (доллары в рубли, рубли в доллары). Цикл while
Написать конвертер валют. Реализовать общение с пользователем через меню (спросить какой перевод ему нужен, после перевода спросить...

Галлоны в литры
В США потребление автомобильного топлива исчисляется в милях на галлон (miles-per-gallon – MPG). В то же время в Канаде этот показатель...

21
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 14:13
Цитата Сообщение от zSiDz Посмотреть сообщение
соответственно значения выходят разные
Потому что в одном случае ты округляешь результат вычислений, а в другом проводишь вычисления над уже округленными числами. Улавливаешь разницу?
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 14:15  [ТС]
Конечно улавливаю, поэтому и спрашиваю) возможно ли в одном примере на каждое арифметическое действие применять round
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 14:15
Цитата Сообщение от zSiDz Посмотреть сообщение
float(77.4)
Зачем float приводить к float?

Добавлено через 36 секунд
Цитата Сообщение от zSiDz Посмотреть сообщение
возможно ли в одном примере на каждое арифметическое действие применять round
Зачем?
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 14:20  [ТС]
Зачем float приводить к float?
это по глупости, ошибка была с type(она выводилась NoneType), все приравнял, ошибку нашел - вернуть забыл.
Зачем?
Записать все в одной строке вместо 5
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 14:22
Цитата Сообщение от zSiDz Посмотреть сообщение
Записать все в одной строке вместо 5
Зачем каждую операцию округлять?
Кликните здесь для просмотра всего текста
round(round(round(a*b)/c)+d)
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 14:27  [ТС]
я так понял смысл этой задачи, разве не так написано?
Цитата Сообщение от zSiDz Посмотреть сообщение
При выводе на экран все значения округлите до двух знаков после запятой.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 14:29
Цитата Сообщение от zSiDz Посмотреть сообщение
Необходимо вычислить в рублях, сколько потребуется денег, чтобы проехать этот путь на машине.
Мне видится тут одно значение.
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 14:58  [ТС]
так в том то и дело что значения выходят разные, которое из них верное? Спасибо подсказал как несколько round можно применить, я пробовал так :
Python
1
e = round(((a*b, 2)/c, 2)+d, 2)
он мне пытался словарь создать и ошибку выдавал. В общем все вроде понятно, еще раз спасибо.

Добавлено через 12 минут
что то не так:

Python
1
2
3
cost = print("Количество необходимых денег на поездку:", round(round(round(round(round((mile / gasoline, 2) * cost_oil, 2) + (cost_hotel * 6, 2)) + rent,2)) * exchange_rate,2), "рублей")
                                                                                       ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
TypeError: can't multiply sequence by non-int of type 'float'
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
26.03.2024, 15:08
Цитата Сообщение от zSiDz Посмотреть сообщение
Записать все в одной строке вместо 5
ну так она просто длинная будет, что хорошего?
ошибка в сообщении 9 возникает при попытке умножить последовательность (например, строку или список) на число с плавающей запятой
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 15:13  [ТС]
Это скорее для общего развития, а как тогда используя round округлять каждое действие до сотых при этом не создавая список?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 15:15
Напиши свой класс-наследник от float и там округляй результаты любых действий. Профит
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 15:17  [ТС]
если попробовать так:

Python
1
2
cost = print("Количество необходимых денег на поездку:", round(round(round(round(round((mile / gasoline * cost_oil), 2) + (cost_hotel * 6), 2) + rent),2) * exchange_rate,3), "рублей")
#Количество необходимых денег на поездку: 167725.8 рублей
то он третье число выдает и округляет до десятых
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
26.03.2024, 15:18
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 15:19  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Напиши свой класс-наследник от float и там округляй результаты любых действий. Профит
через чур сложно для меня)
0
1712 / 579 / 76
Регистрация: 10.04.2009
Сообщений: 9,330
26.03.2024, 15:21
если речь идёт про рубли то не понятно почему не округлить только один раз - в конце?
0
0 / 0 / 0
Регистрация: 13.03.2024
Сообщений: 33
26.03.2024, 15:27  [ТС]
в чем разница этого:

Python
1
round(round(round(round(round((mile / gasoline * cost_oil), 2) + (cost_hotel * 6), 2) + rent),2) * exchange_rate, 2)
с этим:

Python
1
2
3
4
a = round(mile / gasoline, 2)
b = round(a * cost_oil, 2)
c = round(b + cost_hotel * 6 + rent, 2)
d = round(c * exchange_rate, 2)
почему итог то разный???

Блин я либо тупой(что скорее всего) или мозги уже не соображают

Добавлено через 2 минуты
Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
если речь идёт про рубли то не понятно почему не округлить только один раз - в конце?
я не в задаче хочу разобраться))) правильный ответ думаю этот:

Python
1
2
cost = print("Количество необходимых денег на поездку:", round((mile / gasoline * cost_oil + (cost_hotel * 6) + rent) * exchange_rate,2), "рублей")
# 167718.45
round не понимаю как он округляет...
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
26.03.2024, 16:03
zSiDz, ну, округление нужно только когда выводишь итог вычислений на экран, так как в результате вычислений бывает гораздо больше цифр после запятой, чем реально нужно. Округление в процессе вычислений практического смысла не имеет.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
27.03.2024, 16:33
Лучший ответ Сообщение было отмечено Red white socks как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mile = 2790.0
rent = 820.0
cost_hotel = 110.0
gasoline = 15.8
cost_oil = 3.89
exchange_rate = 77.4
 
a = mile / gasoline
b = a * cost_oil
c = b + cost_hotel * 6 + rent
d = c * exchange_rate
print(f'{a:.2f} {b:.2f} {c:.2f} {d:.2f}')
 
cost = (mile / gasoline * cost_oil + (cost_hotel * 6) + rent) * exchange_rate
print(f'Количество необходимых денег на поездку: {cost:.2f} рублей')
1
Эксперт Python
 Аватар для Red white socks
4523 / 1899 / 336
Регистрация: 18.01.2021
Сообщений: 3,489
27.03.2024, 17:45
Ерунда какая-то. По здравому смыслу, на промежуточном этапе количество бензина нужно округлять до целого, а то и до десятков (полудесятков) вверх.
А если мы только планируем ехать, то на результат еще как минимум 10% накинуть. Какие 2 цифры после запятой???
Да и питаться путешественник чем должен?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2024, 17:45
Помогаю со студенческими работами здесь

Перевести галлоны в литры
Дана такая программа: CLS REM … Один галлон равен 3.7854 литров FOR G = 1 TO 3 Litrs = G * 3.7854 PRINT G; “галлон...

Выбор самого выгодного курса для обмена долларов на рубли и рубли на доллары
В городе есть 7 банков. В каждом банке задается свой курс валюты. Необходимо написать программу выбирающую самый выгодный курс для обмена ...

Сформировать таблицу для пересчета милей в километры и километры в мили для расстояния от .1 до 100километров 1миль=1.609344километров
Сформировать таблицу для пересчета милей в километры и километры в мили для расстояния от .1 до 100километров 1миль=1.609344километров

Перевести доллары в рубли
Напечатать таблицу перевода 1,2,...20 долларов США в рубли по текущему курсу(значение курса вводится с клавиатуры)

Из рубли в доллары и евро
Составить алгоритм пересчета суммы денег в рублях в доллары и евро.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru