如何修复此代码中的“ n未定义”错误

时间:2019-03-24 11:25:27

标签: python math

我知道这是一段糟糕的代码,可能不清楚我想要实现什么。我只是从编码开始。

基本上,我需要找出是否存在(或存在)这样的正整数n,它将n*(n+1)(n**2+1)+1变成一个完美的正方形。我确定3可以满足目标,但即使知道这一事实,我也无能为力。

很明显,应该有一个循环来检查n > 1的值,但是我似乎无法弄清楚如何记下来而不引起n is not defined错误。我尝试通过输入函数定义n并手动进行操作,但导致此错误:Int ... can't be called.

# n*(n+1)(n**2+1)+1

import math

n = int(n)
m = n*(n+1)(n**2+1)+1

while n > 1 :
    if math.sqrt(m) == int:
        print(n)
        break

4 个答案:

答案 0 :(得分:2)

首先,您需要使用初始值定义n。 然后,您可以测试m的平方根是否是整数,从而m是一个完美的平方,还需要在下一次迭代中将n递增

import math
n = 2
while n > 1 :
    m = n*(n+1)(n**2+1)+1
    if math.sqrt(m).is_integer():
        print(n)
        break
    else:
        n+=1

答案 1 :(得分:0)

这是您想要的吗?

import math
#get a input num
n = int(input('type a num:\n'))
#options that are open:
m = n*(n+1) + (n**2+1)+1 # add
#m = n*(n+1) * (n**2+1)+1 = mul
#m = n*(n+1) / (n**2+1)+1 = div
#m = n*(n+1) - (n**2+1)+1 = sub
#n > 1?
if n > 1 :
    #if the types are the same
    if type(math.sqrt(m)) == type(int):
        print(n)
    #else print the other info about what could be going wrong
    else:
        print(math.sqrt(m))
        print(n)

答案 2 :(得分:0)

我认为这是您要实现的目标:

import math
n = int(input()) #taking input from user
m = n*(n+1)*(n**2+1)+1 #defining m
o = math.sqrt(m) #taking squareroot 
if int(o) == o: 
   print(str(n) + ' fits the criteria!')
else:
   print(str(n) + ' does not fit the criteria.')

答案 3 :(得分:0)

n未定义,因为您的代码说n = (int) n并且n以前从未定义过,因此请尝试在行中写上n =,然后输入一个值