2016-04-13 14 views
0

カウントされたループのカウントとして平方根を使用しようとしていますが、浮動小数点が必要です。私はmath.sqrtによって提供された値をfloatに変換することが考えられるあらゆる方法を試しましたが、私はまだメッセージを受け取ります。python 3 - math.sqrt - 浮動小数点が必要です

コード:

from random import randrange 
import math 


def getInfo(): 

    tilesNum = float(input("Please enter number of tiles now: ")) 



def procedure(tilesNum): 

    countX = 0 

    SqRoot = float(math.sqrt(tilesNum)) 

    print(SqRoot) 

    for i in range(float(SqRoot)): 

     countX = countX + 1 
     countY = 0 


     for i in range(float(SqRoot)): 
      countY = countY + 1 
      terrain = randrange(1, 5) 

      if terrain == 1: 
       print("terrain on tile", countX, countY, "is frozen") 

      elif terrain == 2: 
       print("terrain on tile", countX, countY, "is flooded") 

      elif terrain == 3: 
       print("terrain on tile", countX, countY, "is impeded by rocks") 

      else: 
       print("terrain on tile", countX, countY, "is overgrown") 




def main(): 

    tilesNum = getInfo() 

    procedure(tilesNum) 

main() 

エラー:

Traceback (most recent call last): 
    File "C:\Users\Rainy\AppData\Local\Programs\Python\Python35\PBA prototype (problem).py", line 50, in <module> 
    main() 
    File "C:\Users\Rainy\AppData\Local\Programs\Python\Python35\PBA prototype (problem).py", line 48, in main 
    procedure(tilesNum) 
    File "C:\Users\Rainy\AppData\Local\Programs\Python\Python35\PBA prototype (problem).py", line 15, in procedure 
    SqRoot = float(math.sqrt(tilesNum)) 
TypeError: a float is required 

すべてのヘルプは大歓迎です!

+0

あなたは@ Rob fromから正しい答えを得ています。次回は、そのようなメッセージが表示されたら、タイルが何であるかを確認してください。 - 行にブレークポイントを置き、チェックしてください。または、printステートメントを追加します。 – zmbq

答えて

3

あなたはreturnの文が欠落しています。これを試してみてください:

def getInfo(): 
    tilesNum = float(input("Please enter number of tiles now: ")) 
    return tilesNum 

あなたgetInfo()は、明示的なreturn文を持っていないので、それは暗黙的にNoneを返します。 main()Noneprocedure()に渡します。 procedure()の内部では、Nonemath.sqrt()に渡します。 math.sqrt()にはTypeErrorが含まれています。

+0

良い答え。 3つの 'tilesNum'がどのように3つの異なる変数であるかを説明することで、さらに改善できると思います。私は、これが混乱の原因であると考えています。 – NPE

+0

お返事ありがとうございます。それは完璧に働いた。私の緑を赦してください。経験豊富なプログラマーが私のようなnewbs/noobsを手伝ってくれたことは素晴らしいことです。 あなたのおかげで、Robの答えに加えてNPEもあります。 –

関連する問題