Python基礎學習筆記


  本博客采用思維導圖式筆記,所有思維導圖均為本人親手所畫。因為本人也是初次學習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)


免責聲明!

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



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