python for循环的问题

list1=[0,100,200,300]list2=[50,25,10]b=150i=0j=0forbinlist1:ifb>=list1[i]andb<=list1[... list1=[0,100,200,300]
list2=[50,25,10]
b=150
i=0
j=0
for b in list1:
if b>=list1[i] and b<=list1[i+1]:
print(list2[i])
else:
print("不在",list1[i],"和",list1[i+1],'之间')
continue
i += 1
--------------------------------------------
最后输出结果是
50
25
10
Traceback (most recent call last):
File "E:/Python/勉强.py", line 8, in <module>
if b>=list1[i] and b<=list1[i+1]:
IndexError: list index out of range
-----------------------------------------------
问题:为什么else部分没被执行到
展开
 我来答
紫薇参星
科技发烧友

2019-09-21 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3628万
展开全部

else没执行到是因为for b in list1使得b不再是150,而是list1中的每个值,自然不会执行else了。
你的Python程序我帮你改完了,你看看吧.(改动的地方见注释)

匿名用户
2019-09-21
展开全部

continue的作用就是使循环中满足条件的代码跳过,继续执行下一轮代码。

你的代码continue应该是属于else,所以else不会执行的,continue缩进往前顶,

让他属于for循环,就不会报错了,也会执行else的代码了,如下图:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pololong0
2019-09-21 · TA获得超过380个赞
知道小有建树答主
回答量:497
采纳率:62%
帮助的人:88.9万
展开全部
为什么要for b in list,如果这样,那你前面给b的赋值就没用了。就会在list1l
里面去取。list1比list2长,根据你的代码,就报越界了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
衷识万鸿晖
2019-10-26 · TA获得超过3923个赞
知道大有可为答主
回答量:3154
采纳率:31%
帮助的人:202万
展开全部
[x*5
for
x
in
range(2,10,2)]是一个列表,产生x乘以5的值,产生的数量由for语句确定
范围是x
in
range(2,10,2),range生成2开始,步长是2到10为止的序列,为2
4
6
8
经过x×5计算,结果就是10
20
30
40
作为一个列表就是最后的结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式