天天看點

Python每日一程式設計小練習(2019.06.01)——檸檬水找零

題目:

在檸檬水攤上,每一杯檸檬水的售價為 

5

 美元。

顧客排隊購買你的産品,(按賬單 

bills

 支付的順序)一次購買一杯。

每位顧客隻買一杯檸檬水,然後向你付 

5

 美元、

10

 美元或 

20

 美元。你必須給每個顧客正确找零,也就是說淨交易是每位顧客向你支付 

5

 美元。

注意,一開始你手頭沒有任何零錢。

如果你能給每位顧客正确找零,傳回 

true

 ,否則傳回 

false

 。

示例 1:

輸入:[5,5,5,10,20]
輸出:true
解釋:
前 3 位顧客那裡,我們按順序收取 3 張 5 美元的鈔票。
第 4 位顧客那裡,我們收取一張 10 美元的鈔票,并返還 5 美元。
第 5 位顧客那裡,我們找還一張 10 美元的鈔票和一張 5 美元的鈔票。
由于所有客戶都得到了正确的找零,是以我們輸出 true。      

分析:

1、需清楚找零錢不僅要考慮面值夠不夠,還要考慮鈔票的面額,即2張10美元鈔票不能給20美元鈔票找零。

是以,我們需要針對收到的錢來進行分情況處理判斷:

①收到5美元鈔票,則直接收錢即可,不用做判斷;

②收到10美元鈔票,則需判斷是否有5美元鈔票進行找零;

③收到20美元鈔票,則需判斷是否有  “至少一張5美元鈔票以及一張10美元鈔票”  或者  “3張5美元鈔票”  進行找零;

2、需清楚continue、break的用法

用法參考了:https://baijiahao.baidu.com/s?id=1618290540843657394&wfr=spider&for=pc

def lemon(a):
    i = 0
    b5 = 0                                  #存儲5元零錢
    b10 = 0                                 #存儲10元零錢
    b20 = 0                                 #存儲20元零錢
    while i < len(a):
        if a[i] == 5:                       #收到5元,不用找零錢,收錢即可
            b5 = b5 + 5 
            i = i + 1
            continue                        #繼續下一次循環
        if a[i] == 10 and b5 > (a[i]-5):    #收到10元,需確定有5元零錢
            b10 = b10 + 10
            b5 = b5 - 5
            i = i + 1
            continue
        elif a[i] == 20 and b5 >= 5 and b10 >= 10: #收到20元,需確定有5元、10元零錢
            b10 = b10 - 10
            b5 = b5 - 5
            b20 = b20 + 20
            i = i + 1
            continue
        elif a[i] == 20 and b5 >= 15:              #收到20元,需確定有3張5美元鈔票零錢
            b5 = b5 - 15
            b20 = b20 + 20
            i = i + 1
            continue
        else :
            return('false')
            break
    return('ture')
           

運作結果:

Python每日一程式設計小練習(2019.06.01)——檸檬水找零

注:本題目來源于:https://mp.weixin.qq.com/s/jaeSczaeMXfk9QlC6LfqFA

如有侵權,請聯系删除。

本題的思路以及代碼,由筆者自己思考并編寫代碼實作,如有錯誤,歡迎之處。