SHOW:
|
|
- or go back to the newest paste.
| 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 | - | while check_need_sum: |
| 7 | + | |
| 8 | if current_sum == 'End': | |
| 9 | break | |
| 10 | current_sum = int(current_sum) | |
| 11 | ||
| 12 | - | # Проверка за Възможна транзакция |
| 12 | + | # Тук само ПРЕЦЕНЯВАМЕ дали продукта е продаден -- да наречем това "отговорност 1" |
| 13 | - | if check_cash and current_sum <= 100: |
| 13 | + | product_sold = False # Подхождаме като песимисти, че продукта няма да бъде продаден успешнп |
| 14 | - | print('Product sold!')
|
| 14 | + | if check_cash: # В брой |
| 15 | - | cash_sum.append(current_sum) |
| 15 | + | check_cash = False #Веднага превключаме за следващото да е карта |
| 16 | - | check_need_sum -= current_sum |
| 16 | + | if not current_sum > 100: |
| 17 | - | check_cash = False |
| 17 | + | cash_sum.append(current_sum) |
| 18 | - | if check_need_sum < 0: |
| 18 | + | product_sold = True # Маркираме че сме продали продукта |
| 19 | - | break |
| 19 | + | else # С кредитна карта |
| 20 | - | elif not check_cash and current_sum >= 10: |
| 20 | + | check_cash = True #Веднага превключаме за следващото да е в брой |
| 21 | - | print('Product sold!')
|
| 21 | + | if not current_sum < 10: |
| 22 | - | card_sum.append(current_sum) |
| 22 | + | card_sum.append(current_sum) |
| 23 | - | check_need_sum -= current_sum |
| 23 | + | product_sold = True # Маркираме че сме продали продукта |
| 24 | - | check_cash = True |
| 24 | + | # Виж как в оригиналния ти код превключването в-брой/карта беше на 3 места, а тук стана по-събрано |
| 25 | - | if check_need_sum < 0: |
| 25 | + | |
| 26 | - | break |
| 26 | + | # Тук кодираме само РЕАКЦИЯТА НИ от това дали продукта е продаден -- да наречем това "отговорност 2" |
| 27 | # Действията по-долу преди бяха повторени на 2 места в кода. | |
| 28 | # Докато сега с помощта на product_sold са само тук на едно място: | |
| 29 | - | if check_cash: |
| 29 | + | if product_sold: |
| 30 | - | check_cash = False |
| 30 | + | print('Product sold!')
|
| 31 | - | elif not check_cash: |
| 31 | + | check_need_sum -= current_sum |
| 32 | - | check_cash = True |
| 32 | + | if check_need_sum <= 0: |
| 33 | - | if not len(card_sum): |
| 33 | + | break |
| 34 | - | aver_card = 0 |
| 34 | + | |
| 35 | - | elif not len(cash_sum): |
| 35 | + | |
| 36 | - | aver_cash = 0 |
| 36 | + | # Забележи как разделянето на двете отговорности да са в отделни пасажи досведе до 2 неща: |
| 37 | # * По-прости и ясни if-ове | |
| 38 | - | aver_cash = sum(cash_sum) / len(cash_sum) |
| 38 | + | # * Изчезна нуждата един и същ код да се повтаря на 2-3 места |
| 39 | - | aver_card = sum(card_sum) / len(card_sum) |
| 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}') |