Как исправить ошибку "не определено" в этом коде - PullRequest
0 голосов
/ 24 марта 2019

Я знаю, что это ужасный кусок кода, и, вероятно, неясно, чего я хочу достичь с этим. Я только начинаю с кодирования.

В основном мне нужно выяснить, существует ли (или есть) такое положительное целое число 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 ]

2 голосов
/ 24 марта 2019

Сначала вам нужно определить 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
0 голосов
/ 24 марта 2019

n не определено, потому что ваш код говорит, что n = (int) n и n никогда не определялись ранее, поэтому вместо этого попробуйте ввести строку, которая говорит: n =, а затем значение.

0 голосов
/ 24 марта 2019

Я думаю, что это то, чего вы пытаетесь достичь:

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.')
0 голосов
/ 24 марта 2019

это то, что вы хотите:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...