簡體   English   中英

如果其中一個 function 拋出錯誤,我如何在 python 中重新運行 main() function?

[英]How can i re-run a main() function in python, if one of its function throws an error?

這是一個程序,當以分數輸入時返回燃料百分比,其中輸入傳遞給另一個 function


def main():
    # taking input from user 'x/y'
    fuel = input("Fraction: ")
    print(convert(fuel),"%",sep="")
    

def convert(fraction):
    # extracting nominators
    fraction.split('/')
    x = int(fraction[0])
    y = int(fraction[2])
    # returning the percentage after calculating
    try:
        per = x / y * 100
        return round(per)
    # ignoring the errors
    except ZeroDivisionError or ValueError:
        pass

# re-run the main() function, if convert() throws errors
if __name__ == '__main__':
    main()

當我編寫與此類似的整個代碼時,我得到了預期的結果:


def main():
    while True:
        try:
            fuel = input("Fraction: ")
            fuel.split('/')
            x = int(fuel[0])
            y = int(fuel[2])

            print(round(x / y * 100),"%",sep="")
            break
        except ZeroDivisionError or ValueError:
            pass


if __name__ == '__main__':
    main()


但是我想將輸入( fuel )傳遞給另一個函數( convert() )。那么,如果它期望來自 convert(fraction) function 的 ZeroDivisionError 和 ValueError,我該如何再次重新運行 main() function?

一旦您從用戶那里獲得了有效輸入 - 即,您可以用百分比表示的內容,只需從 function 返回該值並根據需要將其傳遞給另一個。

是這樣的:

def convert(fraction):
    pass

def main():
    while True:
        fraction = input('Fraction: ')
        try:
            a, b = map(float, fraction.split('/'))
            print(f'{round(a/b*100)}%')
            return fraction
        except (ValueError, ZeroDivisionError):
            print('Invalid input')


if __name__ == '__main__':
    fraction = main()
    convert(fraction)

暫無
暫無

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

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