• 求列表全排列

lst?=?[1,2,3]
l1?=?[(x,y,z)?for?x?in?lst?for?y?in?lst?for?z?in?lst?if?x?!=?y?if?y?!=?z?if?x?!=?z]
print(l1)
  • 給定一個非負整數num,重復的加每一位,直到最后只剩下一位

例如: num = 38,計算過程如下:

3 + 8 =11

1 + 1 = 2

最后輸出結果為2

#遞歸
def?add(num):if?len(str(num))?==?1:return?numret?=?0for?i?in?str(num):ret?+=?int(i)return?retreturn(add(ret))
print(add(8))
#累加器
def?add(num):ret?=?0for?i?in?str(num):ret?+=?int(i)return?retdef?cacl(num):ret?=?numwhile?ret?>=?10:ret?=?add(ret)return?ret
print(cacl(38))#使用列表解析優化版
def?add(num):return?sum([int(x)?for?x?in?str(num)])
def?cacl(num):ret?=?numwhile?ret?>=?10:ret?=?add(ret)return?ret
print(cacl(38))
  • 尋找happy number

happy number值,對一個數字的每一位取平方后相加,對得到的結果反復執行上一步,直到最后只有一位,如果最后結果為1,這個數就為happy number.

例如 19 就是happy number.因為

1^2 + 9^2 = 82

8^2 + 2^2 = 68

6^2 + 8^2 = 100

1^2 + 0^2 + 0^2 = 1

def?add(num):ret?=?0for?i?in?str(num):ret?+=?(int(i)?**?2)return?retdef?happy_number(num):results?=?{num}ret?=?numwhile?ret?>=?10:ret?=?add(ret)if?ret?in?results:return?Falseresults.add(ret)return?ret?==?1for?i?in?range(1,10000):if?happy_number(i):print('{0}?is?happy?number'.format(i))
#使用列表解析優化上版
def?add(num):return?sum([int(x)?**?2?for?i?in?str(num)])def?happy_number(num):results?=?{num}ret?=?numwhile?ret?>=?10:ret?=?add(ret)if?ret?in?results:return?Falseresults.add(ret)return?ret?==?1for?i?in?range(1,10000):if?happy_number(i):print('{0}?is?happy?number'.format(i))
  • 裝飾器

寫一個帶一個default_user 參數的裝飾器,此裝飾器檢查傳入函數的關鍵字參數,如果沒有名為user的參數,使用default_user 作為user 參數傳遞給函數.

例如:

@inject_user(default_user=comyn)

def do_something(*args,**kwargs):

print(kwargs['user'])

調用do_something() 時能輸入comyn

from?functools?import?wraps
def?inject_user(default_user):def?func(fn):@wraps(fn)def?deco(*args,?**kwargs):if?'user'?not?in?kwargs.keys():kwargs['user']?=?default_userreturn?fn(*args,?**kwargs)return?decoreturn?func@inject_user(default_user='comyn')
def?do_somethings(*args,?**kwargs):print(kwargs['user'])do_somethings()


  • 列表匹配

寫一個find函數,傳入兩個列表,其中origin和iterms, items具有默認值[3, 4].查找iterms中每個元素在origin中的所有位置.返回值為字典,key是iterms中的元素,value是位置的元組.

例如:

find([2, 3, 5, 3, 4, 2, 7, 4]) 返回{3:(1, 3), 4:(4, 7)}

def?find(origin,items=[3,?4]):fin?=?dict()for?x?in?iter(items):lst?=?list()for?k,?v?in?enumerate(origin):if?x?==?v:lst.append(k)fin[x]?=?tuple(lst)return?finfind([2,?3,?5,?3,?4,?2,?7,?4])#使用列表解析優化
def?find(origin,items=[3,?4]):fin?=?dict()for?x?in?items:lst?=?list()[lst.append(k)?for?k,?v?in?enumerate(origin)?if?x?==?v]fin[x]?=?tuple(lst)return?finfind([2,?3,?5,?3,?4,?2,?7,?4])