python一道练习题。想问我这样的解题方式有没有问题?

题目:
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
将里面的奇数相加,如果超过5个奇数,就只加前5个,如果不足5个奇数,就加所有的奇数。用while循环还是loop循环?

我的解题:
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166]
num_odd=[]
for num in num_list:
    if (num % 2) == 1:
        num_odd.append(num)        
print(sum(num_odd[0:5]))

想问我这样的解题可以吗?
#Python#
全部评论
加到第五个就可以停了吧
点赞 回复
分享
发布于 2019-10-24 06:40
如果num_list为空呢,如果num_list里的奇数不足5个呢
点赞 回复
分享
发布于 2019-10-24 07:26
阅文集团
校招火热招聘中
官网直投
while和for都可以,但是不加条件判断前5会做很多无用功
点赞 回复
分享
发布于 2019-10-24 09:29
判断奇偶用位运算优化一下?然后再设置一个计数吧,等于5就跳出循环了
点赞 回复
分享
发布于 2019-10-24 09:29
stop_flag = 0; num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166] num_odd=[] for num in num_list:     if (num % 2) == 1:         stop_flag = stop_flag + 1         num_odd.append(num)         if (stop_flag == 5)              break;         print(sum(num_odd[0:stop_flag]))
点赞 回复
分享
发布于 2019-10-24 16:04
num_list = [422, 136, 524, 85, 96, 719, 85, 92, 10, 17, 312, 542, 87, 23, 86, 191, 116, 35, 173, 45, 149, 59, 84, 69, 113, 166] oddNum =0 sum=0 evenNum=0 while oddNum <5:     for num in num_list:         if num%2 !=0:             sum=sum+num             oddNum+=1 print(oddNum) print(sum)
点赞 回复
分享
发布于 2020-09-15 06:12

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务