Софтуерно Инженерство
Loading...

On time for the exam

Здравейте,

не мога да хвана в това решение защо има 93 от сто :(

Ако някой има идея - ще се радвам на помощ. Реших я и по друг начин, но тук ме дразни че не виждам.

 

exam_hours = int(input())
exam_minutes = int(input())
arrival_hours = int(input())
arrival_minutes = int(input())

total_exam_min = exam_hours * 60 + exam_minutes
total_arrival_min = arrival_hours * 60 + arrival_minutes
hours_left = 0
min_left = 0

diff = abs(total_exam_min - total_arrival_min)

if total_arrival_min > total_exam_min:
    print("Late")
    if diff >= 60:
        hours_left = diff // 60
        min_left = diff % 60
        if min_left < 10:
            print(f"{hours_left}:0{min_left} hours after the start")
        else:
            print(f"{hours_left}:{min_left} hours after the start")
    else:
        if diff < 10:
            print(f"0{diff} minutes after the start")
        else:
            print(f"{diff} minutes after the start")
elif total_arrival_min == total_exam_min:
    print("On time")

elif total_arrival_min < total_exam_min:
    if diff <= 30:
        print("On time")
        print(f"{diff} minutes before the start")
    else:
        if diff >= 60:
            hours_left = diff // 60
            min_left = diff % 60
            if min_left < 10:
                print("Early")
                print(f"{hours_left}:0{min_left} hours before the start")
            else:
                print("Early")
                print(f"{hours_left}:{min_left} hours before the start")
        else:
            print("Early")
            print(f"{diff} minutes before the start")
Тагове:
0
mark79 avatar mark79 633 Точки

Здравей,

ето едно малко по-кратко решение ..

exam_hour = int(input())
exam_minute = int(input())
arrive_hour = int(input())
arrive_minute = int(input())

exam_total_minutes = exam_hour * 60 + exam_minute
arrive_total_minutes = arrive_hour * 60 + arrive_minute

if arrive_total_minutes > exam_total_minutes:
    print("Late")
elif exam_total_minutes - arrive_total_minutes <= 30:
    print("On time")
else:
    print("Early")

result = abs(exam_total_minutes - arrive_total_minutes)
if exam_total_minutes - arrive_total_minutes > 0:
    if result < 60:
        print(f"{result} minutes before the start")
    else:
        print(f"{result // 60}:{result % 60:02d} hours before the start")
elif arrive_total_minutes - exam_total_minutes > 0:
    if result < 60:
        print(f"{result} minutes after the start")
    else:
        print(f"{result // 60}:{result % 60:02d} hours after the start")

Поздрави :)

0

Благодаря :)

Аз я реших по друг начин...интересно ми беше тук къде бъркам, понеже не виждам. Дава ми 93 от 100.

0
mark79 avatar mark79 633 Точки

Здравей,

просто показах друг подход, заради многото код, които се повтаряше при теб.

Поздрави :)

0
05/10/2019 20:34:52
omnilog avatar omnilog 3 Точки

Вероятно комичен въпрос, но каква е ролята на оцветеното от кода {result % 60:02d}?

0
mark79 avatar mark79 633 Точки

Здравей,

това указва форматирането да е цяло число и задължително да има два знака, т.е. да има водеща нула отпред, ако числото е по-малко от 10.

Поздрави :)

0
ivanova.milena avatar ivanova.milena 0 Точки

Решението ви е страхотно - много леко и разбираемо!

0