View difference between Paste ID: VvkRqpiM and vc9QsGM2
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}')