鱼C论坛

 找回密码
 立即注册
查看: 1006|回复: 11

[已解决]赋值左等于右,那我用左和用右按道理一样的吧,为什么运行结果不一样

[复制链接]
发表于 2021-8-9 08:00:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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



我搞得好混乱,这两个有什么区别,为什么运行结果不一样?

最佳答案
2021-8-9 10:03:54
理解存在偏差,赋值是左边等于右边,在python中相当于贴标签,表示这个变量指向这个内存。但是你这里,刚开始i=shu的时候,指向的是同个内存地址,但是当i=shu-1的时候,i的内存地址就变了(因为int类型的内存地址是固定的)。
还有你这里两个的结果不一样是因为外面的whil条件不同,第一个的while条件是shu,所以正常的,第二个条件是i但是i又作为嵌套在里面的whil的条件,所以当里面那个while条件结束的时候,外面也就结束了,所以第二个外面只运行了一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-9 08:13:40 | 显示全部楼层
这两个原本值是一样的,但是,后期改变的就不一样了,每循环一次i就等于shu减1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 08:18:10 | 显示全部楼层
while条件不一样
一个是shu 一个是 i
你可以分别打印shu和i的周期变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 09:41:53 | 显示全部楼层
青出于蓝 发表于 2021-8-9 08:13
这两个原本值是一样的,但是,后期改变的就不一样了,每循环一次i就等于shu减1

不太懂,两个的while循环的次数不是一样的吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 09:42:34 | 显示全部楼层
while i =while shu 这样理解有没有错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 09:55:34 | 显示全部楼层
全桥整流 发表于 2021-8-9 09:42
while i =while shu 这样理解有没有错

有错,i和shu的变化不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 10:03:54 | 显示全部楼层    本楼为最佳答案   
理解存在偏差,赋值是左边等于右边,在python中相当于贴标签,表示这个变量指向这个内存。但是你这里,刚开始i=shu的时候,指向的是同个内存地址,但是当i=shu-1的时候,i的内存地址就变了(因为int类型的内存地址是固定的)。
还有你这里两个的结果不一样是因为外面的whil条件不同,第一个的while条件是shu,所以正常的,第二个条件是i但是i又作为嵌套在里面的whil的条件,所以当里面那个while条件结束的时候,外面也就结束了,所以第二个外面只运行了一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 10:05:04 | 显示全部楼层
青出于蓝 发表于 2021-8-9 09:55
有错,i和shu的变化不一样

为什么不一样呢?while循环里面的东西影响不了while i或while shu的吧(就是while的次数已经由我输入的数字决定了,剩下的就是执行while里面的东西,然后又有缩减,所以我觉得影响不了while的次数,不知我表述是否清晰
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 10:05:56 | 显示全部楼层
所以while i 和while shu都是定值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 10:06:11 | 显示全部楼层
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-9 10:14:08 | 显示全部楼层

你的意思是不是第二个while循环的i=0时,第一个while循环同时也结束了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-9 10:18:26 | 显示全部楼层
全桥整流 发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 15:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表