Python 检查整数时出现逻辑错误

Python 检查整数时出现逻辑错误,python,python-3.x,Python,Python 3.x,我刚刚写了一个代码来检查一个数字是否是一个完美的正方形,遇到了一个问题-该代码仅适用于“4”,例如,如果输入的数字是36,当我达到值6时,我**我被发现是6*36-我的意思是我在那里拥有不同的值 n=int(input('Enter an integer ')) x=0 for i in range(1,n+1): if (i**i)==n: print('you entered a perfect square ',i,'^',i,'=',n) else:

我刚刚写了一个代码来检查一个数字是否是一个完美的正方形,遇到了一个问题-该代码仅适用于“4”,例如,如果输入的数字是36,当我达到值6时,我**我被发现是6*36-我的意思是我在那里拥有不同的值

n=int(input('Enter an integer '))
x=0
for i in range(1,n+1):
    if (i**i)==n:
        print('you entered a perfect square ',i,'^',i,'=',n)
    else:
        x=x+1
if x==n:
    print('you didnt enter a perfect square ')

我不想对我的逻辑进行任何编辑-有人请改进相同的代码,在Python中,
i**i
表示
i^i
,但要检查给定的数字是否是一个完美的正方形,需要检查
如果i**2==n
。根据您的逻辑,我们不需要检查大于
sqrt(n)
的数字。如果使用函数,代码将更易于调试。因此,改进的版本将是:

from math import sqrt

def is_perf_sq(n):
    for i in range(1, int(sqrt(n))+1):
        if i**2 == n:
            return 'You entered a perfect square '+ str(i) + '^ 2 =' + str(n)
    return str(n) + ' is not a perfect square'

n = int(input('Enter an integer:').strip())
print(is_perf_sq(n))
运行时改进:

你不需要检查所有的数字和平方,然后检查它们,你只需要这个数字的平方根。然后将
0.5
加到它上面,并将整数部分平方,如果我们得到这个数字,那么它就是一个完美的平方,否则就不是了。因此,代码将是:

from math import sqrt
n = int(input('Enter an integer:'))
if int(sqrt(n)+0.5)**2 == n:
    print(n, 'is a perfect square')
else:
    print(n, 'is not a perfect square')
换线

if (i**i)==n:

if (i*i) == n: