gpt4 book ai didi

Python如何对非正数进行异常处理

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:09 24 4
gpt4 key购买 nike

如何在此处引发异常以捕获非正输入?如果我输入一个负数,现在什么也不会打印出来

"""
Generate fibonacci sequence to the nth digit
"""
def fib(n):
try:
if n <= 0:
raise Exception
prev = 0
curr = 1
for terms in range(0, int(n)):
nxt = prev + curr
print str(curr),
prev = curr
curr = nxt
except ValueError or Exception:
new = raw_input("Invalid input. Please enter a positive integer: ")
fib(new)

n = raw_input("Enter number of terms: ")
fib(n)

最佳答案

正如 Jon 所说,将输入收集与核心 Fibonacci 计算分开是一种更好的设计策略。此外,使用简单循环通常比使用递归调用(在其自身内部调用函数)更好,除非您真的需要递归(例如,在处理递归数据结构时,如目录树) .

这是您的代码的修改版本。我做了一些其他的小改动。在 Python 中,我们不需要像 nxt 这样的临时变量来进行核心的 Fibonacci 计算。相反,我们使用元组赋值,这样我们就可以一步更新 curr 并将旧的 curr 保存到 prev

def input_positive_integer(prompt=''):
""" Get a positive integer from the user """
while True:
try:
n = int(raw_input(prompt))
if n <= 0:
raise ValueError
break
except ValueError:
print "Invalid input.",
prompt = "Please enter a positive integer: "
return n

def fib(n):
""" Print n terms of the Fibonacci sequence """
prev, curr = 0, 1
for terms in range(n):
print curr,
prev, curr = curr, prev + curr

n = input_positive_integer("Enter number of terms: ")
fib(n)

测试

Enter number of terms: -4
Invalid input. Please enter a positive integer: q
Invalid input. Please enter a positive integer: 2.5
Invalid input. Please enter a positive integer: 5
1 1 2 3 5

关于Python如何对非正数进行异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38219057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com