我的范围是 1-50,我必须找出哪些是斐波那契数,然后我必须找出这些数字中哪些包含数字 1 和 2 pyth

I have a range from 1-50 and I had to find out which are Fibonacci number after that I have to find which of these numbers contain number 1 and 2 pyth

我有一组从 1 到 50 的数字,我必须从这些数字中找出哪些是斐波那契数,然后我必须找出这些数字中哪些包含数字 1 和 2。

例如,在我的代码中,我的斐波那契数是 0、1、2、3、5、8、13、21、34 我已经编写了代码,但我无法添加问题的最后一部分,所以它发现了这些数字中哪些包含数字 1 或 2。 这是我的代码

def isPerfectSquare(x):
    s = int(math.sqrt(x))
    return s * s == x


def isFibonacci(n):
    return isPerfectSquare(5 * n * n + 4) or isPerfectSquare(5 * n * n - 4)


for i in range(0, 51):
    if isFibonacci(i) == True:
        print(i, "is a Fibonacci Number")
    else:
        print(i, "is a not Fibonacci Number ")


for q in range(1, 51):
    if isFibonacci(i) == True and '1' in i and '2' in i:
        print(q)
    else:
        print('Error') 

结果是这样的,它给了我所有这些数字 0、1、2、3、5、8、13、21、34 作为斐波那契,其余的并不完美,但它一直在给出我的错误,我想做的是编写一个循环,其中包含所有斐波那契数,例如这些 0、1、2、3、5、8、13、21、34,并且在数字中包含 1 和 2打印出来但它只是将所有内容打印为错误。

for q in range(1, 51):
    if isFibonacci(q) == True and '1' in str(q) and '2' in str(q):
        print(q)
    else:
        print('Error') 
  1. 这个循环的变量是q,不是i
  2. 您必须使用 str(...) 将数字转换为字符串。