2016-12-14 70 views
-1

當我執行並運行代碼時,程序似乎不存儲c輸入,因此不會繼續執行代碼來執行計算器功能的其餘部分。爲什麼我的Python計算器不工作?

def calc(): 

    print("Press 1 for addition") 
    print("Press 2 for subtraction") 
    print("Press 3 for multiplication") 
    print("Press 4 for division") 

    c = input() 

    if c == 1: 
     print("Enter a number") 
     x = input() 
     print("Enter another number") 
     y = input() 
     return x + y 

    elif c == 2: 
     print("Enter a number") 
     x = input() 
     print("Enter another number") 
     y = input() 
     return x - y 

    elif c == 3: 
     print("Enter a number") 
     x = input() 
     print("Enter another number") 
     y = input() 
     return x * y 

    elif c == 4: 
     print("Enter a number") 
     x = input() 
     print("Enter another number") 
     y = input() 
     return x/y 

calc() 

我現在已經改進的代碼,但似乎無法得到正確的縮進,似乎是對每種類型的正在執行的數學回歸函數是「外面的功能」

def calc(): 
print("Press 1 for addition") 
print("Press 2 for subtraction") 
print("Press 3 for multiplication") 
print("Press 4 for division") 

c = int(input()) 

def get_inputs(): 
    print("Enter a number") 
    x = int(input()) 
    print("Enter another number") 
    y = int(input()) 
    return x, y 

if c == 1: 
    x, y = get_inputs() 
    return x + y #These return functions seem to be an error 

elif c == 2: 
    x, y = get_inputs() 
    return x - y 

elif c == 3: 
    x, y = get_inputs() 
    return x * y 

elif c == 4: 
    x, y = get_inputs() 
    return x/y 

calc() 
+4

'輸入()'返回在Python 3的字符串;你想要一個整數'c = int(input())' –

+0

是什麼問題? – harshil9968

回答

0

input()在Python 3中與Python 2.7中的raw_input()相同,它返回str類型的對象。你需要明確其類型強制轉換爲int

c = int(input()) 
+0

這並沒有解決所有問題,也沒有解釋爲什麼它需要.. – Li357

0

首先,使用c = int(input())而不是輸入字符串轉換爲整型。 此外,只是爲了讓節目更清潔,因爲你已經在使用功能(calc),還不如把輸入的是對每一個操作的功能:

def get_inputs(): 
    print("Enter a number") 
    x = int(input()) 
    print("Enter another number") 
    y = int(input()) 
    return x, y 

然後爲每個操作這樣做:

if c == 1: 
    a, b = get_inputs() 
    return a + b 

(編輯)嘗試:

def get_inputs(): 
    print("Enter a number") 
    x = int(input()) 
    print("Enter another number") 
    y = int(input()) 
    return x, y 

def calc(): 
    print("Press 1 for addition") 
    print("Press 2 for subtraction") 
    print("Press 3 for multiplication") 
    print("Press 4 for division") 

    c = int(input()) 

    if c == 1: 
     x, y = get_inputs() 
     return x + y 

    elif c == 2: 
     x, y = get_inputs() 
     return x - y 

    elif c == 3: 
     x, y = get_inputs() 
     return x * y 

    elif c == 4: 
     x, y = get_inputs() 
     return x/y 

calc() 
+0

完美的工作,但現在我有這個縮進問題。仍然是新的並且習慣於縮進如何工作。 –

+0

你在哪裏有縮進問題? – abacles

+0

每個數學函數上的get_inputs() –