1.對1-100求和?
方法1 遞歸
def get_sum(n):
"""遞歸解法關鍵點:做什麼/什麼時候結束"""
return n + get_sum(n-1) if n else 0
print(get_sum(100))
方法2 庫函數
print(sum(range(101)))
方法3 循環
sum = 0
for i in range(101):
sum += i
print(sum)
2. 求n的階乘
方法1 庫函數
print(math.factorial(3))
方法2 遞歸
def my_factorial(n):
return n * my_factorial(n-1) if n else 1
print(my_factorial(3))
3.如何在一個函數內部修改全局變量
a = dict(a=1)
b = 2
def test_global():
global b
b += 3
a.update(aa=2)
test_global()
print("a:", a)
print("b:", b)
輸出
a: {'a': 1, 'aa': 2}
b: 5
4. 儘可能多的列出Python內置模塊
os
操作系統相關的模塊,常用os.path
目錄操作、os.environ
系統變量、os.mkdir
創建目錄、os.getcwd
獲取當前目錄、os.remove
刪除文件等等;datetime
日期和時間相關的操作;time
時間戳相關的操作,time.time
當前時間戳,time.sleep
線程休眠;sys
Python環境相關的模塊,sys.path
模塊導入搜索路徑,sys.getsizeof
對象佔用內存數量,sys.maxsize
最大數值;functools
函數式編程的部分常用的函數工具,functools.portial
偏函數,functools.reduce
、functools.wraps
‘struct
用於十六進制打包轉換,如果int和十六進制互轉;shutil
更高級的目錄和文件操作peckle
Python對象系列化和存儲到文件sqlite3
SQLite數據庫接口logging
日誌操作ctype
Python與C交互接口threadding
線程操作multiprocessing
進程操作queue
隊列josn
json編解碼random
隨機數urllib
HTTP網絡請求base64
baseb編碼socket
底層網絡接口
5.字典如何刪除鍵和合並兩個字典
刪除key
d = dict(a=1, b=2)
print("before del:{}".format(d))
d.pop('a')
del d['b']
print("after del:{}".format(d))
before del:{'a': 1, 'b': 2}
after del:{}
以上方法如果刪除一個不存在的key可能會引發KeyError
異常,推薦做法是使用d.pop(key_name, default_value)
, pop其實是從字典裏取這個key的值並刪除,如果不存在的話返回default_value
print({}.pop("my_key", "not exist!"))
not exist!
合併或更新
d1 = dict(c=3, d=4)
d2 = dict(e=5, f=6)
print("d1={}, d2={}".format(d1, d2))
d2.update(d1)
print("d1 merge d2:{}".format(d2))
d1={'c': 3, 'd': 4}, d2={'e': 5, 'f': 6}
d1 merge d2:{'e': 5, 'f': 6, 'c': 3, 'd': 4}