如何打印3个数字大于python列表的特定数字?



我写了下面的代码,它将向用户请求一个数字,并检查列表中的数字是否大于用户输入,然后它将打印接下来的3个数字。我只是不明白如何实现条件,以便它打印接下来的3个数字,而不是全部!

def main():
number_list = [630,1015,1415,1620,1720,2000]
a=int(input("Enter the time (as an integer):"))
for i in number_list:
if(i>=a):
print(i)
if __name__ == "__main__":
main()

我首先找到满足您的第一个值指数条件(元素大于或等于输入值):

user_input = int(input("Enter the time (as an integer):"))
desired_index = None
for index, val in enumerate(number_list):
if val >= user_input:
desired_index = index
break

然后打印三个值,包括和之后的位置:

print(number_list[desired_index:desired_index + 3])

假设列表已排序,您可以使用内置的bisect模块查找输入数字在列表中的位置。然后很容易从列表中打印出后面的三个数字(如果有那么多的话):

import bisect
number_list = [630, 1015, 1415, 1620, 1720, 2000]
a = int(input("Enter the time (as an integer):"))
index = bisect.bisect(number_list, a)
print(number_list[index:(index + 3)])

。输入1200,打印[1415, 1620, 1720]

将代码更新为:

def main():
number_list = [630,1015,1415,1620,1720,2000]
a=int(input("Enter the time (as an integer):"))
i=0
for n in number_list:
if(n>=a):
print(n)
i+=1
if i==3:break
if __name__ == "__main__":
main()

现在运行代码并查看输出。

Enter the time (as an integer):1015
1015
1415
1620
>>> 

如果要确保number_list排序,则使用此排序方法..

number_list.sort()

如果列表是排序的,你应该使用二分搜索(例如bisect),否则你可以打印过滤列表的前3个元素:

print(*[n for n in number_list if n>a][:3])

对于更基本的方法,您可以使用一个变量来跟踪到目前为止打印了多少个数字,在打印一个数字后增加1,并在条件中使用该打印计数器来决定打印:

printed = 0                 # count of numbers printed so far
for n in number_list:
if printed<3 and n>a:   # only print first 3 that are eligible
print(n)
printed += 1        # track number of numbers printed

最新更新