完成使用者註冊/登陸功能。
******************************
操作編碼 操作
[0] 註冊
[1] 登入
******************************
請輸入你要進行的操作編碼:
(1)提示使用者輸入,使用者名稱和密碼,其中密碼需要輸入2次。
提示使用者名稱只能為字母、下劃線和數字;密碼不能超過8位,密碼只能為數字或大小寫字母(2)註冊成功後,賬戶密碼記錄在檔案中 (user.txt)
內容格式可以為 姓名:密碼(3)使用者名稱不能重複。輸入使用者名稱重複,需要提示使用者重新輸入。
--------------註冊--------------
請輸入使用者名稱:abc
使用者名稱已存在
請重新輸入使用者名稱:
(4)檢測兩次密碼如果不同,提示兩次密碼不一致,
檢測兩次密碼如果相同,確認註冊成功。
--------------註冊--------------
請輸入使用者名稱:abc
請輸入密碼:123456
請再次輸入密碼:654321
密碼不一致
請再次輸入密碼:
(1)使用者登入時,進行三次校驗,都不對,記錄黑名單。
黑名單儲存在檔案中:blacklist.txt
--------------登陸--------------
請輸入使用者名稱:abc
請輸入密碼:123456
密碼不正確
請再次輸入密碼:654321
密碼不正確
您還有1次機會
請再次輸入密碼:987654
(2)如果是黑名單的使用者,則禁止再次登入
def
register()
:print
("註冊"
.center(50,
"-")
)print
("提示使用者名稱只能為字母、下劃線和數字;密碼不能超過8位,密碼只能為數字或大小寫字母"
) f =
open
("user.txt"
,"a+"
, encoding=
"utf-8"
) f.seek(0)
while
true
: count =
0 username =
input
("請輸入使用者名稱:"
)for i in
list
(username)
:if i.isalnum(
)or i ==
"_":
continue
else
:print
("使用者名稱只能為字母、下劃線和數字"
) count +=
1break
for i in f.readlines():
if username == i.split(
":")[0
]:print
("使用者名稱已存在"
) count +=
1if count ==0:
break
f.close(
)while
true
: password =
input
("請輸入密碼:")if
len(password)
<
9and password.isalnum():
password2 =
input
("請再次輸入密碼:"
)else
:print
("格式有誤,請輸入正確格式"
)print
("密碼不能超過8位,密碼只能為數字或大小寫字母"
)continue
if password2 != password:
print
("密碼不一致"
)print
("請重新輸入密碼"
)else
:print
("註冊成功"
)break
f =open
("user.txt"
,"a"
, encoding=
"utf-8"
) f.write(f":"
) f.write(
"\n"
) f.close(
)def
logon()
: list1 =
list2 =
listblack =
f =open
("user.txt"
,"r"
, encoding=
"utf-8"
)for i in f.readlines():
":")[0
].replace(
"\n",""
))":")[1
].replace(
"\n",""
))f.close(
) f =
open
("blacklist.txt"
,"a+"
, encoding=
"utf-8"
) f.seek(0)
print
("登入"
.center(50,
"-")
) username =
input
("請輸入使用者名稱:"
)for i in f.readlines():
i = i.replace(
"\n",""
)if username in listblack:
print()
elif username not
in list1:
print
("找不到使用者名稱,請檢查使用者名稱是否有誤"
)print
("或重新註冊"
)else
: count =
3while
true
: password =
input
("請輸入密碼:"
)if username in list1:
i = list1.index(username)
if password == list2[i]
:print
("登入成功"
)break
else
:if count ==2:
count -=
1print
("密碼錯誤,請重新輸出密碼"
)print
(f"您還有1機會"
)continue
elif count ==1:
print()
f.write(username)
f.write(
"\n"
)break
else
: count -=
1print
("密碼錯誤,請重新輸出密碼"
)continue
else
:print
(f"使用者名稱不存在"
) f.close(
)def
main()
:while
true
:print
("-"*30
)print
("-"*2
,"操作編碼"
," "*12
,"操作"
,"-"*2
)print
("-"*2
," [0]"
," "*12
,"註冊"
,"-"*2
)print
("-"*2
," [1]"
," "*12
,"登入"
,"-"*2
)print
("-"*2
," [2]"
," "*12
,"退出"
,"-"*2
)print
("-"*30
) num =
input
("請輸入你要進行的操作編碼:"
)if num ==
"0":
register(
)elif num ==
"1":
logon(
)elif num ==
"2":
break
else
:print
("輸出有誤"
)main(
)
C語言練習題 檔案操作
a.file f fwrite test.bin b b.file f fopenb test.bin w c.file f fopen test.bin wb d.file f fwriteb test.bin 首先,因為要開啟檔案,ad錯誤,由於不存在乙個 fopenb 函式,所以直接選c。二進...
python 檔案練習題
練習一 建立檔案data.txt,檔案共100000行,每行存放乙個1 100之間 的整數,寫完後讀取檔案內容 import random f1 open home kiosk data.text w for i in range 100000 f1.write str random.randint...
程式設計練習題 陣列操作
將字元陣列所有元素進行逆序 實現 最左端和最右端元素交換,直到相遇 void reverse char pstr,int len 計算陣列字元個數 方法 迴圈計數增加,直到遇到 0 int strlen char pstr 指向字元陣列的指標命名 char pstr 去掉字串右邊的空格 實現 1 將...