python 寫函數在一定條件下需要調用自身時的寫法

例如以下這個函數:

state = 1
def set_state(state):
    while state:
        set = int(input('請輸入9或5,顯示"hello world"\n'))
        if set == 9 or set == 5:
            print('hello world')
            state = int(input('輸入1繼續,輸入0停止!\n'))
        else:
            print('請輸入要求的值!')
            set_state(state)
            # break
set_state(state)
print('end')

 

 

這個函數設計的目的是讓用戶輸入指定的值,若輸入的值並非指定值,則重新輸入。

不寫break,運行時就會出現錯誤,乍一看正確:

但:

 

此時箭頭所指的地方,所輸入的0傳給了其他條件下,第二次運行函數時的狀態下,第一個狀態仍爲1,並未改變,因此在退出了第二次運行的函數後,仍然會繼續運行第一個函數中state = 1的循環,導致還得再次輸入0去改變state的值才能停止運行

因此,在再次調用該函數的語句後面,應該加一句breaK語句,直接退出當前的循環,避免出現函數執行的效果達不到預期效果,

加入break以後的截圖:

 

break爲跳出本層循環,隻影響一層

continue爲跳出本次循環,進行下一次循環

return爲爲直接跳出當前函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章