該錯(cuò)誤提示的意思是:sha256_password和caching_sha2_password兩種加密方式需要cryptography。
所以只需要安裝一下cryptography包就可以了: pip install cryptography
]]>
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。
]]># 定義一個(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。
]]>如果你是一名專業(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)。
]]>%
name = "Alice"
age = 30
formatted_string = "Hello, %s. You are %d years old." % (name, age)
print(formatted_string)
優(yōu)點(diǎn):
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):
%
格式化稍顯繁瑣。name = "Charlie"
age = 35
formatted_string = f"Hello, {name}. You are {age} years old."
print(formatted_string)
優(yōu)點(diǎn):
%
和str.format()
方法更好。每種方法都有其適用場(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),
]]>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)求頭。
.py
后綴。模塊可以包含函數(shù)、類、變量等。mymodule.py
的文件就是一個(gè)模塊。__init__.py
的文件,這個(gè)文件可以是空的,也可以包含初始化代碼。mypackage
的目錄,其中包含__init__.py
和多個(gè)模塊文件,如module1.py
、module2.py
等。requests
是一個(gè)常用的HTTP庫(kù),它包含了多個(gè)模塊和包,用于處理網(wǎng)絡(luò)請(qǐng)求。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)鍵。
用文心一言得出的代碼如下:
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
完美,只要改你的字符串就行了,最后文心一言的只要稍微改下也可以用,自己試試吧?
]]>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ù)丟失。
]]>