试图从“for”中提取第一个数字并将其用作初始值的计算器

2024-06-07 22:00:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着从列表中取第一个数字作为初始值。当我开始做减法的时候,我意识到你实际上并不像做加法那样从0开始,而是从写在“for”中的第一个数字开始。
例如,当你加0+4+5,那么4+5实际上是同一件事;当减去时,做0-4-5和4-5是不同的。我只是从Python和编程开始,所以我想知道这是否可能。你知道吗

我的代码:

print ("You chose subtraction.")
b = int(input("Enter how many numbers you want to substract."))
c = [int (input( "Number: ")) for _ in range (b)]
result = functools.reduce(operator.sub, c, INIT_VALUE)
print("Your answer is:", result)

Tags: 代码you列表forinput编程数字result
3条回答

有几种方法可以做到这一点:

您可以分别获得第一个号码:

 >>> INIT_VALUE = input('Number: ')
 >>> numbers = [int(input('Number: ')) for _ in range(b - 1)]
 >>> result = reduce(sub, numbers, INIT_VALUE)

或者,可以使用索引:

 >>> INIT_VALUE = c[0]
 >>> rest = c[1:]
 >>> result = reduce(sub, rest, INIT_VALUE)

或者,如果您想使用循环而不是reduce:

 >>> result = int(input('Number: '))
 >>> for _ in range(b - 1):
 ...     result -= int(input('Number: '))

您可以通过访问c[0](在我的示例中是values[0])来获取输入的第一个数字,您也只需要减去这个索引之后的值,就可以使用c[1:](在我的示例中是values[1:]

import operator
import functools

print("You chose subtraction.")
total_numbers = int(input("Enter how many numbers you want to substract."))
values = [int(input("Number: ")) for _ in range(total_numbers)]
result = functools.reduce(operator.sub, values[1:], values[0])
print("Your answer is:", result)

>> You chose subtraction.
>> Enter how many numbers you want to substract.
> 5
>> Number: 
> 10
>> Number: 
> 1
>> Number: 
> 1
>> Number: 
> 1
>> Number: 
> 1
>> Your answer is: 6

您可以执行reduce(sub, lst[1:], lst[0]),但也可以完全跳过inifializer

reduce(sub, lst)

如果你不提供,第一个值将被接受

https://docs.python.org/3/library/functools.html#functools.reduce

相关问题 更多 >

    热门问题