[英]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.