之前一直使用
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) 将一个列表降序排列取前三个值,只不过时间复杂度增加