Возможно ли оптимизировать код(простая задача про калькулятор времени)

Alf

Новичок
Пользователь
Фев 11, 2022
2
1
3
Добрый день, подскажите пожалуйста начинающему питонисту ) задачу решил, но выглядит громоздко, возможно ли оптимизировать?
Так как тема if-elif-else , то и решать задачку я так понимаю надо опираясь только на эти операторы...
Вопрос: Напишите программу, которая просит пользователя ввести несколько секунд, и работает следующим образом:

  • Есть 60 секунд в минуту. Если количество секунд, введенных пользователем, больше или равно 60, программа должна отображать количество минут за это несколько секунд.
  • Есть 3600 секунд в час. Если количество секунд, введенных пользователем, больше или равно 3600, программа должна отображать количество часов в течение многих секунд.
  • Есть 86400 секунд в день. Если количество секунд, введенных пользователем, больше или равно 86400, программа должна отображать количество дней в течение многих секунд.
Вот что у меня:

s = int(input('введите количество секунд - '))
MIN = 60
HOUR = 3600
DAY = 86400
if s <= MIN:
print(s, 'sec')
elif s >= MIN and s <= HOUR:
m = s // MIN
sec = s - (m * MIN)
print(m, 'min ', sec, 'sec')
elif s >= HOUR and s <= DAY:
hour = s // HOUR
ost_min = s - hour * HOUR #узнаем остаток минут
m = ost_min // MIN
sec = s - m * MIN - hour * HOUR
print(hour, 'hour', m, 'min', sec, 'sec')
elif s > DAY:
day = s // DAY
ost_hour = s - day * DAY #узнаем остаток часов
hour = ost_hour // HOUR
ost_min = s - day*DAY- hour * HOUR #узнаем остаток минут
m = ost_min // MIN
sec = s - m * MIN - hour * HOUR- day*DAY
print(day,'day', hour, 'hour', m, 'min', sec, 'sec')
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
944
210
43
20
Москва
Как вставлять код:
1644597425702.png
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
944
210
43
20
Москва
Python:
s = int(input('введите количество секунд - '))
MIN = 60
HOUR = 3600
DAY = 86400
days = s // DAY
s %= DAY
hours = s // HOUR
s %= HOUR
mins = s // MIN
s %= MIN
if mins == 0:
    print(f'секунды: {s}')
elif hours == 0:
    print(f'минуты: {mins}\nсекунды: {s}')
elif days == 0:
    print(f'часы: {hours}\nминуты: {mins}\nсекунды: {s}')
else:
    print(f'дни: {s}\nчасы: {hours}\nминуты: {mins}\nсекунды: {s}')
 
  • Мне нравится
Реакции: EVEN

Alf

Новичок
Пользователь
Фев 11, 2022
2
1
3
Прошу прощения за вставку кода, неразобрался поначалу. И спасибо за корректировку
 
  • Мне нравится
Реакции: Vershitel_sudeb

EVEN

Новичок
Пользователь
Июл 1, 2024
5
0
1
Код:
s = int(input('введите количество секунд - '))
MIN = 60
HOUR = 3600
DAY = 86400

if s <= MIN:
    print(s, 'sec')
elif s >= MIN and s <= HOUR:
    print(f"min: {s//MIN} sec: {s % MIN}")
elif s >= HOUR and s <= DAY:
    print(f"hour: {s// HOUR} min: {s % HOUR // MIN} sec: {s % HOUR % MIN }")
elif s > DAY:
    print(f"day: {s//DAY} hour: {s % DAY // HOUR} min: {s % DAY % HOUR // MIN } sec: {s % DAY % HOUR %MIN }")
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
944
210
43
20
Москва
Python:
t = int(input('введите сек: '))
if 3600 > t >= 60:
    print(f'{t // 60 % 60}мин {t % 60}сек')
elif 86400 > t >= 3600:
    print(f'{t // 3600 % 3600}час {t // 60 % 60}мин {t % 60}сек')
else:
    print(f'{t // 86400 % 86400}день {t // 3600 % 24}час {t // 60 % 60}мин {t % 60}сек')
Некрасиво все распихивать по однострочникам, да и в проде за такое явно не похвалят
 

Doshik5D

Новичок
Пользователь
Июн 29, 2024
2
1
1
Некрасиво все распихивать по однострочникам, да и в проде за такое явно не похвалят
В каком проде, тут задача из Книги. Кому вообще нужны детские задачи с секундами в проде? Тут, на начальном уровне, новичкам (Я один из них) нужно понять как работает код и в чем смысл. Не писать код как у автора поста на 30 строк. И всё распихивать по госту уже дело житейское, для тяжеловесных программ, когда придет понимание. Хотя это лично МОЕ МНЕНИЕ и мне так удобнее и понятнее. Типа я понимаю как "нужно" оформлять, но у всех, вроде как, первостепенная задача ПОНЯТЬ как работает.
 
  • Мне нравится
Реакции: Vershitel_sudeb

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
944
210
43
20
Москва
В каком проде, тут задача из Книги. Кому вообще нужны детские задачи с секундами в проде? Тут, на начальном уровне, новичкам (Я один из них) нужно понять как работает код и в чем смысл. Не писать код как у автора поста на 30 строк. И всё распихивать по госту уже дело житейское, для тяжеловесных программ, когда придет понимание. Хотя это лично МОЕ МНЕНИЕ и мне так удобнее и понятнее. Типа я понимаю как "нужно" оформлять, но у всех, вроде как, первостепенная задача ПОНЯТЬ как работает.
Оки, в проде про секунды и правда не будет, я про то что сначала лучше рассчитать все значения, а потом уже подставлять, и как будто это в том числе читабельнее, чем каждый раз пытаться понять откуда взяты цифры. Хотя да, код сильно короче и в этом плане проще, согласен.
 
-1

Doshik5D

Новичок
Пользователь
Июн 29, 2024
2
1
1
Python:
t = int(input('введите сек: '))
if 3600 > t >= 60:
    print(f'{t // 60 % 60}мин {t % 60}сек')
elif 86400 > t >= 3600:
    print(f'{t // 3600 % 3600}час {t // 60 % 60}мин {t % 60}сек')
else:
    print(f'{t // 86400 % 86400}день {t // 3600 % 24}час {t // 60 % 60}мин {t % 60}сек')
 

Форум IT Специалистов