經典例題
1.if嵌套
1.用戶輸入賬號
2.用戶輸入密碼
3.判斷用戶的賬號是不是alex
4.如果賬號是alex在繼續判斷密碼是不是alexdsb
5.賬號和密碼都正確提示用戶alex就是一個dsb
6.如果賬號正確密碼錯誤提示密碼錯誤
7.如果賬號錯誤提示賬號錯誤
user = input("請輸入賬號:")
pwd = input("請輸入密碼:")
if user == "alex":
if pwd == "alexdsb":
print("alex就是一個dsb")
else:
print("密碼錯誤!")
else:
print("賬號錯誤!")
user = input("請輸入賬號:")
pwd = input("請輸入密碼:")
2.車牌區域划分
車牌區域划分, 現給出以下車牌. 根據車牌的信息, 分析出各省的車牌持有量. (選做題)
cars = ['魯A32444','魯B12333','京B8989M','⿊C49678','⿊C46555','滬 B25041']
locals = {'滬':'上海', '⿊':'⿊⻰江', '魯':'⼭東', '鄂':'湖北', '湘':'湖南'}
結果: {'⿊⻰江':2, '⼭東': 2, '上海': 1}
答案:cars = ['魯A32444','魯B12333','京B8989M','⿊C49678','⿊C46555','滬 B25041']
locals = {'滬':'上海', '⿊':'⿊⻰江', '魯':'⼭東', '鄂':'湖北', '湘':'湖南'}
dic = {} # {}
for i in cars:
key = i[0] # 獲取車牌的第一個字
if key in locals:
new_key = locals[key] # 結果的鍵
dic[new_key] = dic.get(new_key,0) + 1 #get到dic中鍵的值,每次加一
print(dic)
3.找小島問題:
給定一個由 '1'(陸地)和 '0'(水)組成的的二維網格,計算島嶼的數量。一個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連接而成的。假設網格的四個邊均被水包圍。
思路:先找一個路地塊.只要與他相鄰的陸地,全都變成非0或1(但本身這一塊1不變),可以是2,3...然后,都循環一遍后,就直接找還有幾個1,就有幾個島
lst = [[1, 1, 0, 0, 0], [1, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 1]] def is_island(lst,i,j): if i < 0 or j < 0 or i >= len(lst) or j >= len(lst[i]): return if lst[i][j] == 1: lst[i][j] = 2 #只要是這個小島上的都變成2,只保留原有的第一塊1 is_island(lst,i,j-1) is_island(lst,i,j+1) is_island(lst,i+1,j) is_island(lst,i-1,j) else: return def count_island(lst): count = 0 for i in range(0,len(lst)): for j in range(0,len(lst[i])): if lst[i][j] == 1: #最后循環一遍地圖,有一個1就是一個小島 is_island(lst,i,j) count += 1 return count print(count_island(lst))
4.請編寫一個python程序,每秒采集本機cpu使用率,並輸出到文件中。
import psutil import time # cpu_res = psutil.cpu_percent()#查看當前電腦的cpu占用率 # print(cpu_res) # 每一秒獲取獲取cpu的占有率 --->持久化保存 # 如何將時間和對應的cpu占有率去匹配 while True: # 獲取當前時間和cpu的占有率 t = time.localtime()#當前時間 cpu_time = '%d:%d:%d' % (t.tm_hour, t.tm_min, t.tm_sec) cpu_res = psutil.cpu_percent()#cpu占用率 print(cpu_res) # 保存在文件中 with open('cpu.txt', 'a+') as f:#寫入文件,注意是a不是w f.write('%s %s \n' % (cpu_time, cpu_res)) time.sleep(1)#一秒后繼續查詢
5.數據格式處理:
假設前端同學通過接口向后端傳了天貓的行業信息,例如: industry_list = [ { "parent_ind" : "女裝", "name" : "連衣裙" }, { "name": "女裝" }, { "parent_ind" : "女裝", "name" : "半身裙" }, { "parent_ind" : "女裝", "name" : "A字裙" }, { "name": "數碼" }, { "parent_ind" : "數碼", "name": "電腦配件" }, { "parent_ind" : "電腦配件", "name": "內存" }, ] 為了取用方便,我們希望可以將其轉換為樹狀格式,例如: { "數碼": { "電腦配件": { "內存" : {} } }, "女裝" : { "連衣裙": {}, "半身裙": {}, "A字裙": {} } } 實現一個方法完成這個轉換,時間復雜度請控制在O(n) def convert_format(data): pass
解題代碼:
industry_list = [ { "parent_ind": "女裝", "name": "連衣裙" }, { "name": "女裝" }, { "parent_ind": "女裝", "name": "半身裙" }, { "parent_ind": "女裝", "name": "A字裙" }, { "name": "數碼" }, { "parent_ind": "數碼", "name": "電腦配件" }, { "parent_ind": "電腦配件", "name": "內存" }, ] def convert_format(data): # 核心思想就是利用地址共用,在add里面放所有能到達的字典的地址, # 而這些地址和dic中調用的內容都是一個地址,所以,修改add的內容就是改dic里的內容 dic = {} # 結果 add = {} # 所有字典的共用地址 spe = {} # 其他情況 for i in data: parent_ind = i.get('parent_ind') name = i.get('name') if not parent_ind: add[name] = dic.setdefault(name, {}) else: if parent_ind in dic: add[name] = dic.get(parent_ind).setdefault(name, {}) #地址共用 elif parent_ind in add: add[name] = add.get(parent_ind).setdefault(name, {})#地址共用 else: spe.setdefault(parent_ind, {}).setdefault(name, {})#地址共用 for k, v in spe.items(): add.setdefault(k, {}).update(v) return dic print(convert_format(industry_list))