如何按特定范围对列表中的每个项目进行计数?另外,为什么输出中的最后一项没有排序



我已经编写了一个代码,以列表形式接收用户输入。

def lst_data():
lst = []
total = int(input('Number of Data: '))
for number in range(0, total):
user_data = int(input('Enter the Data: '))
lst.sort()
lst.append(user_data)
print(lst)

输出为:

[50, 51, 52, 53, 54, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 68, 70, 70, 71, 72, 73, 74, 75, 76, 77, 79, 79, 80, 80, 81, 82, 84, 86, 87, 88, 89, 89, 90, 91, 83]

我想做的下一步是按每6个数字对列表中的每一项进行计数,比如50-55=???,56-61=???,62-67=???,等等

我一直在尝试:

counter =  0
for i in last:
if 50 < i < 55:
counter += 1
print(counter)

它起作用,但我必须一遍又一遍地重复代码;if语句";必须来自用户输入

我该怎么想?我想检查是否有任何方法可以使我的代码更简单

您首先进行排序,然后添加元素,因此在循环中,排序是先完成的,然后添加最后一个元素。因此它被排除在外。所以你可以像下面这样交换线路。

您的代码

def lst_data():
lst = []
total = int(input('Number of Data: '))
for number in range(0, total):
user_data = int(input('Enter the Data: '))
# First append
lst.append(user_data)
# Then sort
lst.sort()
print(lst)

建议的代码

下面是列表理解的代码。

  1. 循环在total上进行交互,以获得那么多个inputs
  2. 然后,这些值被added添加到列表中
  3. 然后列表为sortedout和printed
def lst_data():
lst = []
total = int(input('Number of Data: '))
lst = sorted([int(input('Enter the Data: ')) for i in range(total)])
print(lst)     
def lst_data():
lst = []
total = int(input('Number of Data: '))
for number in range(0, total):
user_data = int(input('Enter the Data: '))
lst.append(user_data)
lst.sort()
print(lst)

使用此代码

我想这就是你想要做的:

def count(lo, hi, _list):
return sum(lo <= e <= hi for e in _list)
nd = int(input('Number of data items: '))
data = []
for _ in range(nd):
datum = int(input('Enter datum: '))
data.append(datum)
lo = int(input('Enter low range value: '))
hi = int(input('Enter high range value: '))
print(f'There are {count(lo, hi, data)} items in the range {lo}-{hi}')

示例:

Number of data items: 5
Enter datum: 2
Enter datum: 1
Enter datum: 3
Enter datum: 5
Enter datum: 6
Enter low range value: 1
Enter high range value: 5
There are 4 items in the range 1-5

注意:

没有理由对列表进行排序

最新更新