Софтуерно Инженерство
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
grishko0o avatar grishko0o 35 Точки
Best Answer

Здравейте, 

"грешката" e в ред 22. Със сегашния вид, ако закъснее с една минута ще има вид : 

01 minutes after the start

а би трябвало да изглежда: 

1 minutes after the start. 

С други думи ред 22 : 

else:
        if diff < 10:
            print(f"0{diff} minutes after the start")
        else:
            print(f"{diff} minutes after the start")

става само 

else: print(f"{diff} minutes after the start")

Както е спазено в ред 44 : 

 else:
            print("Early")
            print(f"{diff} minutes before the start")

 

 

 

0

Ех :)

знаех си, че е някоя дреболия...

Много много благодаря за отделеното време и помощта!

0
mark79 avatar mark79 631 Точки

Здравей,

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

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 631 Точки

Здравей,

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

Поздрави :)

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

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

0
omnilog avatar omnilog 3 Точки

Здравей! 

Не съм стигнал до тази задача, но ми беше интересно и си мисля какво би станало, ако намалиш броя на else-те?
 

0