0

代码如下

x = 5
for i in range(1,3):

while x > 0:
    x = x - i
    print(1,x)
print(2,x)

运行的结果如下:

runfile('C:/Users/tony chou/untitled99.py', wdir='C:/Users/tony chou')
1 4
1 3
1 2
1 1
1 0
2 0
2 0

可见while只循环了一次,里面的i值一直是1。造成最终输出的x都是0

求大拿解答,谢谢!

tich 1
2019-04-06 提问

1 个回答

1

while 循环体当然只会执行一次,因为你 while 的条件是(x > 0),x <= 0之后 while 的代码块就不再执行了。
for 循环的第一个周期里,x 通过 while 语句循环递减,最后变成了0,导致第二次以及以后的 for 循环周期里 x > 0始终为 False ,因此不会进入 while 循环体,如果你希望每个 for 循环周期都执行while循环,那么你应当在 for 循环周期的尾部将 x 的值重置为 5,或者将 while 语句也改为 for in。
我是前端,只熟悉 JS 语法,没有写过 Python ,但我猜测正确的写法应该如下:

x = 5
for i in range(1,3):
    while x > 0:
        x = x - i
        print(1,x)  # 会打印多次,个人推测x值会是:4、3、2、1、0、3、1、-1、2、-1
    x = 5
    print(2,x)  # 打印三次,每次都是 2,5
   

推广链接