2017-07-12 12 views
0

私は愚かな問題があるので、簡単なエクササイズでほとんど助けを求めません。Python - ValueError:基数10のint()のリテラルが無効です:'12 .449899598 '

私が取得: "とValueError:int型のための無効なリテラル()ベース10と:'12 0.449899598' "

-whenこのコードを実行しようとしている:

def find_next_square(sq): 
    # Return the next square if sq is a square, -1 otherwise 
    from decimal import Decimal 
    import math 
    x = math.sqrt(sq) 
    y = str(x) 
    z = y.rstrip('0').rstrip('.') if '.' in y else y 

    for k in z: 
     if k != '.': 
      a = int(z) 
      return (a+1) * (a+1) 
     else: 
      return -1 

4つのサンプルテストだけで、ポジティブでありますこのエラーは、エクササイズを通過することが不可能になります.. アドバイスを先にありがとう。

答えて

2

文字列を整数に直接変換することはできません。必要に応じて、代わりにintに第1およびfloatに変換:

a = int(float(z))

あなただけに走った種類のエラーをキャッチするためにtry-exceptを使用することも良いアイデアです。

関連する問題