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}') |