尝试创建一个计算器,它可以接受由空格分隔的可变长度的整数。我能够创建一个基本的计算器,可以读取两个参数并进行操作。以下是我想要实现的目标。
select operation: Add
Enter nos: 1 65 12 (this length can increase and any variable lenght of integers can be given)
我不确定如何将这个可变长度的 int 传递给函数,假设是加法函数。我可以为两个变量做到这一点。
添加我所知道的:
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)
不确定如何将从输入读取的多个参数传递给函数。
使用输入可以实现这一点:
>>> 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
将字符串键入整数的地方。由于 map 返回一个 map 对象,我们需要一个列表(因此调用 list 围绕 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
如果使用 *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(,然后您可以将数字列表传递给字典中的特定操作。