學習python,每日練習0611

電影院售票

電影院今天售票員全都放假。只能依靠電影院自動售票機進行購票,單張票價爲25元。而售票機內沒有錢,因此只能靠收入的錢去找零。售票機只能單張銷售。
現有的貨幣面值爲100,50,25三種。現在有n個人需要買票,且排隊順序不許變,請你根據他們手中的錢計算出,售票機能否進行找零。可以則返回yes,不可以則返回no

思路:
如果是25元的則可以直接購買成功
如果是50元,則需要拿出一張25元,存一張50元
如果是100元則需要拿出3張25元,存100元或者拿出一張50元和一張25元

'''
給出一段測試代碼,避免你們自己去兌答案了。
以下代碼保存爲test.py,後import可用
'''
def assert_equals(func, target):
    if func == target:
        print('Success!')
    else:
        print('Fail!{0} not equals {1}'.format(func, target))


import test

def tickets(people):
    #用於存放影院收到的錢
    sale = []
    for i in people:
        #如果是25元的則可以直接購買成功
        if  i == 25:
            sale.append(i)
        #如果是50元,則需要拿出一張25元,存一張50元
        if i == 50:
            if sale.count(25)>=1:
                sale.remove(25)
                sale.append(i)
            else:
                return "NO"
        #如果是100元則需要拿出3張25元,存100元或者拿出一張50元和一張25元
        if i == 100:
            if sale.count(50)>= 1 and sale.count(25)>=1:
                sale.remove(50)
                sale.remove(25)
                sale.append(i)
            elif sale.count(25)>=3:
                sale.remove(25)
                sale.remove(25)
                sale.remove(25)
                sale.append(i)
            else:
                return "NO"
    return "YES"


test.assert_equals(tickets([25, 25, 50]), 'YES')
test.assert_equals(tickets([25, 100]), 'NO')
test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 25, 25, 25]), 'YES')
test.assert_equals(tickets([50, 50, 50, 50, 50, 50, 50, 50, 50, 50]), 'NO')
test.assert_equals(tickets([100, 100, 100, 100, 100, 100, 100, 100, 100, 100]), 'NO')
test.assert_equals(tickets([25, 25, 25, 25, 50, 100, 50]), 'YES')
test.assert_equals(tickets([50, 100, 100]), 'NO')
test.assert_equals(tickets([25, 25, 100]), 'NO')
test.assert_equals(tickets([25, 25, 50]), 'YES')
test.assert_equals(tickets([25, 25, 25, 25, 25, 25, 25, 50, 50, 50, 100, 100, 100, 100]),'NO')
test.assert_equals(tickets([25, 100]), 'NO')
test.assert_equals(tickets([50, 50, 100]), 'NO')
test.assert_equals(tickets([25, 50, 100]), 'NO')
test.assert_equals(tickets([25, 25, 50, 50, 100]), 'NO')
test.assert_equals(tickets([100, 50, 25, 25]), 'NO')

結果:

Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!
Success!

字符串組成列表strarr最長的連續的字符串組合

'''

給你一個字符串組成列表strarr,給你一個整數k。
你的任務是找出由k個字符組成的最長的連續的字符串組合。
例子:
longest_consec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2) --> "abigailtheta"
n是列表的長度,如果if n = 0 or k > n or k <= 0 return ""
'''

'''
解題思路:
1.新建一個列表存放原字符串列表中每個字符的長度
2.通過max函數和index函數找到最長字符串的索引值
3.同時刪除兩個列表最長字符串的索引值再次循環找到最長字符串的索引值
'''
#請將以下代碼存爲test.py用於檢驗答案。
def assert_equals(func, target, *args):
    if func == target:
        print('Success!')
    else:
        print('Fail!{0} not equals {1}'.format(func, target))
        print(*args)


def longest_consec(list,k):
    #1.新建一個列表存放原字符串列表中每個字符的長度
    listSort = []
    str=""
    if len(list) ==0 or k > len(list) or k <=0:
        return ""
    else:
        for i in list:
            #1.新建一個列表存放原字符串列表中每個字符的長度
            listSort.append(len(i))
        for j in range(k):
            #通過max函數和index函數找到最長字符串的索引值
            index = listSort.index(max(listSort))
            str += list[listSort.index(max(listSort))]
            #同時刪除兩個列表最長字符串的索引值對應的字符
            listSort.remove(max(listSort))
            list.remove(list[index])
    return str


assert_equals(longest_consec(["zone", "abigail", "theta", "form", "libe", "zas"], 2), "abigailtheta")
assert_equals(longest_consec(["ejjjjmmtthh", "zxxuueeg", "aanlljrrrxx", "dqqqaaabbb", "oocccffuucccjjjkkkjyyyeehh"], 1), "oocccffuucccjjjkkkjyyyeehh")
assert_equals(longest_consec([], 3), "")
assert_equals(longest_consec(["itvayloxrp","wkppqsztdkmvcuwvereiupccauycnjutlv","vweqilsfytihvrzlaodfixoyxvyuyvgpck"], 2), "wkppqsztdkmvcuwvereiupccauycnjutlvvweqilsfytihvrzlaodfixoyxvyuyvgpck")
assert_equals(longest_consec(["wlwsasphmxx","owiaxujylentrklctozmymu","wpgozvxxiu"], 2), "wlwsasphmxxowiaxujylentrklctozmymu")
assert_equals(longest_consec(["zone", "abigail", "theta", "form", "libe", "zas"], -2), "")
assert_equals(longest_consec(["it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"], 3), "ixoyx3452zzzzzzzzzzzz")
assert_equals(longest_consec(["it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"], 15), "")
assert_equals(longest_consec(["it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"], 0), "")

結果:
Success!
Success!
Success!
Success!
Fail!owiaxujylentrklctozmymuwlwsasphmxx not equals wlwsasphmxxowiaxujylentrklctozmymu

Success!
Fail!zzzzzzzzzzzzwkppvixoyx not equals ixoyx3452zzzzzzzzzzzz

Success!
Success!

題目來源:
https://fishc.com.cn/forum.php?mod=viewthread&tid=86360&ctid=588

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章