2013-04-20 128 views
1

我對Python仍然很陌生,對於我正在開發的程序發生了什麼感到困惑。代碼如下。問題是代碼從不運行任何if/elif/else行。它只是讓菜單和輸入循環。我使用3.2。雖然Python循環無法正常工作(初學者)

# Program to Add, Subtract, Multiply, and Divide 

def printmenu(): 
    print("Calculator v0.01") 
    print("[A]dd Two Numbers") 
    print("[S]ubtract Two Numbers") 
    print("[M]ultiply Two Numbers") 
    print("[D]ivide Two Numbers") 
    print("[Q]uit the Program") 

choice = "x" 

while choice.lower != "q": 
    printmenu() 
    choice = input("What would you like to do? ") 
    firstnum = input("What is the first number? ") 
    secnum = input("What is the second number? ") 
    if choice.lower == "a": 
     print("The answer is ", (firstnum + secnum)) 
    elif choice.lower == "s": 
     print("The answer is ", (firstnum - secnum)) 
    elif choice.lower == "m": 
     print("The answer is ", (firstnum * secnum)) 
    elif choice.lower == "d": 
     print("The answer is ", (firstnum/secnum)) 
    else: 
     print("Choice not recognized. Try again!") 

P.S. - 這是我在這裏的第一篇文章,所以如果我沒有做好正確的事情,請讓我知道。

謝謝!

JT

+0

您的帖子很好 - 您的問題標題指示帖子的內容/您想要回答的內容,您提供的代碼不工作,您說什麼不工作以及您期望發生什麼。 – Patashu 2013-04-20 11:24:10

回答

3
>>> "a".lower 
<built-in method lower of str object at 0x0000000001EBBBC0> 
>>> "a".lower() 
'a' 
>>> "a".lower == "a" 
False 
>>> "a".lower() == "a" 
True 
>>> 

我想你的意思是低於(),而不是更低;)

+0

是的,就是這樣!當然,現在它的行爲不正確,因爲我沒有將num轉換爲float/int,所以5 +2 = 52,但通過放入float(input())可以輕鬆修復。謝謝你的幫助。 – 2013-04-20 11:24:29

0

所有的Python內置函數應該被稱爲使用()。因此,使用

if choice.lower()!="q": 

只有這樣才能調用該函數。否則該值始終返回False,因爲沒有函數執行

0
  1. 通過lower()
  2. 使用float(fisrtnum) + float(secnum)更換lower,否則將正好連接炭和「2」給出了23 +「3」