为了账号安全,请及时绑定邮箱和手机立即绑定

这个程序错在哪里了

L=[1,2,3,4]

for a in L:

    while True:

        print a

if a>3:

    break

这个程序错在哪里了


正在回答

3 回答

你第一个循环的a=1永远小于3  那么就是死循环,输出的永远为1,

L=[1,2,3,4]

for a in L:

    while True:

        print a 

        a=a+1

        if a>3:

            break

当你用上述的语句执行时,他会先循环先a=1,当1+a>3时,会结束循环,然后继续a=2直至2+a>3,然后是循环a=3.   所以上述语句输出结果为:1,2,3,2,3,3,4


0 回复 有任何疑惑可以回复我~
#1

慕瓜2101731

不是你说的问题,for循环本身就会把list迭代赋值给a。
2017-08-10 回复 有任何疑惑可以回复我~

L=[1,2,3,4]

for a in L:

    while True:

        print a

        if a>3:

        break


缩进问题


0 回复 有任何疑惑可以回复我~
#1

qq_苏格拉没有底_14 提问者

不是这个问题,是逻辑问题,你可以运行一下你的程序
2017-07-12 回复 有任何疑惑可以回复我~
L = [1,2,3,4]
for a in L:
    while True:
        if a > 3:
            break
        print a


0 回复 有任何疑惑可以回复我~
#1

qq_苏格拉没有底_14 提问者

不是这个问题,这样输出的是持续不断的1,我是想输出1,2.这个程序存在逻辑错误,但是我不知道错在哪里了
2017-07-12 回复 有任何疑惑可以回复我~
#2

xyyyy318 回复 qq_苏格拉没有底_14 提问者

如果你只想输出1,2 这样就可以了 为什么要还要在里面写个死循环? 第一次循环a是1 a永远不可能大于3 所以是死循环 你之前那么写 就会一直卡在 while True: print a出不来 L = [1,2,3,4] for a in L: if a > 2: break print a
2017-07-12 回复 有任何疑惑可以回复我~
#3

xyyyy318 回复 xyyyy318

正确的话采纳我的哈
2017-07-12 回复 有任何疑惑可以回复我~
#4

qq_苏格拉没有底_14 提问者 回复 xyyyy318

你这样写输出的是3,你可以试一下
2017-07-12 回复 有任何疑惑可以回复我~
#5

慕瓜2101731 回复 qq_苏格拉没有底_14 提问者

if判断的顺序问题,先对a赋值为3,再做if判断才会break,而3已经赋出值了。你想只输出(1,2),改成'if a > 1'就可以; 或者改成: for a in L: if a < 3: print(a)
2017-08-10 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消
初识Python
  • 参与学习       758620    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

这个程序错在哪里了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信