旷世神医,完美世界前传下载,完美世界txt全集下载 http://www.lalz.net 你的IT之家,站長(zhǎng)網(wǎng)絡(luò)技術(shù)學(xué)習(xí)、網(wǎng)站賺錢方法交流之家 Tue, 19 Nov 2024 06:29:10 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.7.2 python 連接數(shù)據(jù)庫(kù)出現(xiàn):’cryptography’packageisrequiredforsha256_passwordorcaching_sha2_passwordauthmethods http://www.lalz.net/7270.html http://www.lalz.net/7270.html#respond Wed, 20 Nov 2024 00:33:00 +0000 http://www.lalz.net/?p=7270 python 連接數(shù)據(jù)庫(kù)出現(xiàn):'cryptography'packageisrequiredforsha256_passwordorcaching_sha2_passwordauthmethods的解決方法:

該錯(cuò)誤提示的意思是:sha256_password和caching_sha2_password兩種加密方式需要cryptography。

所以只需要安裝一下cryptography包就可以了: pip install cryptography

]]>
http://www.lalz.net/7270.html/feed 0
2種Python學(xué)生單科成績(jī)信息管理系統(tǒng) http://www.lalz.net/7253.html http://www.lalz.net/7253.html#respond Mon, 14 Oct 2024 00:34:00 +0000 http://www.lalz.net/?p=7253 1.使用字典、循環(huán)重構(gòu)學(xué)生管理系統(tǒng)




import os
 
#存儲(chǔ)操作員信息
adm_dict = {
    "tom": {"username": "tom", "password": "123", "nickname": "tom"},
    "jerry": {"username": "jerry", "password": "456", "nickname": "jerry"}
}
 
#存儲(chǔ)學(xué)員信息
stu_dict = {
    "001": {"id": "001", "name": "張三", "age": "18", "sex": "男", "grade": "98"}
}
 
#存放當(dāng)前操作員昵稱
nick = None
 
while True:
    nick = None         #每次回到首頁時(shí),重置當(dāng)前用戶名稱
    os.system('cls')
    print("      學(xué)生管理系統(tǒng)")
    print("------------------------")
    print("1.操作員登錄")
    print("2.操作員注冊(cè)")
    print("3.退出系統(tǒng)")
    print("------------------------")
    c = input("輸入您的選項(xiàng):").strip()
 
    if c == "1":
        print("       操作員登錄頁")
        print("--------------------------")
        username = input("請(qǐng)輸入賬戶名:").strip()
        password = input("請(qǐng)輸入密碼:").strip()
 
        for adm in adm_dict.values():
            if username == adm['username'] and password == adm['password']:
                nick = adm["nickname"]           # 當(dāng)前登錄用戶名稱
                while True:
                    os.system('cls')
                    print(f"         學(xué)生管理系統(tǒng)-主頁     {[nick]}")
                    print("-------------------------------------")
                    print("1.錄入學(xué)員信息")
                    print("2.刪除學(xué)員信息")
                    print("3.修改學(xué)員信息")
                    print("4.查詢所有學(xué)員")
                    print("5.退出系統(tǒng)")
                    print("-------------------------------------")
                    c2 = input("請(qǐng)輸入選項(xiàng):").strip()
 
                    if c2 == "1":
                        print(f"       學(xué)生管理系統(tǒng)-錄入學(xué)員    {[nick]}")
                        print("-------------------------------------")
                        id = input("請(qǐng)輸入學(xué)號(hào):").strip()
                        name = input("請(qǐng)輸入姓名:").strip()
                        age = input("請(qǐng)輸入年齡:").strip()
                        sex = input("請(qǐng)輸入性別:").strip()
                        grade = input("請(qǐng)輸入計(jì)算機(jī)成績(jī):").strip()
                        print("-------------------------------------")
                        stu_dict[id] = {"id": id, "name": name, "age": age, "sex": sex, "grade": grade}
                        input("學(xué)員信息錄入成功,按任意鍵返回主頁")
 
                    elif c2 == "2":
                        print(f"       學(xué)生管理系統(tǒng)-刪除學(xué)員    {[nick]}")
                        print("-------------------------------------")
                        id = input("請(qǐng)輸入要?jiǎng)h除學(xué)員的學(xué)號(hào):").strip()
                        print("------------------------------------------------------------------")
                        for stu in stu_dict.values():
                            if id == stu['id']:
                                print('學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----')
                                print(stu.get("id"),  stu.get("name"),  stu.get("age"),
                                      stu.get("sex"),  stu.get("grade"), sep="----+-----")
                                print("------------------------------------------------------------------")
                                confirm = input("確認(rèn)刪除(Y/N)?").upper()
                                if confirm == "Y":
                                    stu_dict.pop(id)
                                    input("學(xué)員信息刪除成功,按任意鍵返回主頁")
                                else:
                                    input("用戶取消了刪除操作,按任意鍵返回主頁")
                                break
                        else:
                            input("不存在該學(xué)號(hào)對(duì)應(yīng)的學(xué)生,按任意鍵返回主頁面!")
 
                    elif c2 == "3":
                        print(f"       學(xué)生管理系統(tǒng)-修改學(xué)員信息    {[nick]}")
                        print("-----------------------------------------")
                        id = input("請(qǐng)輸入要修改的學(xué)號(hào):").strip()
                        print("------------------------------------------------------------------")
                        for stu in stu_dict.values():
                            if id == stu['id']:
                                print('學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----')
                                print(stu.get("id"), stu.get("name"), stu.get("age"),
                                      stu.get("sex"), stu.get("grade"), sep="----+-----")
                                print("------------------------------------------------------------------")
                                ch = input("請(qǐng)輸入要修改的屬性(1.姓名 2.性別 3.年齡):").strip()
 
                                if ch == "1":  # 修改姓名
                                    name = input("請(qǐng)輸入新的姓名:").strip()
                                    stu["name"] = name
                                elif ch == "2":  # 修改性別
                                    sex = input("請(qǐng)輸入新的性別:").strip()
                                    stu["sex"] = sex
                                elif ch == "3":  # 修改年齡
                                    age = input("請(qǐng)輸入新的年齡:").strip()
                                    stu["age"] = age
                                else:
                                    input("輸入錯(cuò)誤,按任意鍵返回主頁")
                                    break
                                input("修改完成,按任意鍵返回主頁")
                                break
                        else:
                            input("沒有查詢到該編號(hào)的學(xué)員,按任意鍵返回主頁")
 
                    elif c2 == "4":
                        print(f"                     學(xué)生管理系統(tǒng)-查看所有學(xué)員                  {[nick]}")
                        print("---------------------------------------------------------------------")
                        print("學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----")
                        for stu in stu_dict.values():
                            print(stu.get("id"), stu.get("name"), stu.get("age"),
                                  stu.get("sex"), stu.get("grade"), sep="----+-----")
                        print("---------------------------------------------------------------------")
                        input("按任意鍵返回主頁")
 
                    elif c2 == "5":
                        input("按下任意鍵退出系統(tǒng)")
                        exit()
 
                    else:
                        input("按任意鍵重新選擇")
 
        else:
            input("賬號(hào)或密碼錯(cuò)誤,按下任意鍵回到首頁!")
 
    elif c == "2":
        print("       操作員注冊(cè)頁")
        print("-------------------------")
        username = input("請(qǐng)輸入用戶名:").strip()
        flag = 0               #字典在遍歷過程中不允許修改,設(shè)置標(biāo)志flag確定后續(xù)操作
        for adm in adm_dict.values():
            if username == adm['username']:
                flag = 0
                break
            else:
                flag = 1
 
        if flag == 0:
            input("該賬號(hào)已存在,按任意鍵返回首頁")
        else:
            password = input("請(qǐng)輸入密碼:").strip()
            password2 = input("請(qǐng)確認(rèn)密碼:").strip()
            nickname = input("請(qǐng)輸入昵稱:").strip()
            if password == password2:
                adm_dict[username] = {"username": username, "password": password, "nickname": nickname}
                print("-------------注冊(cè)成功-------------")
                input("請(qǐng)按下任意鍵回到首頁")
            else:
                input("兩次密碼不一致,請(qǐng)按下任意鍵回到首頁")
 
    elif c == "3":
        input("按下任意鍵退出系統(tǒng)!")
        exit()
 
    else:
        print("輸入有誤,重新輸入")

2.使用字典、函數(shù),構(gòu)建學(xué)生管理系統(tǒng)

import os
 
#存儲(chǔ)操作員信息
adm_dict = {
    "tom": {"username": "tom", "password": "123", "nickname": "tom"},
    "jerry": {"username": "jerry", "password": "456", "nickname": "jerry"}
}
 
#存儲(chǔ)學(xué)員信息
stu_dict = {
    "001": {"id": "001", "name": "張三", "age": "18", "sex": "男", "grade": "98"}
}
 
#存放當(dāng)前操作員昵稱
nick = None
 
 
####################################################### 退出系統(tǒng)函數(shù) #########
def do_exit():
    global nick  #每次退出系統(tǒng)時(shí)重置當(dāng)前用戶名稱
    nick = None
    input("按下任意鍵退出系統(tǒng)!")
    exit()
 
 
########################################################## 注冊(cè)頁函數(shù) ############
def register_page():
    print("       操作員注冊(cè)頁")
    print("-------------------------")
    username = input("請(qǐng)輸入用戶名:").strip()
    flag = 0  #字典在遍歷過程中不允許修改,設(shè)置標(biāo)志flag確定后續(xù)操作
    for adm in adm_dict.values():
        if username == adm["username"]:
            flag = 0
            break
        else:
            flag = 1
 
    if flag == 0:
        n = input("該賬號(hào)已存在,按1重新注冊(cè),按其它鍵回到登錄菜單")
        if n == "1":
            return register_page()
        else:
            return login_menu()
    else:
        password = input("請(qǐng)輸入密碼:").strip()
        password2 = input("請(qǐng)確認(rèn)密碼:").strip()
        nickname = input("請(qǐng)輸入昵稱:").strip()
        if password == password2:
            adm_dict[username] = {"username": username, "password": password, "nickname": nickname}
            print("-------------注冊(cè)成功-------------")
            input("請(qǐng)按下任意鍵返回登錄菜單")
            return login_menu()
        else:
            input("兩次密碼不一致,請(qǐng)按下任意鍵重新注冊(cè)")
            return register_page()
 
 
########################################################## 登錄頁函數(shù) ############
def login_page():
    global nick  #每次回到登錄頁時(shí),重置當(dāng)前用戶名稱
    nick = None
    print("       操作員登錄頁")
    print("--------------------------")
    username = input("請(qǐng)輸入賬戶名:").strip()
    password = input("請(qǐng)輸入密碼:").strip()
 
    for adm in adm_dict.values():
        if username == adm["username"] and password == adm["password"]:
            nick = adm["nickname"]  #當(dāng)前登錄用戶名稱
            return function_menu()
    else:
        input("賬號(hào)或密碼錯(cuò)誤,按下任意鍵回到首頁!")
        return login_menu()
 
 
########################################################## 功能頁函數(shù) ############
def function_menu():
    print(f"         學(xué)生管理系統(tǒng)-主頁     {[nick]}")
    print("-------------------------------------")
    print("1.錄入學(xué)員信息")
    print("2.刪除學(xué)員信息")
    print("3.修改學(xué)員信息")
    print("4.查詢所有學(xué)員")
    print("5.退出登錄")
    print("6.退出系統(tǒng)")
    print("-------------------------------------")
    c2 = input("請(qǐng)輸入選項(xiàng):").strip()
 
    if c2 == "1":
        add()
    elif c2 == "2":
        delete()
    elif c2 == "3":
        update()
    elif c2 == "4":
        search()
    elif c2 == "5":
        return login_menu()
    elif c2 == "6":
        return do_exit()
    else:
        input("輸入不正確,按下任意鍵回到功能主頁")
        return function_menu()
 
 
########################################################## 添加學(xué)員函數(shù) ############
def add():
    print(f"       學(xué)生管理系統(tǒng)-錄入學(xué)員    {[nick]}")
    print("-------------------------------------")
    id = input("請(qǐng)輸入學(xué)號(hào):").strip()
    name = input("請(qǐng)輸入姓名:").strip()
    age = input("請(qǐng)輸入年齡:").strip()
    sex = input("請(qǐng)輸入性別:").strip()
    grade = input("請(qǐng)輸入計(jì)算機(jī)成績(jī):").strip()
    print("-------------------------------------")
    stu_dict[id] = {"id": id, "name": name, "age": age, "sex": sex, "grade": grade}
    input("學(xué)員信息錄入成功,按任意鍵返回功能主頁")
    return function_menu()
 
 
########################################################## 刪除學(xué)員函數(shù) ############
def delete():
    print(f"       學(xué)生管理系統(tǒng)-刪除學(xué)員    {[nick]}")
    print("-------------------------------------")
    id = input("請(qǐng)輸入要?jiǎng)h除學(xué)員的學(xué)號(hào):").strip()
    print("------------------------------------------------------------------")
    for stu in stu_dict.values():
        if id == stu["id"]:
            print("學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----")
            print(stu.get("id"), stu.get("name"), stu.get("age"),
                  stu.get("sex"), stu.get("grade"), sep="----+-----")
            print("------------------------------------------------------------------")
            confirm = input("確認(rèn)刪除(Y/N)?").upper()
            if confirm == "Y":
                stu_dict.pop(id)
                input("學(xué)員信息刪除成功,按任意鍵返回功能主頁")
                return function_menu()
            else:
                input("用戶取消了刪除操作,按任意鍵返回功能主頁")
                return function_menu()
    else:
        input("不存在該學(xué)號(hào)對(duì)應(yīng)的學(xué)生,按任意鍵返回功能頁面!")
        return function_menu()
 
 
########################################################## 修改學(xué)員信息函數(shù) ############
def update():
    print(f"       學(xué)生管理系統(tǒng)-修改學(xué)員信息    {[nick]}")
    print("-----------------------------------------")
    id = input("請(qǐng)輸入要修改的學(xué)號(hào):").strip()
    print("------------------------------------------------------------------")
    for stu in stu_dict.values():
        if id == stu["id"]:
            print("學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----")
            print(stu.get("id"), stu.get("name"), stu.get("age"),
                  stu.get("sex"), stu.get("grade"), sep="----+-----")
            print("------------------------------------------------------------------")
            ch = input("請(qǐng)輸入要修改的屬性(1.姓名 2.性別 3.年齡):").strip()
 
            if ch == "1":  # 修改姓名
                name = input("請(qǐng)輸入新的姓名:").strip()
                stu["name"] = name
            elif ch == "2":  # 修改性別
                sex = input("請(qǐng)輸入新的性別:").strip()
                stu["sex"] = sex
            elif ch == "3":  # 修改年齡
                age = input("請(qǐng)輸入新的年齡:").strip()
                stu["age"] = age
            else:
                input("輸入錯(cuò)誤,按任意鍵返回功能主頁")
                return function_menu()
            input("修改完成,按任意鍵返回功能主頁")
            return function_menu()
    else:
        input("沒有查詢到該編號(hào)的學(xué)員,按任意鍵返回功能主頁")
        return function_menu()
 
 
########################################################## 查詢學(xué)員函數(shù) ############
def search():
    print(f"                     學(xué)生管理系統(tǒng)-查看所有學(xué)員                  {[nick]}")
    print("---------------------------------------------------------------------")
    print("學(xué)號(hào)----+-----姓名----+-----年齡----+-----性別----+-----計(jì)算機(jī)成績(jī)----")
    for stu in stu_dict.values():
        print(stu.get("id"), stu.get("name"), stu.get("age"),
              stu.get("sex"), stu.get("grade"), sep="----+-----")
    print("---------------------------------------------------------------------")
    input("按任意鍵返回功能主頁")
    return function_menu()
 
 
########################################################## 首頁函數(shù) ############
def login_menu():
    os.system("cls")
    print("      學(xué)生管理系統(tǒng)")
    print("------------------------")
    print("1.操作員登錄")
    print("2.操作員注冊(cè)")
    print("3.退出系統(tǒng)")
    print("------------------------")
    c = input("輸入您的選項(xiàng):").strip()
 
    if c == "1":
        return login_page()
    elif c == "2":
        return register_page()
    elif c == "3":
        return do_exit()
    else:
        input("輸入有誤,按任意鍵回到登錄菜單")
        return login_menu()
 
 
########################################################## 程序入口 ############
if __name__ == "__main__":
    login_menu()

2段代碼均來自網(wǎng)絡(luò),親測(cè)可用。小編6多年python開發(fā)經(jīng)驗(yàn),,有PYTHON需求的可以加微信web_445i。

]]>
http://www.lalz.net/7253.html/feed 0
Python實(shí)現(xiàn)簡(jiǎn)單的學(xué)生通訊錄信息管理系統(tǒng) http://www.lalz.net/7252.html http://www.lalz.net/7252.html#respond Sun, 13 Oct 2024 00:33:00 +0000 http://www.lalz.net/?p=7252 # 定義一個(gè)大列表來保存學(xué)生信息 students = [] # 功能菜單函數(shù) def menu(): print('-' * 40) print(' 學(xué)生管理系統(tǒng) v1.0') print('1.添加學(xué)生信息') print('2.刪除學(xué)生信息') print('3.修改學(xué)生信息') print('4.查詢學(xué)生信息') print('5.遍歷所有學(xué)生信息') print('6.保存信息到文件') print('7.退出系統(tǒng)') print('-' * 40) # 添加學(xué)生功能函數(shù) def add_student(): student = {} # 用字典保存每個(gè)學(xué)生的信息,然后將它寫入students列表 student['name'] = input('請(qǐng)輸入學(xué)生姓名:') student['age'] = int(input('請(qǐng)輸入學(xué)生年齡:')) student['mobile'] = input('請(qǐng)輸入學(xué)生電話號(hào)碼:') students.append(student) print(students) # 刪除學(xué)生信息功能函數(shù) def del_student(): name = input('請(qǐng)輸入要?jiǎng)h除學(xué)生的姓名:') for i in students: if i['name'] == name: students.remove(i) print('刪除成功') print(students) break else: print('該學(xué)生不存在') # 修改學(xué)生信息功能函數(shù) def edit_student(): name = input('請(qǐng)輸入要修改學(xué)生的姓名:') for i in students: if i['name'] == name: i['name'] = input('請(qǐng)輸入修改后學(xué)生的姓名:') i['age'] = int(input('請(qǐng)輸入修改后學(xué)生的年齡:')) i['mobile'] = int(input('請(qǐng)輸入修改后學(xué)生的電話:')) print('您要修改的學(xué)生信息修改成功') break else: print('您要修改的學(xué)生信息未找到') # 查詢學(xué)生的信息功能函數(shù) def find_studet(): name = input('請(qǐng)輸入要查詢學(xué)生的姓名:') for i in students: if i['name'] == name: print(i) break else: print('很抱歉,沒有該學(xué)生的信息') # 遍歷所有學(xué)生的信息的功能函數(shù) def find_all_student(): for i in students: print(i) # 保存students數(shù)據(jù)到data.txt文件功能的函數(shù) def save_data_to_file(): global students f = open('data.txt', 'w', encoding='utf-8') f.write(str(students)) f.close() print('信息保存成功') # 定義函數(shù)load_data(),把文件數(shù)據(jù)加載到程序 def load_data(): f = open('data.txt', 'r', encoding='utf-8') content = f.read() # str類型的字符串 # 判斷人間是否為空 if not content: return # 終止此循環(huán),不需要在繼續(xù)加載了 else: # 如果代碼繼續(xù)向下執(zhí)行代表不為空,則進(jìn)行類型轉(zhuǎn)換 global students # 聲明我們接下來使用的變量是全局變量 students = eval(content) f.close() # 加載數(shù)據(jù)文件類容到列表students中 load_data() while True: menu() num = int(input('請(qǐng)輸入編號(hào)進(jìn)行操作:')) if num == 1: # 添加學(xué)生信息 add_student() elif num == 2: # 刪除學(xué)生信息 find_all_student() del_student() elif num == 3: # 修改學(xué)生信息 find_all_student() edit_student() elif num == 4: # 查詢學(xué)生信息 find_studet() elif num == 5: # 遍歷學(xué)生信息 find_all_student() elif num == 6: # 保存學(xué)生信息 save_data_to_file() elif num == 7: # 退出系統(tǒng) print('歡迎下次使用') print('退出系統(tǒng)成功') break else: print('輸入不合法,請(qǐng)重新輸入')

這是一個(gè)只有姓名、年齡、電話的可以增刪改的簡(jiǎn)易python信息管理系統(tǒng)。當(dāng)然這個(gè)管理系統(tǒng)沒有處理異常輸入等問題,后面小編會(huì)發(fā)布更全面的python信息管理系統(tǒng)

另:小編6多年python開發(fā)經(jīng)驗(yàn),,有PYTHON需求的可以加微信web_445i。

]]>
http://www.lalz.net/7252.html/feed 0
Pycharm專業(yè)版和社區(qū)版什么區(qū)別 http://www.lalz.net/7247.html http://www.lalz.net/7247.html#respond Thu, 26 Sep 2024 00:33:00 +0000 http://www.lalz.net/?p=7247 PyCharm是JetBrains公司開發(fā)的一款流行的Python集成開發(fā)環(huán)境(IDE),它提供了兩個(gè)主要的版本:專業(yè)版(Professional)和社區(qū)版(Community)。以下是這兩個(gè)版本的主要區(qū)別:

  1. 功能差異
  • 專業(yè)版:提供了完整的Python開發(fā)工具套件,包括Web開發(fā)、Python分析器、Python Web框架、遠(yuǎn)程開發(fā)、數(shù)據(jù)庫(kù)支持等高級(jí)功能。此外,還提供了服務(wù)器環(huán)境支持,允許在本地和云端進(jìn)行代碼編寫和執(zhí)行。
  • 社區(qū)版:是免費(fèi)的,包含了基本的Python庫(kù)和工具,可以實(shí)現(xiàn)基本的Python用法。但是與專業(yè)版相比,在功能上有所限制,例如不支持Web開發(fā)工具、遠(yuǎn)程開發(fā)和數(shù)據(jù)庫(kù)支持等高級(jí)功能。
  1. 授權(quán)方式
  • 專業(yè)版:需要付費(fèi)購(gòu)買激活碼才能使用。
  • 社區(qū)版:可以免費(fèi)下載和使用,但不能用于商業(yè)目的。
  1. 適用人群
  • 專業(yè)版:適合專業(yè)開發(fā)者、企業(yè)用戶和大型項(xiàng)目使用,提供了豐富的功能和工具,可以提高開發(fā)效率和質(zhì)量。
  • 社區(qū)版:適合初學(xué)者、學(xué)生和小型項(xiàng)目使用,提供了基本的功能和工具,可以滿足基本的開發(fā)需求。
  1. 其他功能
  • 專業(yè)版:還提供了性能分析、代碼覆蓋率分析、GUI設(shè)計(jì)器等高級(jí)功能。
  • 社區(qū)版:還提供了代碼版本控制、代碼格式化、代碼檢查等基本功能。

如果你是一名專業(yè)的Python開發(fā)者,需要使用到Web開發(fā)、數(shù)據(jù)庫(kù)支持等高級(jí)功能,那么專業(yè)版是更好的選擇。如果你是一名Python初學(xué)者或愛好者,想要學(xué)習(xí)和試驗(yàn)Python編程,那么社區(qū)版是一個(gè)不錯(cuò)的選擇,因?yàn)樗嘶镜腜ython庫(kù)和工具,可以實(shí)現(xiàn)基本的Python用法,而且完全免費(fèi)。

]]>
http://www.lalz.net/7247.html/feed 0
Python 格式化字符串的幾種方法及優(yōu)缺點(diǎn) http://www.lalz.net/7246.html http://www.lalz.net/7246.html#respond Wed, 25 Sep 2024 00:33:00 +0000 http://www.lalz.net/?p=7246 格式化字符串是一種常見需求,今天我們說下Python格式化字符串的幾種方法,并討論它們的優(yōu)缺點(diǎn)。

1. 使用百分號(hào) %

name = "Alice"
age = 30
formatted_string = "Hello, %s. You are %d years old." % (name, age)
print(formatted_string)

優(yōu)點(diǎn):

  • 語法簡(jiǎn)單,易于理解。
  • 在Python早期版本中使用廣泛。
    缺點(diǎn):
  • 類型指定符(如%s, %d)容易出錯(cuò)。
  • 當(dāng)格式化復(fù)雜字符串時(shí),可讀性較差。
  • 不支持字典解包和變量自動(dòng)識(shí)別。

2. 使用str.format()方法

name = "Bob"
age = 25
formatted_string = "Hello, {}. You are {} years old.".format(name, age)
print(formatted_string)

或者使用索引:

formatted_string = "Hello, {0}. You are {1} years old.".format(name, age)
print(formatted_string)

優(yōu)點(diǎn):

  • 支持按順序、按索引和按關(guān)鍵字傳參,更加靈活。
  • 易于閱讀和維護(hù)。
  • 支持對(duì)字符串進(jìn)行更復(fù)雜的格式化。
    缺點(diǎn):
  • 語法比原始的%格式化稍顯繁瑣。
  • 在處理大量參數(shù)時(shí),仍然可能不夠直觀。

3. 使用f-string(Python 3.6+)

name = "Charlie"
age = 35
formatted_string = f"Hello, {name}. You are {age} years old."
print(formatted_string)

優(yōu)點(diǎn):

  • 語法簡(jiǎn)潔明了,可讀性極高。
  • 可以直接在字符串中嵌入表達(dá)式,非常靈活。
  • 性能比%str.format()方法更好。
    缺點(diǎn):
  • 只在Python 3.6及以上版本中可用。
  • 如果在字符串插值中不小心使用了復(fù)雜表達(dá)式,可能會(huì)降低代碼的可讀性。

總結(jié)

每種方法都有其適用場(chǎng)景。隨著Python版本的更新,f-string因其簡(jiǎn)潔和強(qiáng)大的功能,在許多情況下成為首選。然而,了解不同的格式化方法仍然很有必要,尤其是在維護(hù)舊代碼庫(kù)或與不支持最新特性的Python版本打交道時(shí)。在選擇格式化方法時(shí),應(yīng)考慮代碼的可讀性、維護(hù)性以及性能需求。

6、7年python爬蟲,web開發(fā)工作經(jīng)驗(yàn),

]]>
http://www.lalz.net/7246.html/feed 0
python 為什么session.headers打印的不是發(fā)送的請(qǐng)求頭 http://www.lalz.net/7245.html http://www.lalz.net/7245.html#respond Tue, 24 Sep 2024 00:33:00 +0000 http://www.lalz.net/?p=7245 今天寫了段pyton代碼

session = requests.session()
session.post(url,headers=headers,data=data)
print(session.headers)

但是打印的結(jié)果卻是

{'User-Agent': 'python-requests/2.28.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}

為什么會(huì)這樣呢?

原來print(session.headers) 打印的是會(huì)話對(duì)象的默認(rèn)請(qǐng)求頭,而不是我發(fā)送的請(qǐng)求頭。

session.headers 通常包含了一些默認(rèn)的請(qǐng)求頭,這些請(qǐng)求頭在每次使用會(huì)話發(fā)送請(qǐng)求時(shí)都會(huì)被發(fā)送。這些默認(rèn)的請(qǐng)求頭可能包括:

  • User-Agent: 標(biāo)識(shí)客戶端的瀏覽器和操作系統(tǒng)信息。
  • Accept: 客戶端能夠處理的內(nèi)容類型。
  • Accept-Language: 客戶端偏好的語言。
  • Accept-Encoding: 客戶端能夠接受的壓縮格式。
  • DNT: Do Not Track,表示用戶不希望被追蹤。
  • Connection: 通常設(shè)置為 keep-alive,表示希望保持連接。

在我的代碼中,即使在 post 方法中指定了 headers 參數(shù),session.headers 打印的仍然是會(huì)話對(duì)象的默認(rèn)請(qǐng)求頭,而不是我發(fā)送的請(qǐng)求頭。這是因?yàn)?post 方法中的 headers 參數(shù)是用于覆蓋會(huì)話的默認(rèn)請(qǐng)求頭的,但它不會(huì)改變會(huì)話對(duì)象的默認(rèn)請(qǐng)求頭。

如果想要查看發(fā)送的請(qǐng)求頭,需要在發(fā)送請(qǐng)求后立即打印響應(yīng)對(duì)象的請(qǐng)求頭。例如:

pythonresponse = session.post(url, headers=headers, data=data)
print(response.request.headers)  # 這將打印出實(shí)際發(fā)送的請(qǐng)求頭

請(qǐng)注意,response.request.headers 是從響應(yīng)對(duì)象中獲取的,它包含了實(shí)際發(fā)送到服務(wù)器的請(qǐng)求頭。

]]>
http://www.lalz.net/7245.html/feed 0
python中‘模塊,包,庫(kù)’是什么意思 http://www.lalz.net/7239.html http://www.lalz.net/7239.html#respond Wed, 11 Sep 2024 00:57:00 +0000 http://www.lalz.net/?p=7239 在Python中,“模塊”、“包”和“庫(kù)”這幾個(gè)術(shù)語經(jīng)常被提及,它們之間有一定的關(guān)聯(lián)性,但也各有不同的含義。

模塊(Module)

  • 定義:模塊是一個(gè)包含Python定義和聲明的文件,文件名就是模塊名加上.py后綴。模塊可以包含函數(shù)、類、變量等。
  • 作用:模塊的主要目的是將代碼分割成可重用的單元,提高代碼的可維護(hù)性和可讀性。
  • 示例:一個(gè)名為mymodule.py的文件就是一個(gè)模塊。

包(Package)

  • 定義:包是一個(gè)包含多個(gè)模塊的目錄,并且在這個(gè)目錄下必須有一個(gè)名為__init__.py的文件,這個(gè)文件可以是空的,也可以包含初始化代碼。
  • 作用:包允許模塊以層次結(jié)構(gòu)的方式進(jìn)行組織,從而更好地管理具有相關(guān)功能的模塊。
  • 示例:一個(gè)名為mypackage的目錄,其中包含__init__.py和多個(gè)模塊文件,如module1.pymodule2.py等。

庫(kù)(Library)

  • 定義:庫(kù)的概念并非Python里的概念,而是從其他編程語言中引入的。庫(kù)通常指的是一系列模塊或包的集合,它們一起提供特定的一組功能。
  • 作用:庫(kù)提供了一種方式,讓開發(fā)者可以不必重新編寫代碼就能實(shí)現(xiàn)某些功能。Python標(biāo)準(zhǔn)庫(kù)是隨Python安裝一起提供的庫(kù)。
  • 示例requests是一個(gè)常用的HTTP庫(kù),它包含了多個(gè)模塊和包,用于處理網(wǎng)絡(luò)請(qǐng)求。

關(guān)聯(lián)性

  • 模塊與包:包是由多個(gè)模塊組成的,模塊是包的基本組成單元。
  • 包與庫(kù):一個(gè)庫(kù)可以包含多個(gè)包,也可以是單個(gè)的大型模塊。包和庫(kù)的概念有時(shí)可以互換使用,但實(shí)際上庫(kù)通常是指更廣泛的功能集合。
    在Python編程實(shí)踐中,模塊、包和庫(kù)的概念是非常重要的,它們幫助你組織代碼,使得代碼更加模塊化、可維護(hù)和可重用。
]]>
http://www.lalz.net/7239.html/feed 0
2024年IT行業(yè)編程語言趨勢(shì)分析:Java、Python、Golang等的競(jìng)爭(zhēng)力與應(yīng)用領(lǐng)域 http://www.lalz.net/7169.html http://www.lalz.net/7169.html#respond Sun, 16 Jun 2024 00:02:00 +0000 http://www.lalz.net/?p=7169 很多想入行編程的同學(xué)都在疑惑到底要選哪種語言進(jìn)行學(xué)習(xí),本文將分析當(dāng)前市場(chǎng)上幾種主流編程語言的競(jìng)爭(zhēng)力、應(yīng)用領(lǐng)域以及未來的發(fā)展趨勢(shì),幫助開發(fā)者和企業(yè)做出更明智的技術(shù)選型。

Java:業(yè)務(wù)開發(fā)的中堅(jiān)力量
Java以其跨平臺(tái)的特性、穩(wěn)定的性能和成熟的生態(tài)系統(tǒng),一直是業(yè)務(wù)開發(fā)的首選語言。盡管面臨競(jìng)爭(zhēng)激烈的市場(chǎng)環(huán)境,Java的”面寬”和”天花板高”的特點(diǎn)使其在企業(yè)級(jí)應(yīng)用開發(fā)中保持著不可替代的地位。Java的生態(tài)系統(tǒng)完善,社區(qū)支持強(qiáng)大,為企業(yè)提供了豐富的工具和框架,以支持復(fù)雜的業(yè)務(wù)需求。

Golang:云原生的新星
Golang以其簡(jiǎn)潔的語法、高效的并發(fā)處理能力和輕量級(jí)的運(yùn)行環(huán)境,在云原生領(lǐng)域迅速崛起。雖然在一二線城市的大規(guī)模公司中,Golang的”天花板”可能略低于Java,但其在微服務(wù)架構(gòu)、容器化和分布式系統(tǒng)中的應(yīng)用前景廣闊。Golang的簡(jiǎn)潔性和性能優(yōu)勢(shì),使其成為構(gòu)建現(xiàn)代云基礎(chǔ)設(shè)施的理想選擇。

Python:非專業(yè)開發(fā)者的利器
Python以其易讀性和易學(xué)性,成為非專業(yè)開發(fā)者的首選語言。在爬蟲、數(shù)據(jù)分析、自動(dòng)化測(cè)試以及人工智能領(lǐng)域,Python展現(xiàn)出了強(qiáng)大的應(yīng)用潛力。

C/C++:底層開發(fā)的基石
C和C++以其接近硬件的特性,在嵌入式系統(tǒng)、底層類庫(kù)開發(fā)和驅(qū)動(dòng)編寫等領(lǐng)域占據(jù)著重要地位。C語言在汽車應(yīng)用等領(lǐng)域的應(yīng)用廣泛,而C++則以其面向?qū)ο蟮奶匦裕陂_發(fā)高性能的音視頻類庫(kù)、應(yīng)用軟件和數(shù)據(jù)庫(kù)軟件方面具有優(yōu)勢(shì)。

C#:微軟生態(tài)的得力助手
C#作為微軟.NET框架的核心語言,與Azure云服務(wù)的緊密集成,使其在企業(yè)級(jí)應(yīng)用和游戲開發(fā)中具有獨(dú)特的優(yōu)勢(shì)。C#的上位機(jī)開發(fā)和游戲前端腳本編寫能力,為開發(fā)者提供了豐富的工具和框架支持。

JavaScript/TypeScript:前端開發(fā)的全能選手
JavaScript和TypeScript在前端開發(fā)領(lǐng)域的地位無可撼動(dòng)。隨著Node.js的興起,JavaScript也成為了全棧開發(fā)的熱門選擇。JavaScript的靈活性和廣泛的應(yīng)用場(chǎng)景,使其成為構(gòu)建現(xiàn)代Web應(yīng)用不可或缺的技術(shù)。

其他語言:多樣化的選擇
Objective-C、Swift、Kotlin、Scala等語言在特定領(lǐng)域或平臺(tái)具有獨(dú)特的優(yōu)勢(shì)。例如,Swift在iOS開發(fā)中的主導(dǎo)地位,Kotlin在Android開發(fā)中的流行等。Rust以其安全性和性能優(yōu)勢(shì),在系統(tǒng)編程領(lǐng)域逐漸受到關(guān)注。而ArkTs作為鴻蒙系統(tǒng)的開發(fā)語言,也展現(xiàn)出了其在特定平臺(tái)上的潛力。

結(jié)語
在2024年的IT行業(yè)中,各種編程語言都有其獨(dú)特的應(yīng)用場(chǎng)景和優(yōu)勢(shì)。開發(fā)者和企業(yè)在選擇技術(shù)棧時(shí),應(yīng)根據(jù)自身需求和市場(chǎng)趨勢(shì),做出合理的技術(shù)選型。同時(shí),隨著技術(shù)的不斷發(fā)展,保持對(duì)新興技術(shù)的敏感度和學(xué)習(xí)能力,也是在IT行業(yè)保持競(jìng)爭(zhēng)力的關(guān)鍵。

]]>
http://www.lalz.net/7169.html/feed 0
python程序?qū)崿F(xiàn):a字符串里是否有至少連續(xù)3個(gè)字符串與b一個(gè)字符串里的相同 http://www.lalz.net/7159.html http://www.lalz.net/7159.html#respond Wed, 10 Apr 2024 00:35:00 +0000 http://www.lalz.net/?p=7159 都說現(xiàn)在中國(guó)的ai也發(fā)展的怎么怎么好,于是我就測(cè)試了一個(gè)很小的問題:用python程序?qū)崿F(xiàn)有2個(gè)字符串a(chǎn),b,如果a字符串里有至少連續(xù)3個(gè)字符串與b一個(gè)字符串里的相同,則是真,a,b字符串長(zhǎng)度都都不確定

用文心一言得出的代碼如下:

def has_consecutive_triplets_with_other_string(s1, s2):
    # 獲取s2中所有可能的子字符串
    substrings = [s2[i:j] for i in range(len(s2)) for j in range(i + 1, len(s2) + 1)]

    # 遍歷s2的所有子字符串
    for substring in substrings:
        # 使用正則表達(dá)式查找s1中連續(xù)三個(gè)相同的子字符串
        pattern = rf"({re.escape(substring)}){{{3,}}}"
        if re.search(pattern, s1):
            return True

            # 如果沒有找到符合條件的子字符串,返回False
    return False


# 示例
s1 = "hellohellohelloabcabc"
s2 = "abc"
s3 = "xyz"

print(has_consecutive_triplets_with_other_string(s1, s2))  # 輸出: True
print(has_consecutive_triplets_with_other_string(s1, s3))  # 輸出: False

看它一陣操作猛如虎,還有輸出,結(jié)果卻運(yùn)行不了,自己加了import re還是不行,看代碼,你說你都遍歷了,直接判斷不就行了,為什么要使用正則?算了試試智普清言:

def contains_substring(a, b):
# 遍歷字符串b中的每個(gè)字符
for char_b in b:
# 檢查char_b在a中是否連續(xù)出現(xiàn)至少3次
if char_b * 3 in a:
return True
return False

測(cè)試函數(shù)

test_a = "abcdeeeffg"
test_b = "ef"
contains_substring(test_a, test_b)

直接都沒明白意思,直接給個(gè)白眼。

下面還是請(qǐng)我們真正的AI,CHATGPT:

def has_common_substring(a, b):
# Check for any common substring of length 3 or more
for i in range(len(a) - 2):
# Extract 3 consecutive characters from string 'a'
substring = a[i:i+3]
# Check if these 3 characters are in string 'b'
if substring in b:
return True
return False

# Example usage:
a = 'abc123'
b = '9abc456'
result = has_common_substring(a, b)
print(result) # Output would be True if there is a common substring of length 3 or more

完美,只要改你的字符串就行了,最后文心一言的只要稍微改下也可以用,自己試試吧?

]]>
http://www.lalz.net/7159.html/feed 0
python程序?qū)崿F(xiàn):刪除指定句子前所有信息 http://www.lalz.net/7156.html http://www.lalz.net/7156.html#respond Tue, 09 Apr 2024 01:03:00 +0000 http://www.lalz.net/?p=7156 現(xiàn)在AI發(fā)展迅速,我們做網(wǎng)站也要利用好這個(gè)工具。今天在訓(xùn)練AI的時(shí)候,我把一個(gè)TXT文件到知識(shí)庫(kù)時(shí),一直上傳不了,只好用python程序平分分成了幾份,但是上傳文件到后面還是有一部分失敗。那就只能把后面的再分成更小的文件上傳,于是就要找到已經(jīng)上傳的給刪掉。實(shí)現(xiàn)代碼如下:

def delete_before_first_occurrence(input_file, output_file, sentence):
    with open(input_file, 'r', encoding='utf-8') as file:
        content = file.read()

        # 找到第一次出現(xiàn)句子的位置
    index = content.find(sentence)
    if index != -1:
        # 刪除句子之前的所有內(nèi)容
        content = content[index:]
    else:
        print(f"句子 '{sentence}' 未在文件中找到。")
        return

        # 將修改后的內(nèi)容寫回文件
    with open(output_file, 'w', encoding='utf-8') as file:
        file.write(content)

    # 使用函數(shù)


input_txt_file = '高中資料.txt'  # 輸入文件名
output_txt_file = '高中資料n.txt'  # 輸出文件名,也可以是原文件名以覆蓋原文件
sentence_to_find = '二是考慮到第一志愿考生入學(xué)后專業(yè)思想穩(wěn)定'

delete_before_first_occurrence(input_txt_file, output_txt_file, sentence_to_find)

請(qǐng)注意以下幾點(diǎn):

你需要替換input_txt_file和output_txt_file為你實(shí)際的文件名。如果你想覆蓋原文件,可以將output_txt_file設(shè)置為和input_txt_file相同的值。

sentence_to_find應(yīng)該設(shè)置為你想要找到并刪除其前所有內(nèi)容的句子。

這個(gè)腳本假設(shè)你的文本文件是UTF-8編碼的。如果文件的編碼不同,請(qǐng)相應(yīng)地修改encoding參數(shù)。

find()方法返回的是子字符串第一次出現(xiàn)的索引位置,如果沒有找到則返回-1。如果找到,我們就從該位置開始保留文本內(nèi)容。

這個(gè)腳本不會(huì)保留句子之前可能出現(xiàn)的任何換行符或其他空白字符。如果需要保留,可以在content[index:]之后添加適當(dāng)?shù)倪壿媮硖幚磉@些字符。

在運(yùn)行此腳本之前,請(qǐng)確保你有文件的備份,以防萬一發(fā)生意外情況導(dǎo)致數(shù)據(jù)丟失。

]]>
http://www.lalz.net/7156.html/feed 0