如何使一个循环运行到它停止有意义的时候?

2024-10-04 01:32:13 发布

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

我在程序中有一个循环

while number >= lst[count]:
    rank -= 1
    count += 1

我希望有一段时间能一直跑下去,直到它不再有意义。我尝试了一些不起作用的事情(见文章末尾),但以下几点起了作用:

lst = [int(x) for x in input().split()]
number = int(input())
count = 0
rank = 0

def attempt(lst, a):
    try:
        result = lst[a]
    except:
        result = float('inf')
    return result


while number >= attempt(lst, count):
    rank -= 1
    count += 1
print(rank)

然而,我不认为这是非常优雅,似乎做作。是否有一个更优雅的解决方案(对于这种情况,通常也适用于给定的条件)?你知道吗


其他尝试(未成功):

while aliceScores[i] >= lst[count] and count < len(lst):
    rank -= 1
    count += 1

上述操作失败,因为while尝试运行count=len(lst)并运行错误,因为lst[len(lst)]不存在。你知道吗

while aliceScores[i] >= lst[count] and count < len(lst)-1:
    rank -= 1
    count += 1

上面的失败是因为我想在lst[len(lst)-1]的情况下修改秩,这在上面的代码中似乎不存在。你知道吗


Tags: and程序numberinputlencount情况result
2条回答

为什么不使用for来迭代列表,使用enumerate来计算尝试次数呢。 它会比一个whileimho更像Python。你知道吗

def get_rank(...):
   for index, lst_number in enumerate(lst):
       if number < lst_attempt:
           return -index
   return -len(lst)

唯一的原因

while aliceScores[i] >= lst[count] and count < len(lst):
    rank -= 1
    count += 1

当count太大时,不能计算lst[count],但是可以利用pythonshort-circuits and/or operators这一事实

while count < len(lst) and aliceScores[i] >= lst[count]:
    rank -= 1
    count += 1

这样,如果count太大,或者第二个条件变为False,循环将正确停止。你知道吗

相关问题 更多 >