Конвертер из числа в дату

Hecate1988

Новичок
Пользователь
Фев 7, 2023
5
0
1
36
Харьков
Добрый день!
Версия Питона 3.11
Windows 10

Нужна помощь в задачке.
Ваша задача — написать программу, которая переводит число в формат времени в читабельном виде.

Пользователь должен ввести число больше 0 и меньше 8639999.

Число, которое является количеством секунд, необходимо перевести в дни, часы, минуты и секунды.

Ну и дополнительной задачей является — забота о выводе.

Слово "день" подбирается на основе кол-ва дней, а часы, минуты и секунды должны заполняться нулями при одноцифровых значениях.

Пример:

0 -> 0 дней, 00:00:00
224930 -> 2 дня, 14:28:50
466289 -> 5 дней, 09:31:29
950400 -> 11 дней, 00:00:00
1209600 -> 14 дней, 00:00:00
8639999 -> 99 дней, 23:59:59
22493 -> 0 дней, 06:14:53
7948799 -> 91 день, 23:59:59

Подсказка: в одной минуте 60 сек. , в одном часе 60*60 сек, в одних сутках 24*60*60 сек. Т.е. используя функцию divmod или методы деления // и % вам необходимо найти соотвествующее кол-во дней, часов, минут, а то что останется - это секунды, которые меньше 60 ;)
Дополнить ведущими нулями можно с помощью метода zfill(2)
Происходит загвоздка в выводе "день ,дня и дней"

Например, ввожу 950400
и выбивает:
11 , 00:00:00
а вот слово "дней", где то потерялось
Код:
seconds = int(input(" ВВедите любое число больше 0 и меньше 8639999: "))
minutes = 0
hours = 0
days = 0

day = str()
a_zero = str()
b_zero = str()
c_zero = str()
while seconds >= 60:
   seconds -= 60
   minutes += 1
while minutes >= 60:
   minutes -= 60
   hours += 1
while hours >= 24:
   hours -= 24
   days +=1
if seconds / 10 < 1:
   c_zero = str(0)
if minutes / 10 < 1:
   b_zero = str(0)
if hours / 10 < 1:
   a_zero = str(0)
if days % 10 >= 5:
   day = "дней"
if days % 10 > 1 and days % 10 < 5:
   day = "дня"
if days % 1 == 1:
   day = "день"

print(f"{days} {day}, {a_zero}{hours}:{b_zero}{minutes}:{c_zero}{seconds}")

ошибка где то в выделенном фиалетовом цвете(я так думаю)
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Python:
def func(value):
    i = int(value[-1])
    if int(value) == 2 or int(value) == 3 or int(value) == 4:
        return "дня"
    if i == 1:
        if int(value) == 1 or int(value) > 12:
            return "день"
    return "дней"


def func2(value):
    if value == 0:
        return "00"
    if len(str(value)) == 1:
        return f"0{value}"
    return value


seconds = int(input(" ВВедите любое число больше 0 и меньше 8639999: "))
second = divmod(seconds, 60)
minute = divmod(second[0], 60)
days = divmod(minute[0], 24)


print(f"{days[0]} {func(str(days[0]))}, {func2(days[1])}:{func2(minute[1])}:{func2(second[1])}")
 

Hecate1988

Новичок
Пользователь
Фев 7, 2023
5
0
1
36
Харьков
Python:
def func(value):
    i = int(value[-1])
    if int(value) == 2 or int(value) == 3 or int(value) == 4:
        return "дня"
    if i == 1:
        if int(value) == 1 or int(value) > 12:
            return "день"
    return "дней"


def func2(value):
    if value == 0:
        return "00"
    if len(str(value)) == 1:
        return f"0{value}"
    return value


seconds = int(input(" ВВедите любое число больше 0 и меньше 8639999: "))
second = divmod(seconds, 60)
minute = divmod(second[0], 60)
days = divmod(minute[0], 24)


print(f"{days[0]} {func(str(days[0]))}, {func2(days[1])}:{func2(minute[1])}:{func2(second[1])}")
Спасибо!
Вопрос только в одном.
Если я ввожу 7948799 -> получается 91 дней, 23:59:59, а должно получится 91 день
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 661
474
83
Спасибо!
Вопрос только в одном.
Если я ввожу 7948799 -> получается 91 дней, 23:59:59, а должно получится 91 день
вроде нет
 

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