借用之前迴圈控制練習的**,將部分功能定義成函式,嘗試簡化或明細主程式邏輯
熟悉定義函式以及呼叫的方法
把使用者名稱校驗和密碼校驗2個功能定義成函式,分別在主程式中做呼叫
嘗試是否能夠簡化邏輯
print
('請輸入使用者名稱'
)run =
true
while run:
print
('使用者名稱:'
, end='')
username =
input()
if username ==
"李雲龍"
:print
('你好,請輸入密碼!'
)print
('密碼:'
, end='')
cont =
3while cont !=0:
password =
input()
if password ==
"123456"
:print
('密碼通過驗證,登陸成功!'
) run =
false
break
elif cont >1:
print
('密碼錯誤!請重新輸入。剩餘驗證次數:'
+str
(cont -1)
+'次'
)print
('密碼:'
, end='')
cont = cont -
1else
:print
('密碼錯誤超過3次,請重新輸入使用者名稱。'
) cont = cont -
1else
:print
('無此使用者名稱,請重新輸入!'
)
將使用者名稱校驗功能定義成乙個函式
def
check_user
(userinput)
:print
('請輸入使用者名稱'
)print
('使用者名稱:'
, end='')
userinput =
input()
if userinput ==
'李雲龍'
:print
('你好!李先生。'
)else
:print
('請重新輸入使用者名稱'
)
一般來說主程式直接用check_user()
即可呼叫函式,但實際上括號內沒有引數會執行錯誤
所以改了一種方式來實現*(算取巧,也許應該有其他正常的實現方式)*
主程式**如下:
username =
1# 定義1個變數,賦值是隨便定的暫時不影響,python好像無法只定變數而不賦值,後續抽空再研究怎麼解決
check_user(username)
# 呼叫函式,這裡無論傳任何引數進去,都會正常執行到函式內部的`input()`等待使用者輸入
完整**執行結果如下
控制台提示輸入使用者名稱,等待輸入操作:
請輸入使用者名稱
使用者名稱:
輸入資訊後,控制台會有相應提示
輸入123
,執行結果如下:
請輸入使用者名稱
使用者名稱:123
請重新輸入使用者名稱
輸入李雲龍
,執行結果如下:
請輸入使用者名稱
使用者名稱:李雲龍
請重新輸入使用者名稱
p.s.同理可以把密碼校驗功能定義成函式
簡化主程式**結構
username =
1# 宣告變數,使用者名稱
password =
1# 宣告變數,密碼
run =
true
# 宣告1個布林變數
while run:
# 設定1個布林變數,以便在使用者名稱、密碼都檢驗通過時跳出 while 迴圈
if check_user(username)
:# 校驗使用者名稱
i =1# 初始化檢驗次數 i
while i <=3:
# 檢驗限定次數 3
if check_passw(password)
:# 校驗密碼
run =
false
# 使用者名稱、密碼都校驗通過,改變 while迴圈 判定條件
break
# 跳出 子while迴圈
elif i ==3:
print
('密碼驗證次數超限,重新輸入使用者名稱'
) i +=
1else
:print
('密碼檢驗還剩【'
+str(3
- i)
+'】次'
) i +=
1else
:print
('不存在該使用者名稱'
)
基於以上,微調潤色了**,具體如下
def
check_user
(userinput)
:print
('請輸入使用者名稱'
)print
('使用者名稱:'
, end='')
userinput =
input()
print(''
)if userinput ==
'李雲龍'
:print
('你好!李先生。'
)return
true
else
:return
false
defcheck_passw
(pswinput)
:print
('請輸入密碼'
)print
('密碼:'
, end='')
pswinput =
input()
print(''
)if pswinput ==
'123456'
:print
('恭喜您,登陸成功!'
)input
('請按 《回車》 退出'
)return
true
else
:print
('密碼錯誤'
)return
false
username =
1password =
1print
('使用者名稱【李雲龍】,密碼,歡迎測試!!\n'
)run =
true
while run:
if check_user(username)
: i =
1while i <=3:
if check_passw(password)
: run =
false
break
elif i ==3:
print
('密碼驗證超過3次,請重新登入'
) i +=
1else
:print
('密碼校驗還剩【'
+str(3
-i)+
'】次'
) i +=
1else
:print
('不存在該使用者名稱'
)
執行效果如下:
使用者名稱【李雲龍】,密碼【123456】,歡迎測試!!
請輸入使用者名稱
使用者名稱:123
不存在該使用者名稱
請輸入使用者名稱
使用者名稱:李雲龍
你好!李先生。
請輸入密碼
密碼:123
密碼錯誤
密碼校驗還剩【2】次
請輸入密碼
密碼:123
密碼錯誤
密碼校驗還剩【1】次
請輸入密碼
密碼:123
密碼錯誤
密碼驗證超過3次,請重新登入
請輸入使用者名稱
使用者名稱:123
不存在該使用者名稱
請輸入使用者名稱
使用者名稱:李雲龍
你好!李先生。
請輸入密碼
密碼:123
密碼錯誤
密碼校驗還剩【2】次
請輸入密碼
密碼:123456
恭喜您,登陸成功!
請按 《回車》 退出
process finished with exit code 0
Python 學習筆記 enumerate函式
enumerate 函式用於將乙個可遍歷的資料物件 如列表 元組或字串 組合為乙個索引序列,同時列出資料和資料下標,一般用在 for 迴圈當中。seasons spring summer fall winter list enumerate seasons 0,spring 1,summer 2,f...
python學習筆記(二) python基礎函式
python之所以強大好用,離不開可以呼叫的各種庫,同時也和他自身函式相關,下面為學習python函式相關知識後整理知識點。1 python函式引數 python函式定義簡單但靈活度非常大。除正常定義的必選引數外,還可以使用預設引數,可變引數,關鍵字引數。預設引數 def power 5 x 2 在...
菜鳥python學習
python中單引號和雙引號的作用相同,使用三引號 或 可以指定乙個多行字元 word 字串 sentence 這是乙個句子 paragraph 這是乙個段落,可以由多行組成 python可以在一行中寫多行,句子直接用分號連線 import sys x runoob sys.stdout.write...