簡體   English   中英

為什么 function 不會跳出這個循環?

[英]Why won't the function break out of this loop?

我不知道為什么,但是我用於另一個程序的 function 在遇到 FileNotFoundError 異常時不會跳出“while”循環。

import os
def delete_file(file_to_delete):
    try:
        os.remove(file_to_delete)
        print('file removed: ', file_to_delete)
        result = True
    except FileNotFoundError:
        print("Error. File not found.")
        result = False
        while result == False:
            if result == True: break
            input("Please enter a valid filename: ")
        os.remove(file_to_delete)
    return result

相反,刪除 while 循環並更改您的邏輯以使其工作 -

import os
def delete_file(file_to_delete):
    result = False
    while result == False:
        try:
            os.remove(file_to_delete)
            print('file removed: ', file_to_delete)
            result = True

        except FileNotFoundError:
            print("Error. File not found.")
            file_to_delete = input('Please enter valid filename: ')
            
    return result
result = False
while result == False:
    if result == True: break
    input("Please enter a valid filename: ")

該循環不包含任何會改變result值的東西,所以是的,這個循環將永遠運行。

此外,對input()的調用是無用的,因為您沒有將結果保存在任何地方。

你怎么看這個邏輯?

import os

def delete_file(file_to_delete):
    while not os.path.isfile(file_to_delete):
        print("Error. File not found.")
        file_to_delete = input("Please enter a valid filename: ")
    
    os.remove(file_to_delete)
    print('file removed: ', file_to_delete)
    return True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM