002 exercises
求列表全排列
給定一個非負整數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])轉載于:https://blog.51cto.com/390892467/1749770
總結
以上是生活随笔為你收集整理的002 exercises的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: openvino量化自己训练的yolov
- 下一篇: 国学精典书籍阅读记录