1. 程式人生 > >第四十四天Python學習記錄

第四十四天Python學習記錄

blog sta sele 索引 word col 信息 abc person

需求:

修改個人信息程序

在一個文件裏存多個人的個人信息,如以下

username password  age position department 
alex     abc123    24   Engineer   IT
rain     df2@432    25   Teacher   Teching
....

1.輸入用戶名密碼,正確後登錄系統 ,打印

1. 修改個人信息
2. 打印個人信息
3. 修改密碼

2.每個選項寫一個方法

3.登錄時輸錯3次退出程序

  1 def print_personal_info(account_dic, username):
  2     """
3 print user info 4 :param account_dic: all account‘s data 5 :param username: username 6 :return: None 7 """ 8 person_data = account_dic[username] 9 info = ‘‘‘ 10 ------------------ 11 Name: %s 12 Age : %s 13 Job : %s 14 Dept: %s
15 Phone: %s 16 ------------------ 17 ‘‘‘ % (person_data[2], 18 person_data[3], 19 person_data[4], 20 person_data[5], 21 person_data[6], 22 ) 23 24 print(info) 25 26 27 def save_back_to_file(account_dic): 28 """
29 把account_dic轉換成字符串格式,寫回文件 30 :param account_dic: 31 :return: 32 """ 33 f.seek(0) # 回到文件頭 34 f.truncate() # 清空原文件 35 36 for k in account_dic: 37 row = ",".join(account_dic[k]) 38 f.write("%s\n" % row) 39 40 f.flush() 41 42 43 def change_personal_info(account_dic, username): 44 """ 45 change user info , 思路如下 46 1.把這個人的每個信息打印出來,讓其選擇修改哪個字段,用戶選擇了數字,正好是字段的索引,這樣直接把字段找出來修改掉就可以了 47 2.改完後,還要把這個新數據重新寫回到account.txt,由於改完後的新數據是字典類型,還需要把字典轉換成字符串後,再寫回硬盤 48 :param account_dic: 49 :param username: 50 :return: 51 """ 52 person_data = account_dic[username] 53 print("person data:", person_data) 54 column_names = [Username, Password, Name, Age, Job, Dept, Phone] 55 for index, k in enumerate(person_data): 56 if index > 1: # 0 is username and 1 is password 57 print("%s. %s: %s" % (index, column_names[index], k)) 58 59 choice = input("select column id to change:").strip() 60 if choice.isdigit(): 61 choice = int(choice) 62 if 0 < choice < len(person_data): 63 column_data = person_data[choice] 64 print("current value>:", column_data) 65 new_val = input("new value>:").strip() 66 if new_val: 67 person_data[choice] = new_val 68 print(person_data) 69 70 save_back_to_file(account_dic) 71 else: 72 print("輸入為空") 73 74 75 def change_user_password(account_dic, username): 76 """ 77 change user info , 思路如下 78 1.把這個人的密碼打印出來,讓用戶修改 79 2.改完後,還要把這個新數據重新寫回到account.txt, 80 :param account_dic: 81 :param username: 82 :return: 83 """ 84 person_data = account_dic[username] 85 print("person data:", person_data) 86 column_names = [Username, Password, Name, Age, Job, Dept, Phone] 87 for index, k in enumerate(person_data): 88 if index < 2: # 0 is username and 1 is password 89 print("%s. %s: %s" % (index, column_names[index], k)) 90 91 choice = input("select column id to change:").strip() 92 if choice.isdigit(): 93 choice = int(choice) 94 if 0 < choice < len(person_data): 95 column_data = person_data[choice] 96 print("current value>:", column_data) 97 new_val = input("new value>:").strip() 98 if new_val: 99 person_data[choice] = new_val 100 print(person_data) 101 102 save_back_to_file(account_dic) 103 else: 104 print("輸入為空") 105 106 107 account_file = "account.txt" 108 f = open(account_file, "r+", encoding="utf-8") 109 raw_data = f.readlines() 110 accounts = {} 111 112 for line in raw_data: 113 line = line.strip() 114 if not line.startswith("#"): 115 items = line.split(",") 116 accounts[items[0]] = items 117 118 menu = ‘‘‘ 119 1.打印個人信息 120 2.修改個人信息 121 3.修改密碼 122 ‘‘‘ 123 124 count = 0 125 while count < 3: 126 username = input("Username:").strip() 127 password = input("Password:").strip() 128 if username in accounts: 129 if password == accounts[username][1]: 130 print("welcome %s ".center(50, -) % username) 131 while True: 132 print(menu) 133 user_choice = input(">>>").strip() 134 if user_choice.isdigit(): 135 user_choice = int(user_choice) 136 if user_choice == 1: 137 print_personal_info(accounts, username) 138 elif user_choice == 2: 139 change_personal_info(accounts, username) 140 elif user_choice == 3: 141 change_user_password(accounts, username) 142 143 elif user_choice == q: 144 exit("bye.") 145 else: 146 print("wrong username or password") 147 else: 148 print("Username does not exist.") 149 count += 1 150 151 else: 152 print("Too many attempts.")

第四十四天Python學習記錄