2017-07-07 18 views
-4
def solve(numLegs,numHeads): 
for numChicks in range(0, numHeads + 1): 
numPigs = numHeads - numChicks 
totLegs = 4*numPigs + 2*numChicks 
if totLegs == numLegs: 
return(numPigs,numChicks) 
return(None,None) 

def barnYard(): 
heads = input('Enter a Number of heads') 
legs = input('Enter a Number of legs') 
pigs,chickens = solve(legs,heads) 
if pigs == None: 
    print ('There is no solution') 
else: 
    print ('number of Pigs',pigs) 
    print ('number of chickens',chickens) 

print (barnYard()) 

このコードでは3桁のエラーが発生しています。なぜ誰かがエラーを出すのを理解するのを助けることができますか?Pythonプログラムが動作しない理由をデバッグするには?

+2

ここにはどのような場所がありますか?あなたのエラーは何ですか? –

+1

ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 投稿したコードをテキストファイルに貼り付け、説明した問題を再現できるはずです。 – Prune

+1

あなたはどこにでも多くを得る前にインデントを修正する必要があります。 – Prune

答えて

2

主なエラーは、空白がPythonでは不可欠であるということです。正しい字下げを維持する必要があります。

関数の定義は、ループやif文と同様にインデントする必要があります。

returnsは、返されるアイテムの前に空白が続く必要があるステートメントです。 (return(x)を実行すると、正しいreturn文を実行する代わりに、定義されたreturn関数を呼び出そうとします)

もう1つのエラーは、入力から変数を受け入れると文字列として受け取ることです。整数として数学に使用する場合は、int(input("your prompt"))でキャストする必要があります

もう1つのエラーは、文字列を別の変数に結合するためにカンマを使用していることです。それらを文字列にして、+演算子を使用してprintステートメントでそれらの文字列にアクセスします。

def solve(numLegs,numHeads): 
    for numChicks in range(0, numHeads + 1): 
     numPigs = numHeads - numChicks 
     totLegs = 4*numPigs + 2*numChicks 
     if totLegs == numLegs: 
      return (numPigs,numChicks) 
     return (None,None) 

def barnYard(): 
    heads = int(input('Enter a Number of heads')) 
    legs = int(input('Enter a Number of legs')) 
    pigs,chickens = solve(legs,heads) 
    if pigs == None: 
     print ('There is no solution') 
    else: 
     print ('number of Pigs ' + str(pigs)) 
     print ('number of chickens ' + str(chickens)) 

print (barnYard()) 
関連する問題