經典例題(Python)


經典例題

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))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM