2014-09-05 275 views
-2

這是一個非常簡單的計算器程序的Python代碼。有人可以解釋這個簡單的Python計算器代碼嗎?

loop = 1 # 1 means loop, 0 means don't loop. 

choice = 0 # holds the user's choice in the menu. 

while loop == 1: 
    print ("Welcome to the python calculator.") 

    print ("Your options are:") 
    print ("") 
    print ("1) Addition") 
    print ("2) Subtraction") 
    print ("3) Multiplication") 
    print ("4) Division") 
    print ("5) Quit calculator") 
    print ("") 

    choice = input("Choose your option: ") 
    if choice == 1: 
     add1 = input ("Add this: ") 
     add2 = input ("to this: ") 
     print (add1, "+", add2, "=", add1+add2) 
    elif choice == 2: 
     sub1 = input ("Subtract this: ") 
     sub2 = input ("from this: ") 
     print (sub1, "-", sub2, "=", sub1-sub2) 
    elif choice == 3: 
     mul1 = input ("Multiply this: ") 
     mul2 = input ("by this: ") 
     print (mul1, "*", mul2, "=", mul1*mul2) 
    elif choice == 4: 
     div1 = input ("Divide this: ") 
     div2 = input ("by this: ") 
     print (div1, "/", div2, "=", div1/div2) 
    elif choice == 5: 
     loop = 0 

print ("Thank you for using the python calculator, goodbye.") 

的問題是,當它得到的以「選擇你的選擇」線和用戶輸入的不是去IF-elif的塊的相關部分的數,程序而是返回到用「歡迎使用python計算器」消息開始循環。

我試着打印出選擇的變量用戶輸入他們的選擇並正確打印出來,讓任何人都可以解釋爲什麼它不然後使用在IF-elif的塊選擇值後立即?

+5

'str' VS:

if choice == 1: 

...應該對一個字符串進行評估'int'問題 – vaultah 2014-09-05 15:47:09

+0

@vaultah哦! Python中的input()函數是否以字符串形式讀取值?我剛剛開始使用Python,所以沒有意識到這一點。那麼最好的解決方案然後將用戶選擇投入到一個int或是有一個函數類似於input()讀入一個int而不是一個字符串? – 2014-09-05 15:50:30

+1

你可以隨時轉換它:'int(input('Whatever'))' – vaultah 2014-09-05 15:54:58

回答

2

正如@vaultah提到:

if choice == "1": 

對於使用Python 2.x的人,be careful of raw_input() vs. input()

+1

啊,我也可以比較兩個字符串,就像你在這裏做的那樣。 相反,我選擇將它們轉換爲@vaultah建議的整數。 非常感謝,新來的Python。 – 2014-09-05 16:03:33

0

更換

choice = input("Choose your option: ") 

有:

choice = int(raw_input("choose your option: ")) 

這將返回int,而不是一個str,應該解決這個問題。

+0

經過測試併爲我工作 – 2014-09-05 15:59:16

+3

在Python 3上進行測試,因爲問題已被標記。 – davidism 2014-09-05 15:59:40

+0

@davidism我的錯誤,沒有看到標籤,因爲我從我的手機回答。我會保留答案,因爲其他人可能會覺得它有用。 – 2014-09-05 17:14:00

相關問題