之前一直使用
li=input()
list= [int(n) for n in li.split()]
將用戶的輸入轉化爲整形數組
結果今天做題一直報錯,試了n種方法,都不對,不能很好的讀取多行的數據。最後借鑑了其他人的寫法
import sys
while True:
line = sys.stdin.readline().strip()
if line=='':
break
nums = list(map(int, line.split()))
if len(nums)<3:
print("0")
break
這樣做的好處是可以讀取多行數據
另外今天刷題學到了如何從list中取得最大的三個值:
def find3PosMax(nums):
max1, max2, max3 = None, None, None
for num in nums:
if num < 0:
continue
if max1 is None or max1<num:
max1, num = num, max1
if num is None:
continue
if max2 is None or num>max2:
max2, num = num, max2
if num is None:
continue
if max3 is None or num>max3:
max3 = num
return max1, max2, max3
複雜度很低的一種算法
當然也可以用sort(reverse=True) 將一個列表降序排列取前三個值,只不過時間複雜度增加