作者TW185930 (吱吱)
看板Python
标题Re: [问题] while回圈问题
时间Sat Jun 2 15:21:53 2018
抱歉,我是使用IDLE,我真的是新手 对於程式的问题描述不是很好
我第一次执行这个程式是正常的,他可以回传我如期的结果 如下
https://i.imgur.com/mcNumvB.jpg
但当我连续执行第二次,则进入无限回圈,如下
https://i.imgur.com/VExBbOg.jpg
※ 引述《MOONY135 (谈无慾)》之铭言:
: ※ 引述《TW185930 (吱吱)》之铭言:
: : 各位大大们好
: : 小弟新手学python,使用参考书为[python 程式设计超入门]
: : 目前看到While回圈章节,并尝试练习此函数遇到一个小问题
: : 程式内容为
: : Power = 5
: : while(True):
: : print('打')
: : print('踢')
: : print('大绝')
: : Power = Power - 1
: : if (Power > 0):
: : break
: : 理论上当Power变成负值时,则会变成 Power > 0 为False,
: : 那麽回圈就会break,可是为何小弟进入了无限回圈呢QQ?
: : 不太懂QQ
: 你的写法跟你的想法完全不一样
: 你这样只会印第一次 而且Power =4
: if(Power >0):
: break;
: 你第一次进去就等於结束了 不会有啥无穷回圈这件事情
--
当他们关掉MegaUpload的时候, 我保持沉默;我还有FileSonic。
当他们关掉FileSonic的时候, 我保持沉默;我还有FileServe。
当他们关掉FileServe的时候, 我保持沉默;我还有MediaFire。
当他们关掉MediaFire的时候, 我保持沉默;我还有BT。
当他们关掉BT伺服器的时候, 我已一无所有了。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 42.72.15.169
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1527924117.A.364.html
1F:推 Scinfaxi: 你POWER设定2 减了两次1就等於0 0不会>0所以不会BREAK 06/02 15:23
2F:→ Scinfaxi: 理论上你应该是写if power < 0: break才比较符合你想法 06/02 15:24
3F:→ TW185930: 可是为什麽我第一次执行 却能break 06/02 15:24
4F:→ Scinfaxi: 因为你第一次执行 POWER = 1 1>0所以BREAK了... 06/02 15:25
5F:→ TW185930: 但我第二次重新输入同样的while (True) ,却进入回圈XD 06/02 15:25
6F:→ Scinfaxi: 第二次执行 POWER = 0就不会符合你的BREAK条件 06/02 15:25
7F:推 s8300355: 因爲已经是0了拔 06/02 15:26
8F:→ kk6401allen: power<=0後,if的条件不成立,while就不会break 06/02 15:49
9F:推 potter1529: 你先用纸笔 把每次回圈执行的逻辑跟变数状态纪录下来 06/03 17:39
10F:→ potter1529: ,自己手动把回圈写完。这种程度的bug刚好是练习的好 06/03 17:39
11F:→ potter1529: 机会 06/03 17:39
12F:推 anticrime: 原 Po应该有一个地方误会了 你的 while(True) 这边的意 06/07 14:22
13F:→ anticrime: 思是我的 while永远会执行 因为它就是指名(while)的判 06/07 14:22
14F:→ anticrime: 断永远是 True 06/07 14:22
15F:→ anticrime: 而後面的 if不管怎样搞 他的判断是只会是 if的 永远不 06/07 14:22
16F:→ anticrime: 会影响 while 06/07 14:22
17F:→ anticrime: 第一次会停下来 只是因为遇到 break跟任何的判断 True 06/07 14:24
18F:→ anticrime: False没有半点关系 你可以试试看吧 break拿掉把 print 06/07 14:24
19F:→ anticrime: 大绝放进去看看结果 06/07 14:24