簡體   English   中英

將 If 與 While 循環一起使用會導致無限循環

[英]Using If with While loop results in an infinite loop

所以問題說明給定一組分數,我們需要打印第一名。 我的比喻是以降序方式對其進行排序,然后運行一個循環,檢查頂部是否存在相同的數字,一旦找到小於最高數字的數字,就將其打印出來。

我在這里使用了 while 循環和 if 語句。 但它以某種方式總是導致無限循環。 我有其他解決方案,但如果有人闡明為什么這種特定方法不起作用,我將不勝感激。

這是代碼:

if __name__ == '__main__':
   n = int(input())
   arr = map(int, input().split())
   my_list = list(arr)
   my_list.sort(reverse = True)
   i = 0
   while my_list[i] == my_list[i+1]:
     continue
     i = i+1
   if my_list[i] > my_list[i+1]:
     print(my_list[i+1])

輸入:2 3 6 6 5

預期結果:5

另一種選擇是將您的數字放入一組以對它們進行重復數據刪除,然后將它們推送到 heapq 以獲得您的兩個最高值(然后取第二個最大值),例如:

import heapq

n = int(input())
assert n > 1
arr = {int(el) for el in input().split()}
print(heapq.nlargest(2, arr)[-1])

您需要刪除 while 循環中的continue語句。

if __name__ == '__main__':
   n = int(input())
   arr = map(int, input().split())
   my_list = list(arr)
   my_list.sort(reverse = True)
   i = 0
   while my_list[i] == my_list[i+1]:
     i = i+1
   if my_list[i] > my_list[i+1]:
     print(my_list[i+1])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM