这个问题看起来很简单,但我却绞尽脑汁。这只是一个算法练习。这是我目前所看到的:
positivesum = 0
negativeqt = 0
value = int(input(("Enter the numbers: ")))
for _ in range(20):
value
if value > 0:
positivesum = positivesum + value
print("The sum of positives is ", positivesum)`
另外,如果有人能把同样的练习翻译成Javascript,我将不胜感激。
像这样?
Python:
sum_positive_number = 0
negative_number_quantities = 0
numbers = 20
for i in range(numbers):
number_input = int(input(f'Enter number #{i+1}: '))
if number_input > 0:
sum_positive_number += number_input
elif number_input < 0:
negative_number_quantities += 1
print('Sum of positive numbers: ', sum_positive_number)
print('Quantities of negative numbers: ', negative_number_quantities)
int_list = [int(inp) for inp in input("Enter 20 numbers: ").split()]
pos_sum = sum(num for num in int_list if num > 0)
neg_quantity = len([num for num in int_list if num < 0])
print(f"{pos_sum=} {neg_quantity=}")
如何工作
int_list
被称为列表推导式。当提示输入时,用户可以输入20个数字,由于呼叫split()
,不同的数字之间有空格。默认情况下,split()
将被空白字符分割。split()
将返回一个可迭代列表,因此我们使用for inp in …
迭代该列表。int(inp)
将把每个数字从类型str
转换为类型int
。input()
返回一个字符串,因此需要用它来进行数字操作
pos_sum
调用内置的sum
并传递给它一个生成器表达式。它遍历int_list
中所有操作产生的列表,只查找大于0的数字。它会把这些加起来,得出我们的和。
neg_quantity
调用内置的len
,并将一个可迭代列表传递给len
,该列表是通过列表推导构造的。推导式的结果列表将包含int_list
中小于0的所有数字,并且len
将返回该列表的长度,从而给出负数
nums = list(map(int, input('Enter the numbers: ').split()))
pos = sum(num for num in nums if num > 0)
neg = len(num for num in nums if num < 0)
print(pos, neg)
split
默认使用空格分隔输入,并将每个子字符串(即数字)映射到其int
。list
初始化一个列表来存储map
的结果。
注意sum
取iterable
。num for num in nums if num > 0
形式的表达式是生成器。生成器根据条件一个接一个地产生结果,直到终止。当生成器表达式作为参数传递给函数时,结果作为tuple
传递,即iterable
。因此,pos
给出列表中所有正数的和。与列表推导式相比,生成器不需要额外的空间,一旦结果传入,python可以自动为您收集垃圾。
这个答案更多地解释了生成器表达式,并提供了另一种获取和存储输入的方法。
总和(iterable,/,开始= 0)
len (s)
地图(函数、iterable…)
你的问题是你把input
语句放在了错误的地方:
positivesum = 0
negativeqt = 0
for _ in range(20):
value = int(input(("Enter the numbers: ")))
if value > 0:
positivesum += value
else if value < 0:
negativeqt += 1
如果你只要求一个输入,那么用户只能给你一个数字。由于需要20个数字,因此需要将input
放入for循环中,以便每次需要值时都获得一个值。
关于计算positivesum
和negativeqt
之间的差异,你要寻找的是正项的总数,所以你需要把它们加在一起,而你只想要负项的数量,所以我们每次看到一个项就增加一次。
positive = 0
negative = 0
for i in range(-10 , 10):
print(i)
if i >= 0:
positive += i
elif i <= 0:
negative += 1
print(positive)
print(negative)