赋值左等于右,那我用左和用右按道理一样的吧,为什么运行结果不一样
shu=int(input('write a shuzi:'))i = shu
while shu:
i= shu-1
while i :
print('%',end='')
i = i - 1
print()
shu= shu- 1
shu=int(input('write a shuzi:'))
i = shu
while i:
i= shu - 1
while i :
print('%',end='')
i = i - 1
print()
shu= shu - 1
我搞得好混乱,这两个有什么区别,为什么运行结果不一样?
这两个原本值是一样的,但是,后期改变的就不一样了,每循环一次i就等于shu减1 while条件不一样
一个是shu 一个是 i
你可以分别打印shu和i的周期变化 青出于蓝 发表于 2021-8-9 08:13
这两个原本值是一样的,但是,后期改变的就不一样了,每循环一次i就等于shu减1
不太懂,两个的while循环的次数不是一样的吗 while i =while shu 这样理解有没有错
全桥整流 发表于 2021-8-9 09:42
while i =while shu 这样理解有没有错
有错,i和shu的变化不一样 理解存在偏差,赋值是左边等于右边,在python中相当于贴标签,表示这个变量指向这个内存。但是你这里,刚开始i=shu的时候,指向的是同个内存地址,但是当i=shu-1的时候,i的内存地址就变了(因为int类型的内存地址是固定的)。
还有你这里两个的结果不一样是因为外面的whil条件不同,第一个的while条件是shu,所以正常的,第二个条件是i但是i又作为嵌套在里面的whil的条件,所以当里面那个while条件结束的时候,外面也就结束了,所以第二个外面只运行了一次。
青出于蓝 发表于 2021-8-9 09:55
有错,i和shu的变化不一样
为什么不一样呢?while循环里面的东西影响不了while i或while shu的吧(就是while的次数已经由我输入的数字决定了,剩下的就是执行while里面的东西,然后又有缩减,所以我觉得影响不了while的次数,不知我表述是否清晰{:5_92:}) 所以while i 和while shu都是定值
2012277033 发表于 2021-8-9 10:03
理解存在偏差,赋值是左边等于右边,在python中相当于贴标签,表示这个变量指向这个内存。但是你这里,刚开 ...
while i:结束的条件是i为0
i= shu - 1
while i :#结束的条件是i为0
print('%',end='')
i = i - 1
#走到这里时 i就为0了
print()
shu= shu - 1 2012277033 发表于 2021-8-9 10:06
你的意思是不是第二个while循环的i=0时,第一个while循环同时也结束了? 全桥整流 发表于 2021-8-9 10:14
你的意思是不是第二个while循环的i=0时,第一个while循环同时也结束了?
是的,你可以在每个层级打印一次i,这样就显而易见了while i:
i= shu - 1
print("before i={}".format(i))
while i :
print('%',end='')
i = i - 1
print("inwhile i={}".format(i))
print("after i={}".format(i))
shu= shu - 1
页:
[1]