本博客采用思維導圖式筆記,所有思維導圖均為本人親手所畫。因為本人也是初次學習Python語言所以有些知識點可能不太全。
基礎班第一天學習筆記:鏈接
基礎班第二天學習筆記:鏈接
基礎班第三天學習筆記:鏈接
基礎班第四天學習筆記:鏈接
基礎班第五天學習筆記:鏈接
基礎班第六天學習筆記:鏈接
基礎班第七天學習筆記:鏈接
基礎班第八天學習筆記:鏈接
基礎班第九天學習筆記:鏈接
基礎班第十天學習筆記:鏈接
字符串思維導圖 列表思維導圖 元組思維導圖 集合思維導圖 字典思維導圖 容器類型的公共方法
函數的思維導圖 文件思維導圖 if判斷語句思維導圖 面向對象思維導圖 enumerate()方法的使用
模擬用戶登陸實現:
# 編寫代碼模擬用戶登陸。
# 要求:用戶名為 python,密碼 123456,
# 如果輸入正確,打印“歡迎光臨”,程序結束,
# 如果輸入錯誤,提示用戶輸入錯誤並重新輸入
user = input("請輸入用戶名:") password = input("請輸入密碼:") if user == 'python' and password == '123456': print("歡迎光臨!") else: print("用戶名或密碼錯誤!")
♥三目運算符的使用:
age = int(input("請輸入您的年齡:"))
print("恭喜小伙,已經成年。") if age >= 18 else print("小伙,你還沒成年。")
♥利用random模塊實現猜拳游戲:
1 import random 2 player = int(input("請出拳:石頭(1)、剪刀(2)、布(3):")) 3 computer = random.randint(1, 3) 4 print(computer) 5 if (player == 1 and computer == 2) or \ 6 (player == 2 and computer == 3) or \ 7 (player == 3 and computer == 1): 8 print("你贏了") 9 elif player == computer: 10 print("平局") 11 else: 12 print("你輸了")
過7游戲實現:
# 設計“過7游戲”的程序, 打印出1-100之間除了7和7的倍數之外的所有數字 num = 1 while num <= 100: if num % 7 != 0: print(num, end="|") num += 1
♥通過eval()方法實現高級版計算器:
# 升級版計算器: # eval()方法:取出字符串包裹的內容 num1 = float(input("請輸入第一個數:")) num2 = float(input("請輸入第二個數:")) operator = input("請輸入操作符:") result = eval("%d %s %d" % (num1, operator, num2)) print("%d %s %d = %d" % (num1, operator, num2, result))
九九乘法表的實現:
# 正向打印九九乘法表 for row in range(1, 10): for col in range(1, row + 1): print("%d * %d = %d" % (col, row, row * col), end="\t") print("") # 逆向打印九九乘法表 for col in range(9, 0, -1): for row in range(col, 0, -1): print("%d * %d = %d" % (row, col, row * col), end="\t") print("")
循環輸出三角形:
# 1.如何使用循環嵌套循環輸出如下圖形: # # ***** # **** # *** # ** # * # 利用for循環實現 for row in range(0, 5): for col in range(row, 5): print("*", end=" ") print("") # 利用while循環實現 row = 1 while row <= 5: col = 0 while col <= 5 - row: print("*", end="") col += 1 print("") row += 1
王朴矩陣:(王朴為Python48期同學)
# 輸出如下矩陣: # &*&*& # &*&*& # &*&*& # &*&*& # &*&*& for row in range(5): for col in range(5): if col % 2 == 0: print("&", end="") else: print("*", end="") print("")
字符串結合切片使用:
1 # 現有字符串: str1 = '1234567890',根據題目要求,將截取后的新字符串賦值給str2
2 str1 = '1234567890'
3 # 截取字符串的第一位到第三位的字符
4 str2 = str1[0:3]
5 print(str2) 6 # 截取字符串最后三位的字符 7 str2 = str1[-3:] 8 print(str2) 9 # 截取字符串的全部字符 10 str2 = str1[::] 11 print(str2) 12 # 截取字符串的第七個字符到結尾 13 str2 = str1[7:] 14 print(str2) 15 # 截取字符串的第一位到倒數第三位之間的字符 16 str2 = str1[1:-3] 17 print(str2) 18 # 截取字符串的第三個字符 19 str2 = str1[2] 20 print(str2) 21 # 截取字符串的倒數第一個字符 22 str2 = str1[-1] 23 print(str2) 24 # 截取與原字符串順序相反的字符串 25 str2 = str1[::-1] 26 print(str2) 27 # 截取字符串倒數第三位與倒數第一位之間的字符 28 str2 = str1[-3:-1] 29 print(str2) 30 # 截取字符串的第一位字符到最后一位字符之間的字符,每隔一個字符截取一次。 31 str2 = str1[0:-1:2] 32 print(str2) 33 34 # 通過for循環將列表逆序輸出 35 my_list = ['a', 'b', 'c', 'd'] 36 for data in my_list[::-1]: 37 print(data)
字符串的格式化輸出:
1 # 字符串的格式化輸出: 把字符串里面的內容按照指定的數據類型進行輸出顯示 2 3 # 學習字符串格式化的目的:以后字符串里面的內容有動態內容時,需要使用字符串的格式化 4 5 # 格式化占位符: 6 # %d 表示格式化顯示整型數字 7 # %f 表示格式化顯示小數 8 # %s 表示格式化顯示字符串 9 10 # 字符串的內容進行了格式化 11 # 注意點:如果字符串里面有多個格式化占位符,那么多個參數在進行傳參的時候,需要加上小括號 12 msg = "姓名: %s 年齡: %d" % ("王五", 22) 13 # 輸出格式化后的字符串 14 print(msg) 15 16 # 如果字符串中只有一個格式化占位符,在進行傳參的時候,參數不需要加上小括號 17 info = "性別: %s" % "男" 18 print(info, type(info)) 19 print("性別: %s" % "男") 20 21 pi = 3.16 22 # %f 默認保留6位小數 23 # print("圓周率: %f" % pi) 24 # 注意點格式化占位符會進行四舍五入 25 print("圓周率: %.2f" % pi) 26 27 28 # 格式化占位符的注意點: 擴展: 29 30 student_no = 123 31 32 # %03d: 正數要求是3位,不夠三位前面補0 33 print("學號:%03d" % student_no) 34 35 # 格式化占位符結合百分號一起使用的時候,兩個百分號表示一個 36 print("百分比: %d%%" % 50) 37 38 39 # 定義整數變量 student_no ,輸出 我的學號是 000001 40 student_no = 1 41 print("我的學號為: %06d" % student_no) 42 43 # 定義⼩數 price 、 weight 、 money ,輸出 蘋果單價 9.00 元/⽄,購買了 5.00 ⽄,需要⽀付 45.00 元 44 price = 9.0 45 weight = 5.0 46 money = 45.0 47 print("蘋果單價%.2f 元/⽄,購買了 %.2f ⽄,需要⽀付 %.2f 元" % (price, weight, money))
f-string的使用:
1 # fstring:用來給字符串動態綁定數據 2 3 # fstring的使用語法格式: 4 5 # f"姓名: {'李四'} 年齡: {20}" 6 7 name = "李四" 8 age = 20 9 10 info = f"姓名:{name} 年齡:{age}" 11 print(info, type(info)) 12 13 info = f"姓名:{'王三'} 年齡:{20}" 14 print(info, type(info)) 15 16 # 3 + 4 = 7 17 18 num1 = float(input("請輸入第一個數字:")) 19 num2 = float(input("請輸入第二個數字:")) 20 21 result = F'{num1} + {num2} = {num1 + num2}' 22 print(result) 23 24 # 總結: fstring只能在python3.6及以上版本才能使用,如果兼容之前的代碼可以使用字符串的格式化輸出
學生信息管理系統(文件版):
1 student_list = [] # 定義一個空列表,用來保存用戶輸入的學生信息 2 3 4 def menu(): # 定義函數用於菜單輸出 5 print("------------------------------") 6 print("----歡迎使用學生信息管理系統------") 7 print("----1.顯示學生信息--------------") 8 print("----2.添加學生信息--------------") 9 print("----3.刪除學生信息--------------") 10 print("----4.修改學生信息--------------") 11 print("----5.保存學生信息--------------") 12 print("----6.退出學生信息系統-----------") 13 print("------------------------------") 14 15 16 def menu_msg(): # 定義函數用於獲取用戶選擇的功能 17 menu() 18 user = int(input("請輸入需要的功能代碼:")) 19 if user == 1: 20 show_msg() # 學生信息顯示函數 21 elif user == 2: 22 add_msg() # 添加學生信息函數 23 elif user == 3: 24 del_msg() # 刪除學生信息函數 25 elif user == 4: 26 modify_msg() # 修改學生信息函數 27 elif user == 5: 28 save_msg() # 保存學生信息函數 29 elif user == 6: 30 print("歡迎下次使用本系統!") 31 exit() # 結束程序 32 33 34 def show_msg(): # 顯示學生信息函數 35 if len(student_list) > 0: 36 for data in student_list: 37 # 通過循環將列表中數據輸出 38 print(data) 39 else: 40 print("系統中無學生信息!") 41 menu_msg() 42 43 44 def add_msg(): # 添加學生信息函數 45 name = input("請輸入學生姓名:") 46 age = input("請輸入學生年齡:") 47 sex = input("請輸入學生性別:") 48 # 使用字典保存用戶輸入的學生信息 49 student_dict = {"name": name, "age": age, "sex": sex} 50 student_list.append(student_dict) 51 print("添加成功!") 52 user = input("是否繼續添加學生信息(是:y或Y,否:N或n):") 53 if user == 'y' or user == 'Y': 54 add_msg() 55 elif user == 'n' or user == 'N': 56 menu_msg() 57 else: 58 print("非法數據") 59 exit() 60 61 62 def del_msg(): # 刪除學生信息函數 63 # 通過enumerate方法給字典中存儲的學生信息分配一個學號 64 for index, dict in enumerate(student_list): 65 print(f"學號是:{index + 1 },其余信息為:{dict}") 66 student_no = int(input("請輸入學生學號:")) 67 # 判斷用戶輸入的索引是否在0-len(student_list)內 68 # student_no - 1 是因為顯示學號是將索引+1了 69 if student_no >= 0 and student_no - 1 < len(student_list): 70 del student_list[student_no - 1] 71 print("恭喜您刪除學生信息成功!") 72 else: 73 print("您輸入的學號不存在!") 74 menu_msg() 75 76 77 def modify_msg(): # 修改學生信息函數 78 # 通過enumerate方法給字典中存儲的學生信息分配一個學號 79 for index, dict in enumerate(student_list): 80 print(f"學號是:{index + 1 },其余信息為:{dict}") 81 student_no = int(input("請輸入學生學號:")) 82 if 0 <= (student_no - 1) < len(student_list): 83 # 通過列表[索引號]["鍵名"] 對存儲在列表中字典里的數據進行修改 84 student_list[student_no - 1]["name"] = input("請輸入學生姓名:") 85 student_list[student_no - 1]["age"] = input("請輸入學生年齡:") 86 student_list[student_no - 1]["sex"] = input("請輸入學生性別:") 87 print("修改學生信息成功") 88 else: 89 print("您輸入的學號不存在!") 90 menu_msg() 91 92 93 def save_msg(): # 保存數據函數 94 # 將列表所存儲的信息通過類型轉換寫入txt文件中 95 f = open("student.txt", "w") 96 student_str = str(student_list) 97 f.write(student_str) 98 f.close() 99 menu_msg() 100 101 102 menu_msg()
列表的嵌套使用:
1 # 已知列表 my_list = [["李三", 20], ["王五", 22], ["劉三", 30]] , 2 # 1. 對該列表進行過濾獲取年齡大於20的列表 3 # 比如: [["王五", 22], ["劉三", 30]] 4 my_list = [["李三", 20], ["王五", 22], ["劉三", 30]] 5 new_list = [] 6 for value in my_list: 7 if value[1] > 20: 8 new_list.append(value) 9 print(new_list) 10 11 # 2. 對該列表進行過濾獲取名字結尾叫'三'的列表 12 # 比如: [["李三", 20], ["劉三", 30]] 13 14 my_list = [["李三", 20], ["王五", 22], ["劉三", 30]] 15 new_list = [] 16 17 for data in my_list: 18 if data[0][-1] == '三': 19 new_list.append(data) 20 print(new_list)
1 # 使用列表嵌套,完成8名老師隨機分配3個辦公室 2 import random 3 office = [[], [], []] 4 teacher = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'] 5 6 for value in teacher: 7 office[random.randint(0,2)].append(value) 8 9 print(office)
1 # 將8個老師隨進分配到3個辦公室, 2 # 每個辦公室至少有一個人 3 4 5 import random 6 7 office_list = [[], [], []] 8 9 teacher_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] 10 11 while True: 12 for teacher in teacher_list: 13 index = random.randint(0, 2) 14 office_list[index].append(teacher) 15 16 print(office_list) 17 18 num = 1 19 for office in office_list: 20 print("第%d個辦公室有%d人" % (num, len(office))) 21 for teacher in office: 22 print(teacher) 23 num += 1 24 25 if len(office_list[0]) == 0 or len(office_list[1]) == 0 or len(office_list[2]) == 0: 26 continue 27 else: 28 break 29 # 30 # 31 32 33 # 進階版 34 35 import random 36 37 office_list = [[], [], []] 38 39 teacher_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] 40 41 while True: 42 for teacher in teacher_list: 43 index = random.randint(0, 2) 44 office_list[index].append(teacher) 45 46 print(office_list) 47 48 for index, office in enumerate(office_list): 49 print("第%d個辦公室有%d人" % (index + 1, len(office))) 50 for teacher in office: 51 print(teacher) 52 53 if len(office_list[0]) == 0 or len(office_list[1]) == 0 or len(office_list[2]) == 0: 54 continue 55 else: 56 break
列表結合random使用:
1 從鍵盤中輸入5個學生的名字,存儲到列表中,然后打印出每個學生名字中的第2個字母 2 name_list = [] 3 for _ in range(5): 4 name = input("請輸入學生姓名:") 5 name_list.append(name) 6 7 for index in range(len(name_list)): 8 print(name_list[index][1]) 9 10 從鍵盤獲取5個學生的名字,然后隨機抽出一名學生去打掃衛生 11 import random 12 13 name_list = [] 14 for _ in range(5): 15 name = input("請輸入學生姓名:") 16 name_list.append(name) 17 18 print("%s打掃衛生!" % name_list[random.randint(0, len(name_list))])
練習enumerate函數的使用:
1 # enumerate:使用for循環遍歷容器類型數據時, 2 # 既要下標又要數據可以結合enumerate函數來使用 3 4 # 將自定義的列表輸出並輸出每個數據的下標 5 6 my_list = ['a', 'b', 'c', 'd', 'e', 'f'] 7 8 for index, value in enumerate(my_list): 9 print(index, value)
字典的應用:
1 # 編程: 2 # 使用字典來存儲一個人的信息 3 # (姓名、年齡、學號、QQ、微信、住址等), 4 # 這些信息來自 鍵盤的輸入 5 6 msg_dict = {} 7 8 name = input("請輸入您的姓名:") 9 age = int(input("請輸入您的年齡:")) 10 student_no = input("請輸入您的學號:") 11 QQ = input("請輸入您的QQ:") 12 VX = input("請輸入您的微信:") 13 address = input("請輸入您的住址:") 14 15 msg_dict["name"] = name 16 msg_dict["age"] = age 17 msg_dict["student_no"] = student_no 18 msg_dict["QQ"] = QQ 19 msg_dict["VX"] = VX 20 msg_dict["address"] = address 21 22 23 print(msg_dict)
1 1. 使用程序描述一個學生信息, 2 # 接收信息包含姓名、年齡、喜歡的書籍 3 # (西游記、紅樓夢、三國演義、水滸傳) 4 5 my_dict = {} 6 book_list = [] 7 name = input("請輸入您的姓名:") 8 age = int(input("請輸入您的年齡:")) 9 10 my_dict["name"] = name 11 my_dict["age"] = age 12 book = int(input("請輸入你喜歡書的個數(1-4):")) 13 14 if 1 <= book <= 4: 15 for value in range(book): 16 book_list.append(input("請輸入你喜歡的第%d本書的名字:" % (value + 1))) 17 18 my_dict["books"] = book_list 19 print(my_dict) 20 21 # 2. 已知 my_list = [{'name': '李四', 'age': 20}, 22 # {'name': '王五', 'age': 22}] 23 # 過濾出來年齡大於20的數據, 比如: [{'name': '王五', 'age': 22}] 24 25 my_list = [{'name': '李四', 'age': 20}, 26 {'name': '王五', 'age': 22}] 27 new_list = [] 28 for dict in my_list: 29 if dict['age'] > 20: 30 new_list.append(dict) 31 print(new_list) 32 33 34 # 3. 使用函數完成對第1道題的開發 35 36 def books(): 37 my_dict = {} 38 book_list = [] 39 name = input("請輸入您的姓名:") 40 age = int(input("請輸入您的年齡:")) 41 42 my_dict["name"] = name 43 my_dict["age"] = age 44 book = int(input("請輸入你喜歡書的個數(1-4):")) 45 46 if 1 <= book <= 4: 47 for value in range(book): 48 book_list.append(input("請輸入你喜歡的第%d本書的名字:" % (value + 1))) 49 50 my_dict["books"] = book_list 51 print(my_dict) 52 53 books()
字符串、列表、字典的綜合應用:
1 # 字符串、列表、字典綜合應用 2 # 設計一個程序 3 # 要求用戶可以實現登錄、注冊、注銷登錄等功能 4 # 用戶的用戶名(長度6-20)、密碼(長度8-20)、昵稱、年齡信息保存到字典中 5 # 將每個已注冊用戶的保存到列表中,即將上一步的字典保存到列表中 6 # 維護用戶的登錄狀態,每次只能有一個用戶處於登錄狀態,直到選擇注銷登錄 7 # 如果不選擇退出系統,該程序應當一直運行 8 9 user = [] 10 11 user_dict = {} 12 while True: 13 print("1.登錄") 14 print("2.注冊") 15 16 user_chose = int(input("請輸入您想要的功能:")) 17 if user_chose == 1: 18 user_name = input("請輸入您的用戶名:") 19 password = input("請輸入您的密碼:") 20 if user_name == user_dict["user_name"] and password == user_dict["password"]: 21 print("登陸成功") 22 user_chose = input("是否注銷登陸:是y或Y") 23 user_chose = user_chose.upper() 24 if user_chose == 'Y': 25 print("注銷成功!") 26 break 27 else: 28 print("用戶名或密碼錯誤!") 29 elif user_chose == 2: 30 user_name = input("請輸入您的用戶名(長度6-20):") 31 password = input("請輸入您的密碼(長度8-20):") 32 name = input("請輸入您的昵稱:") 33 age = input("請輸入您的年齡:") 34 if 6<= len(user_name) <= 20 and 8 <= len(password)<= 20: 35 user_dict["user_name"] = user_name 36 user_dict["password"] = password 37 user_dict["name"] = name 38 user_dict["age"] = age 39 user = user_dict 40 else: 41 print("請輸入正確長的用戶名或密碼!") 42 continue 43 else: 44 print("非法數據") 45 continue
不定長位置參數和不定長關鍵字參數使用:
1 # 使用不定長位置參數、不定長關鍵字參數完成多個數的平均值計算 2 3 4 def sum_num(*aegs, **kwargs): 5 num_sum = 0 6 for value in kwargs.values(): 7 num_sum += value 8 9 for value in aegs: 10 num_sum += value 11 12 return num_sum 13 14 15 def avg_sum(*args, **kwargs): 16 num_sum = sum_num(*args, **kwargs) 17 avg_num = num_sum / (len(args) + len(kwargs)) 18 return avg_num 19 20 21 result = avg_sum(1, 2, 3, 4, a=1, b=2, c=3, d=4) 22 23 print(result)
1 # 使用不定長參數定義一個函數max_min, 2 # 接受的參數類型是數值, 3 # 最終返回這些數中的最大值和最小值 4 5 def max_min(*args): 6 return max(args), min(args) 7 8 9 max_value, min_value = max_min(1, 2, 3, 4, 5, 67, 7, 235, 53, 3) 10 print(max_value, min_value)
1 # 分別定義加減乘除四個函數實現兩個數之間的加減乘除操作 2 3 def add(a, b): 4 return a + b 5 6 7 def jian(a, b): 8 return a - b 9 10 11 def cheng(a, b): 12 return a * b 13 14 15 def chu(a, b): 16 return a / b 17 18 19 value1 = add(1, 2) 20 value2 = jian(2, 1) 21 value3 = cheng(4, 2) 22 value4 = chu(5, 6) 23 24 print(value1, value2, value3, value4)
1 # 定義一個函數min,接受的參數類型是數值,最終返回兩個數中的最小值 2 def min_values(num1, num2): 3 result = num1,num2 4 value = min(result) 5 return value 6 7 min_value = min_values(666,787) 8 print(min_value)
# 定義一個函數max,接受的參數類型是數值,最終返回兩個數中的最大值 def max_values(num1, num2): result = num1,num2 value = max(result) return value max_value = max_values(4,777) print(max_value)
1 # 定義一個使用不定長參數的函數,並在函數中打印出參數及其類型,統計傳入參數的個數 2 def show(*args): 3 print(args, type(args), len(args)) 4 5 6 show(1, 2, 34, 5, 6, 7, 8, 9) 7 8 9 def show(**kwargs): 10 print(kwargs, type(kwargs), len(kwargs)) 11 12 13 show(a=1, b=2, c=3, d=4)
1 # 定義一個函數cut_str, 2 # 接受三個參數, 3 # 分別為字符串s、數值a1、數值a2, 4 # 將字符串s從下標a1開始的a2個字符刪除, 5 # 並把結果返回 6 7 # 8 def cut_str(s="", a1=0, a2=-1): 9 result = s[a1:a2] 10 new_str = s.replace(result, "") 11 return new_str 12 13 result = cut_str("abcdweasfsajfgjas",2,4) 14 print(result)
♥對find()方法進行擴充:
1 # 1.定義函數findall, 2 # 實現對字符串find方法的進一步封裝, 3 # 要求返回符合要求的所有位置的起始下標, 4 # 如字符串"helloworldhellopythonhelloc++hellojava", 5 # 需要找出里面所有的"hello"的位置, 6 # 最后將返回一個元組(0,10,21,29), 7 # 即將h的下標全部返回出來, 8 # 而find方法只能返回第一個 9 10 def findall(str="", chr=""): 11 # 定義一個列表用於存儲找到的索引值 12 find_list = [] 13 # 執行循環,循環次數為指定字符在字符串中出現的次數 14 for value in range(str.count(chr)): 15 # 定義變量用於存儲指定字符對應的索引 16 find_count = str.find(chr) 17 # find_count + len(chr) * value : 18 # 除第一次找到指定字符串的索引外, 19 # 其余次數均要加上替換掉的字符串的長度, 20 # 才能夠獲取到指定字符在最初字符串中最初的索引 21 find_list.append(find_count + len(chr) * value) # 將索引追加到列表中 22 # 去除已經找到的指定字符串 23 str = str.replace(chr, "", 1) 24 return find_list 25 26 27 result = findall("helloworldhellopythonhelloc++hellojava", "hello") 28 29 print(result)
函數的遞歸調用:
1 # 使用遞歸函數求n的階乘 2 3 4 def calc_num(num): 5 # 函數遞歸調用是必須要有結束條件 6 if num == 1: 7 return 1 8 else: 9 return num * calc_num(num - 1) 10 11 result = calc_num(5) 12 print(result) 13 14 15 # 使用遞歸的方法打印出前n個斐波那契數列 16 # 斐波那契數列起始數字為0和1,之后每個數都是前兩個數之和,比如:0,1,1,2,3,5,8,... 17 # 0 1 1 2 3 5 8 13 21 .... 18 19 num_list = [0,1] 20 21 def fbnq_num(n): 22 if n == 2: 23 return num_list 24 else: 25 # 將列表中最后兩個數的和相加后追加到列表后 26 num_list.append(num_list[-1]+ num_list[-2]) 27 return fbnq_num(n-1) 28 29 result = fbnq_num(9) 30 print(result)
Python中對文件的操作練習:
1 # 文件的相關操作、練習及應用 2 # 創建一個新項目中新創建一個名字py文件夾 3 import os 4 my_dir = os.mkdir("文件操作") 5 # 進入py文件夾中創建5個文件,文件名分別為 6 # python-06基礎班-1.txt, 7 # python-06基礎班-2.txt, 8 # python-06基礎班-3.txt, 9 # python-06基礎班-4.txt, 10 # python-06基礎班-5.txt 11 for value in range(5): 12 f = open(f"文件操作/python-06基礎班-{value+1}.txt","w") 13 f.close() 14 # 然后將py文件夾中的所有文件都改名為 15 # [黑馬]python-06基礎班-1.txt, 16 # [黑馬]python-06基礎班-2.txt, 17 # [黑馬]python-06基礎班-3.txt, 18 # [黑馬]python-06基礎班-4.txt, 19 # [黑馬]python-06基礎班-5.txt 20 for value in range(5): 21 f = os.rename(f"文件操作/python-06基礎班-{value+1}.txt",f"文件操作/[黑馬]python-06基礎班-{value+1}.txt")
1 # 編寫一段代碼以完成兩份文件之間的相互備份 2 import os 3 # 在python用戶目錄下創建python基礎班文件夾 4 os.mkdir("python基礎班") 5 # 在文件夾中創建gailun.txt文件 6 # 打開文件在gailun.txt中寫入"德瑪西亞!人在塔在!" 7 f = open("python基礎班/gailun.txt", "w") 8 f.write("德瑪西亞!人在塔在!") 9 f.close() 10 # 在文件夾中創建gailun副本.txt文件 11 f = open("python基礎班/gailun副本.txt", "w") 12 # 將gailun.txt文件中的數據寫入gailun副本.txt文件中 13 f1 = open("python基礎班/gailun.txt", "r") 14 # .read()將文件內容讀取並返回字符串 15 # .readlins()將文件內容讀取並返回列表 16 result = f1.readline() 17 f1.close() 18 f.write(result) 19 f.close() 20 print(result, type(result)) 21 # 打開文件,查看文件中是否有內容
繼承的應用:
1 # 1. 定義一個Student類,統計Student類創建的實例(對象)個數, 使用屬性返回創建實例的個數 2 class Studnet(object): 3 obj_num = 0 4 5 def __init__(self): 6 Studnet.obj_num += 1 7 print("實例個數:", Studnet.obj_num) 8 9 10 s1 = Studnet() 11 s2 = Studnet() 12 # 2. 定義一個Person類,添加兩個實例屬性(name, age), 13 # 創建兩個實例對象添加到列表里面, 例如: [p1, p2] 14 obj_list = [] 15 16 17 class Person(object): 18 def __init__(self, name, age): 19 self.name = name 20 self.age = age 21 22 23 p1 = Person("李四", 20) 24 obj_list.append(p1) 25 p2 = Person("王超", 22) 26 obj_list.append(p2) 27 print(obj_list) 28 # 3. 把列表中的person對象改成列表中的字典, 29 # 例如: [{"name": "李四", "age": 20}, {"name": "李四", "age": 20}] 30 new_list = [obj.__dict__ for obj in obj_list] 31 print(new_list) 32 # 4. 把該數據[{"name": "李四", "age": 20}, {"name": "李四", "age": 20}]保存到文件 33 f = open("obj_msg.data", "w", encoding="utf-8") 34 f.write(str(new_list)) 35 f.close() 36 # 5. 讀取上一題中文件中的數據, 37 # 把 [{"name": "李四", "age": 20}, {"name": "李四", "age": 20}] 38 # 轉成 [p1, p2] 39 f = open("obj_msg.data", "r", encoding="utf-8") 40 new_obj_list = eval(f.read()) 41 f.close() 42 print(new_obj_list) 43 last_obj_list = [Person(**obj_dict) for obj_dict in new_obj_list] 44 print(last_obj_list)
學生管理系統-面向對象版:
1.創建student_system包
2.在student_system包中創建studnet_model.py:
class Student(object): def __init__(self, name, age, sex): self.name = name self.age = age self.sex = sex
3.在student_system包中創建student_system_model.py:
import os from student_system import student_model class StudentSystem(object): def __init__(self): # 定義類屬性的學生列表 self.student_list = [] # list() # 顯示功能菜單 @staticmethod def show_menu(): print("----學生管理系統V1.0----") print("1. 添加學生") print("2. 修改學生") print("3. 刪除學生") print("4. 查詢學生") print("5. 顯示所有學生") print("6. 退出") # 添加學生的功能方法 def add_student(self): name = input("請輸入您的姓名:") age = input("請輸入您的年齡:") sex = input("請輸入您的性別:") stu = student_model.Student(name, age, sex) self.student_list.append(stu) print("添加成功") # 顯示所有學生的功能方法 def show_all_student(self): for index, stu in enumerate(self.student_list): # 學號 = 下標 + 1 num = index + 1 print("學號: %d 姓名: %s 年齡: %s 性別: %s" % (num, stu.name, stu.age, stu.sex)) # 修改學生信息的功能方法 def modify_student(self): for index, stu in enumerate(self.student_list): # 學號 = 下標 + 1 num = index + 1 print("學號: %d 姓名: %s 年齡: %s 性別: %s" % (num, stu.name, stu.age, stu.sex)) student_no = int(input("請輸入您要修改學生信息的學號:")) # 根據學號計算對應的下標 index = student_no - 1 # 判斷index是否是一個合法的下標 if 0 <= index < len(self.student_list): # 根據下標獲取要修改的學生字典 stu = self.student_list[index] # 接收用戶輸入的最新數據 new_name = input("請輸入您修改后的姓名:") new_age = input("請輸入您修改后的年齡:") new_sex = input("請輸入您修改后的性別:") # 修改指定字典里面的信息 stu.name = new_name stu.age = new_age stu.sex = new_sex print("修改成功!") else: print("請輸入合法學號!") # 刪除學生信息的功能方法 def remove_student(self): for index, stu in enumerate(self.student_list): # 學號 = 下標 + 1 num = index + 1 print("學號: %d 姓名: %s 年齡: %s 性別: %s" % (num, stu.name, stu.age, stu.sex)) student_no = int(input("請輸入要刪除學生的學號:")) # 根據學號計算對應下標 index = student_no - 1 # 判斷index是否是一個合法的下標 if 0 <= index < len(self.student_list): # 根據下標刪除學生列表中的數據 del self.student_list[index] print("刪除成功!") else: print("請輸入合法的學號!") # 查詢學生的功能方法 def query_student(self): name = input("請輸入您要查詢學生的姓名:") # 遍歷學生列表,獲取每一個學生字典信息 for index, stu in enumerate(self.student_list): # 根據學生字典取出姓名,判斷是否和用戶輸入的姓名一致 if stu.name == name: # 生成學號 num = index + 1 print("學號: %d 姓名: %s 年齡: %s 性別: %s" % (num, stu.name, stu.age, stu.sex)) break else: print("對不起,您查詢的學生信息不存在!") # 保存學生對象列表數據到文件 def save_data(self): with open("student_list.data", "w", encoding="utf-8") as file: student_dic_list = [stu.__dict__ for stu in self.student_list] # print(student_dic_list) file.write(str(student_dic_list)) # 加載緩存文件中的歷史數據 def load_data(self): # 判斷文件是否存在 if os.path.exists("student_list.data"): with open("student_list.data", "r", encoding="utf-8") as file: stu_dict_list = file.read() new_stu_list = [Student(**stu_dict) for stu_dict in eval(stu_dict_list)] self.student_list.extend(new_stu_list) # 程序啟動的入口方法 def start(self): # 加載歷史數據,只加載一次即可 self.load_data() while True: # 顯示功能菜單 self.show_menu() # 2. 接收用戶輸入的功能選項 menu_option = input("請輸入您需要的功能選項:") # 3. 判斷用戶輸入的功能選項 if menu_option == "1": # print("執行添加學生的功能") self.add_student() elif menu_option == "2": # print("執行修改學生的功能") self.modify_student() elif menu_option == "3": # print("執行刪除學生的功能") self.remove_student() elif menu_option == "4": # print("執行查詢學生的功能") self.query_student() elif menu_option == "5": # print("執行顯示所有學生的功能") self.show_all_student() elif menu_option == "6": print("退出系統") # 退出程序之前,保存數據到文件 self.save_data() break
4.創建main模塊:
from student_system import studnet_system_model sys = studnet_system_model.StudentSystem() sys.start()
基礎班考試題:
# 1.定義一個Person類 # 1)屬性:姓名name,體重weight # # 2)方法:init方法 import random class Person(object): def __init__(self, name, weight): self.name = name self.weight = weight # 2.在Person類外面完成以下要求: # # 1)創建四個對象("牛一",60 ; "陳二",55 ; "張三",70 ; "王五",65 ), # 將這四個對象添加到列表。 n1 = Person("牛一", 60) c2 = Person("陳二", 55) z3 = Person("張三", 70) w5 = Person("王五", 65) person_list = [] person_list.append(n1) person_list.append(c2) person_list.append(z3) person_list.append(w5) # 2).獲取60-70之間的隨機數作為體重標准線(包含60和70), # 遍歷列表將體重大於等於體重標准線的元素寫入健康體重名單health.txt。格式如下: # 姓名:牛一 體重:60 狀態:健康 # # 姓名:張三 體重:70 狀態:健康 # # 姓名:王五 體重:65 狀態:健康 # def write_dict(name, weight): # return "姓名:" + name + " 體重:" + str(weight) + " 狀態:健康\n" with open("health.txt", "w", encoding="utf-8") as file: # prn_dict_list = [prn.__dict__ for prn in person_list if prn.weight > random.randint(60, 70)] # new_list = [write_dict(**prn_dict) for prn_dict in prn_dict_list] # for data in new_list: # file.write(str(data)) new_list = [prn for prn in person_list if prn.weight > random.randint(60, 70)] for prn in new_list: new_str = "姓名:" + prn.name + " 體重:" + str(prn.weight) + " 狀態:健康\n" file.write(new_str)
1 # 提示用戶循環錄入字符串,直到輸入的字符串以's'結尾時結束錄入, 2 # 將錄入的字符串存入列表,遍歷列表,將列表中以'a'開頭的字符串打印到控制台。 3 4 my_list = [] 5 while True: 6 my_str = input("請輸入字符串:") 7 8 if my_str.endswith('s'): 9 my_list.append(my_str) 10 11 new_lsit = [str_msg for str_msg in my_list if str_msg.startswith('a')] 12 for data in new_lsit: 13 print(data) 14 break 15 elif my_str.startswith('a'): 16 my_list.append(my_str)