Python 输入采用整数作为字符串对象

Python 输入采用整数作为字符串对象,python,python-3.x,Python,Python 3.x,我试图从用户那里强制获取输入,并在斐波那契元素程序中执行它,在输入附近出现问题我想确保他不会输入字符或-ve数字,当我将输入作为int(input())时,我的while循环不会执行,我希望它一直执行,直到用户提供输入 在下面的程序中,当我输入5作为输入时,将其作为字符串对象 n=input("enter no of fibonnaci elements: ") while not n: n=input("enter no of fibonnac elements: ") print(t

我试图从用户那里强制获取输入,并在斐波那契元素程序中执行它,在输入附近出现问题我想确保他不会输入字符或-ve数字,当我将输入作为int(input())时,我的while循环不会执行,我希望它一直执行,直到用户提供输入

在下面的程序中,当我输入5作为输入时,将其作为字符串对象

n=input("enter no of fibonnaci elements: ")
while not n:
    n=input("enter no of fibonnac elements: ")
print(type(n))
if(n!=int()):
    print("enter integer only")
else:
    t1=0
    t2=1
    print("series is:",end=" ")
    for i in range(n):
        print(t1,end=" ")
        t1,t2=t2,(t1+t2)
print()

您可以使用
isinstance(n,int)
检查它是否为int。但是如果您使用
int(输入(“输入fibonnaci元素的数量”)
,那么它将在它前面抛出一个ValueError

n=int(input("enter no of fibonnaci elements: ")) #convert to int here
while not n: #will not enter this loop - why is it even here?
    n=input("enter no of fibonnac elements: ")
if(not isinstance(n,int)): #Note: won't Reach this line - Will throw an error before this
    print("enter integer only")
else:
    t1=0
    t2=1
    print("series is:",end=" ")
    for i in range(n):
        print(t1,end=" ")
        t1,t2=t2,(t1+t2)
print()
这是一个更好的方法

while True:
    try:
        n=int(input("enter no of fibonnaci elements: "))#convert to int here
        break
    except ValueError:
        print("enter integer only")
t1=0
t2=1
print("series is:",end=" ")
for i in range(n):
    print(t1,end=" ")
    t1,t2=t2,(t1+t2)
print()
输出

enter no of fibonnaci elements: str
enter integer only
enter no of fibonnaci elements: 6
series is: 0 1 1 2 3 5
Input将所有内容都作为字符串objecti尝试了int(Input()),但我的while循环不会对整数执行,我想重复该循环,直到用户在我尝试int(Input())时给出一些输入,它抛出错误。。