mirovlad

report_system2

Jun 8th, 2022 (edited)
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. need_sum = int(input())
  2. check_need_sum = need_sum
  3. check_cash = True
  4. cash_sum = []
  5. card_sum = []
  6. while True:
  7.     current_sum = input()
  8.     if current_sum == 'End':
  9.         break
  10.     current_sum = int(current_sum)
  11.  
  12.     # Тук само ПРЕЦЕНЯВАМЕ дали продукта е продаден -- да наречем това "отговорност 1"
  13.     product_sold = False # Подхождаме като песимисти, че продукта няма да бъде продаден успешнп
  14.     if check_cash:  # В брой
  15.         check_cash = False  #Веднага превключаме за следващото да е карта
  16.         if not current_sum > 100:
  17.             cash_sum.append(current_sum)
  18.             product_sold = True # Маркираме че сме продали продукта
  19.     else   # С кредитна карта
  20.         check_cash = True  #Веднага превключаме за следващото да е в брой
  21.         if not current_sum < 10:
  22.             card_sum.append(current_sum)
  23.             product_sold = True # Маркираме че сме продали продукта
  24.     # Виж как в оригиналния ти код превключването в-брой/карта беше на 3 места, а тук стана по-събрано
  25.            
  26.     # Тук кодираме само РЕАКЦИЯТА НИ от това дали продукта е продаден -- да наречем това "отговорност 2"
  27.     # Действията по-долу преди бяха повторени на 2 места в кода.
  28.     # Докато сега с помощта на product_sold са само тук на едно място:
  29.     if product_sold:
  30.         print('Product sold!')
  31.         check_need_sum -= current_sum
  32.         if check_need_sum <= 0:
  33.             break
  34.     else:
  35.         print('Error in transaction!')
  36.     # Забележи как разделянето на двете отговорности да са в отделни пасажи досведе до 2 неща:
  37.     # * По-прости и ясни if-ове
  38.     # * Изчезна нуждата един и същ код да се повтаря на 2-3 места
  39.  
  40. aver_cash = sum(cash_sum) / len(cash_sum)
  41. aver_card = sum(card_sum) / len(card_sum)
  42.  
  43. if current_sum == 'End':
  44.     print('Failed to collect required money for charity.')
  45. else:
  46.     print(f'Average CS: {aver_cash:.2f}')
  47.     print(f'Average CC: {aver_card:.2f}')
Add Comment
Please, Sign In to add comment