mirovlad

Cinema

May 19th, 2022 (edited)
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.27 KB | None | 0 0
  1. ticket_ppp = 5  # ticket price per person
  2.  
  3. capacity = int(input())
  4.  
  5. busy_seats = 0
  6. total_discount = 0
  7. seats_are_exhausted = False
  8. user_stopped_adding_persons = False
  9. while True:
  10.     user_input = input()
  11.     if user_input == "Movie time!":
  12.         # Причината, поради която спираме потребителския вход тук,
  13.         # е че потребителя в въвел командата за край "Movie time!"
  14.         # Запомняме този факт:
  15.         user_stopped_adding_persons = True
  16.         break
  17.  
  18.     persons_to_enter = int(user_input)  # Брой хора, които искат да влязат
  19.     if busy_seats + persons_to_enter > capacity:  # Няма място за толкова хора
  20.         # По условие:
  21.         # "Ако в залата се опитат да влязат повече хора от колкото места са останали,
  22.         #  то се счита че местата са изчерпани и програмата трябва да приключи четенето на вход."
  23.         # На мен това "ако се опитат да влязат" ми звучи като че тия дето искат да влязат,
  24.         # ако няма място за тях всичките, следва да им бъде отказано на всичките,
  25.         # и да не питаме за още желаещи
  26.         # Затова дирекно излизаме, без да увеличаваме броя на заетите места
  27.         # Така незаетите ще си останат незаети.
  28.         # Искат също да си отбележим, че местата са изчерпани (дори ако все още има някакви свободни)
  29.         seats_are_exhausted = True
  30.         break
  31.  
  32.  
  33.     # В тази точка имаме места хората дето искат да влязат
  34.     persons_to_enter_tickets_price = persons_to_enter * ticket_ppp
  35.  
  36.     # В условието не ми стана ясно кое трябва да се провери дали се дели на 3 без остатък:
  37.     # Дали броя на хората, които искат да влязат persons_to_enter,
  38.     # дали вече заетите места busy_seats,
  39.     # дали сумата им persons_to_enter + busy_seats.
  40.     # Но като гледам обяснението в първия примерен вход, искат да е persons_to_enter:
  41.     if persons_to_enter % 3 == 0:  # Дели се на 3 без остатък
  42.         total_discount += 5
  43.  
  44.     busy_seats += persons_to_enter  # Добавяме заети места за новите хора
  45.  
  46. empty_seats = capacity - busy_seats
  47. cinema_income = (busy_seats * ticket_ppp) - total_discount
  48.  
  49. if user_stopped_adding_persons:
  50.     print(f"There are {empty_seats} seats left in the cinema.")
  51.  
  52. if seats_are_exhausted:
  53.     print("The cinema is full.")
  54.  
  55. # Може да се спори, че понеже възможните причини за край са само две:
  56. # или юзъра е казал "Movie Time!":
  57. #   -- тогава user_stopped_adding_persons==True и seats_are_exhausted==False
  58. # или юзъра се е опитал да пусне повече хора, отколкото места има:
  59. #   -- тогава user_stopped_adding_persons==False и seats_are_exhausted==True
  60. # Затова вместо горните 2 независими if-a,
  61. # може да се навържат с if-elif:
  62. #if user_stopped_adding_persons:
  63. #    print(f"There are {empty_seats} seats left in the cinema.")
  64. #elif seats_are_exhausted:
  65. #    print("The cinema is full.")
  66. # Или пък с if/else (тогава едната променлива е достатъчна, другата е излишна:
  67. #if user_stopped_adding_persons:
  68. #    print(f"There are {empty_seats} seats left in the cinema.")
  69. #else:
  70. #    print("The cinema is full.")
  71. #
  72. # Аз обаче се чувствам по-добре if-овете да са независими
  73. # Може и да не е оптимално, но ми стои по-ясно
  74.  
  75. print(f"Cinema income - {cinema_income} lv.")
  76.  
Add Comment
Please, Sign In to add comment