我正在尝试创建一个程序来创建第一个第n个Fibonacci术语列表。程序本身的工作原理是它创建斐波纳契数列表。问题是我想检查以确保n是一个正整数但我不知道如何。
以下是代码:
n = int(input("Please enter the number of Fibonacci numbers you want: "))
def fib(n):
if 0 <= n <= 1:
return 1
else:
return(fib(n-1) + fib(n-2))
if n < 0:
print("Please enter a positive integer")
n = None
fib(n)
else:
for i in range(n):
print(fib(i), end=", ")
ender = input("\nPress enter to end the program\n")
我如何创建一个消除n的负值并再次询问它的循环?
非常感谢
答案 0 :(得分:1)
将n
设置为-1,然后只要n
的当前值为负数,就会有一个要求新n
的循环。
答案 1 :(得分:1)
进一步扩展其他人给你的东西:
n = -1
while n < 0:
try:
n = int(input("Please enter the number of Fibonacci numbers you want: "))
except ValueError:
continue
将处理那些试图偷偷插入HELLO
而不是5
答案 2 :(得分:0)
解决这个问题的好方法如下:
n = int(input("Please enter the number of Fibonacci numbers you want: "))
while n < 0:
n = int(input("Bad input! try again: "))
*** do your other things ***
这样,它会反复检查,直到你有好的输入。
答案 3 :(得分:0)
您可以在代码的开头设置while循环:
n = -1
while n <= 0:
n = int(input("Please enter the number of Fibonacci numbers you want: "))
答案 4 :(得分:-1)
您可以使用布尔变量,在输入正数之前保持循环,在这种情况下,您将值转为False
def fib(n):
if 0 == n and n == 1:
return 1
else:
return(fib(n-1) + fib(n-2))
isTrue= True
while isTrue:
n = int(input("Please enter the number of Fibonacci numbers you want: "))
if n < 0:
print("Please enter a positive integer")
else:
isTrue= False
for i in range(n):
print(fib(i), end=", ")
ender = input("\nPress enter to end the program\n")