创建一个循环来检查变量以确保它是一个正整数

时间:2014-11-05 01:08:13

标签: python loops

我正在尝试创建一个程序来创建第一个第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,将其设置为整数
  • 然后程序定义函数fib(n)
  • 然后检查n是否等于1或0并返回值1
  • 如果没有,则它在值n
  • 上执行Fibonacci序列
  • 然后检查完​​成,如果n < 0然后打印错误并删除n
  • 的值
  • 这就是出现问题的地方,因为它无法循环并替换n的值,因为它会创建一个无限循环,而我无法在fib(n)函数中定义n的整数值
  • else语句只是格式化并在逗号和空格分隔的列表中打印出Fibonacci数字,并且ender保存程序以使其不会自动结束。

我如何创建一个消除n的负值并再次询问它的循环?

非常感谢

5 个答案:

答案 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")