程式設計菜鳥 Python學習筆記 函式定義練習

2021-09-27 09:55:34 字數 4509 閱讀 3928

借用之前迴圈控制練習的**,將部分功能定義成函式,嘗試簡化或明細主程式邏輯

熟悉定義函式以及呼叫的方法

把使用者名稱校驗和密碼校驗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...