Професионална програма
Loading...
+ Нов въпрос
veselinvalkanov avatar veselinvalkanov 0 Точки

08. Seize the Fire /дава ми 60/100 - някой,ако може да каже защо

level_of_fire = input().split("#")
water = int(input())

print("Cells:")

all_effort = 0
total_fire1 = 0
for fire in level_of_fire:
    args = fire.split(" =")
    type = args[0]
    cells = int(args[1])
    effort = 0
    total_fire = 0

    if water < cells:
        break
    else:

        if type == "High":
            if 80 < (cells) <= 130:
                effort += (cells) * 0.25
                water -= (cells)
                total_fire += effort * 4

            else:
                continue

        elif type == "Medium":
            if 50 < (cells) <= 81:
                effort += (cells) * 0.25
                water -= (cells)
                total_fire += effort * 4

            else:
                continue

        elif type == "Low":
            if 1 <= (cells) <= 51:
                effort += (cells) * 0.25
                water -= (cells)
                total_fire += effort * 4

            else:
                continue

    total_fire1 += total_fire
    all_effort += effort

    print(f" - {cells}")
print(f"Effort: {all_effort:.2f}")
print(f"Total Fire: {int(total_fire1)}")
Тагове:
0
Fundamentals Module
MartinBG avatar MartinBG 2680 Точки

Имаше грешки в range границите на някои от типовете огън, както и не беше спазена тази част от условието:

If you don’t have enough water to put out a given cell – skip it and try the next one.

(изпозван break вместо continue)

 

Оправения код:

level_of_fire = input().split("#")
water = int(input())

print("Cells:")

all_effort = 0
total_fire1 = 0
for fire in level_of_fire:
    args = fire.split(" =")
    type = args[0]
    cells = int(args[1])
    effort = 0
    total_fire = 0

    if water < cells:
        continue
    else:

        if type == "High":
            if 81 <= cells <= 125:
                effort += cells * 0.25
                water -= cells
                total_fire += effort * 4

            else:
                continue

        elif type == "Medium":
            if 51 <= cells <= 80:
                effort += cells * 0.25
                water -= cells
                total_fire += effort * 4

            else:
                continue

        elif type == "Low":
            if 1 <= cells <= 50:
                effort += cells * 0.25
                water -= cells
                total_fire += effort * 4

            else:
                continue

    total_fire1 += total_fire
    all_effort += effort

    print(f" - {cells}")
print(f"Effort: {all_effort:.2f}")
print(f"Total Fire: {int(total_fire1)}")

Старал съм се да не правя промени извън фиксовете, но имайте предвид, че повтарянето на код е лоша практика и трябва да се избягва винаги, без изключения.

Имам предвид този блок, който е използван 3 пъти:

                effort += cells * 0.25
                water -= cells
                total_fire += effort * 4

Помислете как да го има само веднъж и да бъде преизползван и за трите случая.

0