2017-07-07 3 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()) 

Ich bekomme Fehler in 3 Stellen in diesem Code; kann jemand mir helfen, herauszufinden, warum es Fehler gibt?Wie zu debuggen, warum mein Python-Programm nicht funktioniert?

+2

Was sind diese Orte? Was ist dein Fehler? –

+1

Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune

+1

Sie müssen Ihren Einzug korrigieren, bevor dies viel von überall erhalten wird. – Prune

Antwort

2

Der Hauptfehler ist, dass Whitespace in Python wesentlich ist. Sie müssen den korrekten Einzug beibehalten.

Ihre Funktionsdefinitionen müssen eingerückt werden, ebenso wie für Schleifen und if-Anweisungen.

returns sind Anweisungen, denen Leerzeichen folgen müssen, bevor das Element zurückgegeben werden soll. (doing a return(x) würde versuchen, eine definierte return-Funktion aufzurufen, anstatt die richtige return-Anweisung auszuführen)

Ein weiterer Fehler ist, dass wenn Sie eine Variable von Eingabe akzeptieren, kommt es als Zeichenfolge. Wenn Sie es für Mathe als Integer verwenden möchten, müssen Sie es mit int(input("your prompt"))

umwandeln Ein weiterer Fehler besteht darin, dass Sie Kommas verwenden, um eine Zeichenfolge einer anderen Variablen beizutreten, und obendrein ist es keine Zeichenfolge. Machen Sie sie zu Strings und verwenden Sie dann den Operator +, um sie in der print-Anweisung zu kontaktieren.

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())