テストエンコーディング(プログラマステップ1(8:整数平方根判別)


問題の説明:
任意の正の整数nについて、nがある正の整数xの二乗であるか否かを判断しようとする.
nが正の整数xの平方である場合、x+1の平方を返し、nが正の整数xの平方でない場合、-1を返す関数を完了する.
制限:
nは正の整数であり、5000000000000以上である.
I/O例:
n return
121 144
3 -1
I/O例説明:
I/O例#1
121は正の整数11の二乗であるため、144に(11+1)を乗算する.
I/O例#2
3は、正の整数の二乗ではないため、-1を返します.
私の答え:
from math import sqrt

def solution(n):
    if sqrt(n) - int(sqrt(n)) == 0: # float 형태 - int 형태를 빼서 확인.
        answer = (sqrt(n)+1)**2
    else :
        answer = -1
    return answer
其他回答:
def nextSqure(n):
    sqrt = n ** (1/2)

    if sqrt % 1 == 0:
        return (sqrt + 1) ** 2
    return 'no'
TAKEAWAY :
  • math libraryから平方根sqrt()関数を読み込むのは冒険的です.sqrt=n**(1/2)と定義しましょう.
  • 他人の答えの中で‘-1’はどのように出力します...
  • 感じ:
  • どうしてだめなの...復習!