2013-11-21 62 views
0

我是Python的新手,我試圖編寫一個計算器。問題是我找不到一種方法來使變量num1num2執行我爲他們列出的操作。他們所做的只是連接兩個數字而不是執行操作,有什麼建議?謝謝。Python計算器連接而不是預執行操作

letter =() 

class Calc(): 

    print raw_input("What operation do you want to do?\n\tA) Addition\n\tB) Subtraction\n\ ") 
    num1 = raw_input("Please enter your first number: ") 
    num2 = raw_input("Please enter your second number: ") 

    if letter == 'A' or 'a': 
     print "The sum of", num1, "plus", num2, "equals" 
     print num1 + num2 
    elif letter == 'B' or 'b': 
     print "The difference of", num1, "minus", num2, "equals" 
     print num1 - num2 
+4

的兩個問題。首先,不要將字符串解析爲整數或浮點數,所以Python將'+'解釋爲字符串連接。其次,'letter =='A'或'a''並不意味着「如果信是其中之一」。它意味着'(letter =='A')或'a'',它總是爲真,因爲在布爾上下文中'a'是真的。 – user2357112

回答

0

這是因爲你正在做字符串操作。 raw_input返回string,因此您必須使用:float()int()手動將其轉換爲intfloat

這樣做:

print int(num1) + int(num2)要想在他們的加法的形式打印的數字。

4

raw_input返回一個字符串,所以你的兩個輸入是連接的。在使用數字運算符之前,您需要將該輸入轉換爲數字。

num1 = int(raw_input("Please enter your first number: ")) 

您可以使用floatint將輸入字符串轉換爲數字。

您還需要

if letter == 'A' or 'a': 

if letter == 'A' or letter == 'a': 
+0

如果說['A','a']中的字母是否會變成Pythonic:'? – darthbith

+3

@darthbith一個字面集比列表字面好,但幾乎可以肯定地說最好'如果letter.lower()=='a'' – roippi

+1

@darthbith這可能是更多的Pythonic。正如roippi指出的那樣,在這種情況下也可以使用lower()和upper()函數。 –

2

您正在使用的raw_input () 其將輸入的字符串來改變。

如果你想將它們加在一起,你想用 NUM1 =浮動(NUM1)

前加入。

-1

我認爲這會做什麼你問:

letter = raw_input("What operation do you want to do?\n\tA) 
     Addition\n\tB)Subtraction\n") 
num1 = input("Please enter your first number: ") 
num2 = input("Please enter your second number: ") 
if letter == 'A' or 'a': 
    print "The sum of", num1, "plus", num2, "equals" 
    print num1 + num2 
elif letter == 'B' or 'b': 
    print "The difference of", num1, "minus", num2, "equals" 
    print num1 - num2 
+0

這並沒有解決「或」問題(OP從來沒有注意到,因爲它,str-str將失敗),並建議某人使用更危險的「輸入」 over'raw_input'可能不是最好的選擇。 – SethMMorton