如果其中一个函数抛出错误,我如何在python中重新运行main()函数?



这是一个程序,当以分数形式输入时返回燃料的百分比,其中输入被传递给另一个函数


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()

但是我想把输入(燃料)传递给另一个函数(convert())。那么,我怎么能再次重新运行main()函数,如果它期望从转换(分数)函数得到ZeroDivisionError和ValueError ?

一旦你从用户那里得到了有效的输入——也就是说,一些你可以用百分比表示的东西,只要从函数中返回那个值,并根据需要将它传递给另一个。

像这样:

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)

最新更新