2017-07-07 16 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

主要的錯誤是Whitespace在Python中是必不可少的。您必須保持正確的縮進。

您的函數定義需要縮進,循環和if語句也一樣。

returns是在它們要返回的項目之前需要緊跟空格的語句。 (做一個return(x)會嘗試調用定義的return函數,而不是運行正確的return語句)

另一個錯誤是,當您從輸入接受一個變量時,它將以字符串形式出現。如果你想用它作爲一個整數的數學,你需要投它int(input("your prompt"))

另一個錯誤是,你使用逗號將字符串連接到另一個變量,並且它不是一個字符串。使它們成爲字符串,然後使用+運算符在打印語句中聯繫它們。

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()) 
相關問題