2017-07-02 46 views
1

試圖創建一個計算器,它可以採用由空格分隔的可變長度的整數。我能夠創建一個基本的計算器,讀取兩個參數並執行操作。以下是我想要實現的。如何從用戶輸入中讀取多個(可變長度)參數並將其存儲在變量中並將其傳遞給函數

select operation: Add 
Enter nos: 1 65 12 (this length can increase and any variable lenght of integers can be given) 

我不知道如何將我通過INT這varibale長度的功能,假設除了功能。我可以做兩個變量。

添加什麼,我意識到:

x = input("enter operation to perform") 
a = input("1st no.") 
b = input("2nd no.") 
def add(a,b): 
    return a+b 
if x == 1: 
    print add(a,b) 

需要從蟒蛇專家幫助! 另外(a,b)。不知道如何傳遞從輸入讀取到函數的多個參數。

+0

使用sys模塊' sys.argv [1]' –

+0

@ArpitSolanki這不是他想要的。他只是想要用戶輸入。這可以使用'input()'來實現。 –

+0

@ArpitSolanki:我怎麼能通過它的功能? –

回答

2

使用的輸入就可以實現這一點:

>>> result = input("enter your numbers ") 
enter your numbers 4 5 
>>> result 
'4 5' 
>>> a, b = result.split() 
>>> a 
'4' 
>>> b 
'5' 
>>> int(a) + int(b) 
9 

split方法將默認的空間分割你的字符串,並創建這些項目的列表。

現在,如果你有一些複雜的東西:

>>> result = input("enter your numbers ") 
enter your numbers 4 5 6 7 8 3 4 5 
>>> result 
'4 5 6 7 8 3 4 5' 
>>> numbers = result.split() 
>>> numbers 
['4', '5', '6', '7', '8', '3', '4', '5'] 
>>> numbers = list(map(int, numbers)) 
>>> numbers 
[4, 5, 6, 7, 8, 3, 4, 5] 
>>> def add(numbers): 
... return sum(numbers) 
... 
>>> add(numbers) 
42 

正如你可以看到你正在服用的空間分成一個較長的號碼順序。當你打電話給split時,你會看到你有一個數字列表,但表示爲字符串。你需要有整數。因此,這是撥打map的地方將字符串鍵入整數。由於地圖返回地圖對象,我們需要一個列表(因此調用地圖列表)。現在我們有一個整數列表,而我們新創建的add函數採用數字列表,我們只需在其上調用sum即可。

如果我們想要一些需要更多工作的東西,比如減法,就像建議的那樣。讓我們假設我們已經有我們的號碼列表,使小。例如在看:

此外,幫助,使其更具可讀性,我會做一步一步來:

>>> def sub(numbers): 
... res = 0 
... for n in numbers: 
... res -= n 
... return res 
... 
>>> sub([1, 2, 3, 4, 5, 6, 7]) 
-28 
+0

這個變量(這將是任何長度)如何讀取和拆分被傳遞給函數! –

+0

@shivrk你不需要那些額外的感嘆號。沮喪不是這裏的正確方法。你正在讓人們回答你的問題。得到*生氣*不理解。 – idjaw

+0

@shivrk你已經將a和b傳遞給你的函數'add':'if x == 1:print add(a,b)'。我不明白你不明白。 –

0

如果使用* args,它可以採用任意數量的位置參數。您可以爲其他操作制定類似的程序。

def addition(*args): 
    return sum(args) 

calc = { 
     '+':addition, 
     #'-':subtraction, 
     #'/':division, 
     #'*':multiplication, 
     } 

def get_input(): 
    print('Please enter numbers with a space seperation...') 
    values = input() 
    listOfValues = [int(x) for x in values.split()] 
    return listOfValues 


val_list = get_input() 

print(calc['+'](*val_list)) 

這是我實現計算器的方式。有一個包含操作的字典(我將使用lambdas),然後您可以將數字列表傳遞給字典中的特定操作。

相關問題