2017-07-02 48 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),然后您可以将数字列表传递给字典中的特定操作。

相关问题