所以問題說明給定一組分數,我們需要列印第一名。我的比喻是以降序方式對其進行排序,然后運行一個回圈,檢查頂部是否存在相同的數字,一旦找到小于最高數字的數字,就將其列印出來。
我在這里使用了 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
uj5u.com熱心網友回復:
另一種選擇是將您的數字放入一組以對它們進行重復資料洗掉,然后將它們推送到 heapq 以獲得您的兩個最高值(然后取第二個最大值),例如:
import heapq
n = int(input())
assert n > 1
arr = {int(el) for el in input().split()}
print(heapq.nlargest(2, arr)[-1])
uj5u.com熱心網友回復:
您需要洗掉continuewhile 回圈中的陳述句。
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])
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/342471.html
上一篇:轉換索引“等級”中的點串列
