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

Nested Loops - cinema tickets

Здравейте,

имам затруднения с решението на задачата. Може да се каже, че тези затруднения не са с конкретната задача , а по-скоро с принципа който използвам. Та накратко пиша си нещата, проверките излизат, но само ако имам един филм. Не се сещам как да почна отначало цекъла. ако някой има възможност да погледне кода.

 

film = input()
capacity = int(input())
ticket_type = ""
counter_standart = 0
counter_kid = 0
counter_student =0
ticket_counter = 0

while film != "Finish":

    while ticket_type != "End":
        ticket_type = input()
        if ticket_type == "standard":
            counter_standart += 1
        elif ticket_type == "kid":
            counter_kid += 1
        elif ticket_type == "student":
            counter_student += 1
   
    ticket_type = input()
    ticket_counter = counter_standart + counter_kid + counter_student
    print(f"{film} - {ticket_counter / capacity * 100}% full.")
    print(f"Total tickets:{ticket_counter}")
    print(f"{counter_student / ticket_counter * 100:.2f}% student tickets.")
    print(f"{counter_standart / ticket_counter * 100:.2f}% standard tickets.")
    print(f"{counter_kid / ticket_counter * 100:.2f}% kids tickets.")

 

 

Тагове:
0
julien.p1 avatar julien.p1 15 Точки

Брояча за билетите за даден филм трябва да е в пътвия цикъл, за да се занулят при причитането на всеки следващ. Моят код е на Java, но би трябвало да можеш да се ориентираш.

https://pastebin.com/yFDgs4ux

0
MartinBG avatar MartinBG 3992 Точки

Това е преправеното ти решение:

counter_standard = 0
counter_kid = 0
counter_student = 0

while True:
    film = input()
    if film == "Finish":
        break
        
    capacity = int(input())
    tickets_sold = 0
    
    while capacity > tickets_sold:
        ticket_type = input()
        if ticket_type == "End":
            break
            
        tickets_sold += 1
        
        if ticket_type == "standard":
            counter_standard += 1
        elif ticket_type == "kid":
            counter_kid += 1
        elif ticket_type == "student":
            counter_student += 1
            
    print(f"{film} - {tickets_sold / capacity * 100:.2f}% full.")

ticket_counter = counter_standard + counter_kid + counter_student
print(f"Total tickets: {ticket_counter}")
print(f"{counter_student / ticket_counter * 100:.2f}% student tickets.")
print(f"{counter_standard / ticket_counter * 100:.2f}% standard tickets.")
print(f"{counter_kid / ticket_counter * 100:.2f}% kids tickets.")

 

Наложи се да променя доста неща, за да покрие условията на задачата, така че най-добре го разгледай внимателно и питай, ако има нещо, което не ти е ясно.

0
ferrist avatar ferrist 1 Точки

Благодаря много!

1
D.V.Ivanov avatar D.V.Ivanov 6 Точки

Ето и едно мое решение, което дава 100/100:

movie = input()

ticket1 = 0
ticket2 = 0
ticket3 = 0
sum_tickets = 0

while movie != "Finish":
    empty_places = int(input())
    count_places = 0
    while count_places < empty_places:
        ticket = input()
        if ticket == "End":
            break
        if ticket == "student":
            ticket1 += 1
            count_places += 1
        elif ticket == "standard":
            ticket2 += 1
            count_places += 1
        elif ticket == "kid":
            ticket3 += 1
            count_places += 1
    count_places = (count_places / empty_places) * 100
    print(f"{movie} - {count_places:.2f}% full.")
    movie = input()

if movie == "Finish":
    sum_tickets = ticket1 + ticket2 + ticket3
    ticket1 = (ticket1 / sum_tickets) * 100
    ticket2 = (ticket2 / sum_tickets) * 100
    ticket3 = (ticket3 / sum_tickets) * 100
    print(f"Total tickets: {sum_tickets}")
    print(f"{ticket1:.2f}% student tickets.")
    print(f"{ticket2:.2f}% standard tickets.")
    print(f"{ticket3:.2f}% kids tickets.")
0
svephoto avatar svephoto 1114 Точки

Добре си го направил, D.V.Ivanovyes

Иначе преди финалните пресмятания и печатането даже няма нужда да проверяваш

if movie == "Finish":

понеже няма какво друго да е (освен Finish), след като условието ти в while-a e

while movie != "Finish":

laugh

0
13/04/2021 23:24:05