如何在python中请求20个数字,然后打印正数和负数的数量?



这个问题看起来很简单,但我却绞尽脑汁。这只是一个算法练习。这是我目前所看到的:

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转换为类型intinput()返回一个字符串,因此需要用它来进行数字操作

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默认使用空格分隔输入,并将每个子字符串(即数字)映射到其intlist初始化一个列表来存储map的结果。

注意sumiterablenum 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循环中,以便每次需要值时都获得一个值。

关于计算positivesumnegativeqt之间的差异,你要寻找的是正项的总数,所以你需要把它们加在一起,而你只想要负项的数量,所以我们每次看到一个项就增加一次。

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)

相关内容

最新更新