練習題 檔案操作

2021-10-13 12:56:40 字數 4581 閱讀 9721

完成使用者註冊/登陸功能。

******************************

操作編碼 操作

[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 將...