2015-11-12 58 views
-2

我正在嘗試構建一個簡單的計算器。我只想讓用戶輸入兩個數字和一個操作,然後爲了顯示計算結果,然後再次循環輸入兩個數字。如果用戶輸入了無法識別的操作,我想循環回'輸入操作'。Python - 循環

這是爲什麼不工作:

def add (a,b): 
    return a + b 

def minus (a,b): 
    return a - b 

def multi (a,b): 
    return a * b 

def div (a,b): 
    return a/b 

def numPic(): 
    num1 = int(input("Type a number: ")) 
    num2 = int(input("Type another number: ")) 

def opPic(): 
     op = input("Type an operation (add,minus,multi,div):") 
     if op == "add": 
      print (add (num1,num2)) 
     elif (op == "minus"): 
      print (minus(num1,num2)) 
     elif (op == "multi"): 
      print (mulit(num1,num2)) 
     elif (op == "div"): 
      print (div(num1,num2)) 
     else : 
      print ("operation not recognised") 
      opPic() 

print ("Hello User") 
numPic() 
opPic() 
+0

然後使用循環.. – Maroun

+0

您沒有使用循環。 – Zety

+0

你的代碼中沒有循環。我假設你得到'NameError'試圖訪問'num1'和'num2'? – Holloway

回答

0

num1num2numPic定義是局部的功能。你需要返回它們並將它們傳遞給opPic函數以供它們使用。

def numPic(): 
    num1 = int(input("Type a number: ")) 
    num2 = int(input("Type another number: ")) 
    return num1, num2 

def opPic(num1, num2): 
    #the same code as before 
    #except changing opPic() to opPic(num1, num2) 

print ("Hello User") 
num1, num2 = numPic() 
opPic(num1, num2) 

有更好的方法來做你似乎瞄準的東西。你實際上並沒有使用循環,而是使用了遞歸。

+2

只需指出,這是代碼中的一個錯誤,而不是他/她的問題的答案。 – kazbeel

+0

@WoozyCoder,問題是「爲什麼這不起作用?」誠然,這不是我如何解決問題,但仍然如此。 – Holloway

+0

是的!這是有效的,但正如你指出的那樣,似乎我以非正統的方式實現了這一點。 – dandannn

2

你有一些錯誤。首先,num1num2是本地的numPic - 不是 全局。所以,你需要將它們返回給調用者,調用者必須通過 他們opPic()

def numPic(): 
    num1 = int(input("Type a number: ")) 
    num2 = int(input("Type another number: ")) 
    return num1, num2 

def opPic(num1, num2): 
    op = input("Type an operation (add,minus,multi,div):") 
    if op == "add": 
     print (add (num1,num2)) 
    elif (op == "minus"): 
     print (minus(num1,num2)) 
    elif (op == "multi"): 
     print (mulit(num1,num2)) 
    elif (op == "div"): 
     print (div(num1,num2)) 
    else : 
     print ("operation not recognised") 
     opPic (num1, num2) 

num1, num2 = numPic() 
opPic (num1, num2) 

爲了使基於循環的,你可以這樣做:

def opPic(num1, num2): 
    while True: 
     op = input("Type an operation (add,minus,multi,div):") 
     if op == "add": 
     print (add (num1,num2)) 
     elif (op == "minus"): 
     print (minus(num1,num2)) 
     elif (op == "multi"): 
     print (mulit(num1,num2)) 
     elif (op == "div"): 
     print (div(num1,num2)) 
     else : 
     print ("operation not recognised") 
     continue 

     break 

希望,你可以自己弄清楚另一點,因爲這看起來像是一個學校作業。

+0

非常感謝,我會閱讀'真實'。 – dandannn