![]() | 1 shelterz 2020-05-27 17:28:49 +08:00 if cont(flag) == 0: break; |
![]() | 2 Latin 2020-05-27 17:45:35 +08:00 贴代码用 markdown ``` code ``` |
![]() | 3 Supermanhh OP @Latin 新人第一次发帖,下次试试 |
![]() | 4 Supermanhh OP @shelterz 这个写在主程序里吗,我试了用 while flag == 0: break 不行 |
![]() | 5 zdt3476 2020-05-27 18:01:25 +08:00 flag = cont(flag) |
![]() | 6 duyuyouci 2020-05-27 18:24:32 +08:00 你的 flag 永远是 1,怎么跳出来 |
![]() | 7 Supermanhh OP @zdt3476 #5 这样写的话直接就报错了, |
![]() | 8 shintendo 2020-05-27 19:37:21 +08:00 很简单 你的问题是什么?是跳不出 while 循环。 while 循环的条件是什么?是 flag == 1 。 那怎么才能跳出循环?改变 flag 的值,使它不等于 1 。 你的代码里,有任何改变 flag 值的语句吗?如果没有,那当然跳不出循环;如果你认为有,那把你认为的语句指出来,我们告诉你为什么它不改变 flag 的值。 |
![]() | 9 cherbim 2020-05-27 22:15:59 +08:00 你是问为什么 while True 这个循环不会打破,你好像没有改变 flag 的值啊 还有你这个操作很骚啊,cont(flag),你把 flag 传到函数 cont 里,但是里面直接来一个 a =1 或者 a = 0,这个 flag 完全没用啊 换成 flag = cont(), 把函数 cont 里的参数去掉,完全没用 |
![]() | 10 cherbim 2020-05-27 22:18:18 +08:00 def cont(): choice = input("是否继续?(y or n)") if choice == 'y': return 1 else: return 0 然后主函数里 flag = cont(),这样,输入 y flag=1,输入 n flag=0 |
![]() | 11 mzotw2babm 2020-05-28 08:59:15 +08:00 因为你原程序里 cont(flag)的返回值并不会直接赋给 flag 。返回值 和 赋值,是两个操作。cont(a)中的 a 只是个形参,而不是你程序中声明的变量。当你使用 cont(flag)时,flag 作为形参,作用仅是向 cont()内传递值,并不会改变变量 flag 本身。 按 @cherbim 的答案修改即可。 |
![]() | 12 Supermanhh OP @cherbim 昨天又研究了一下,可以跳出来了,跟你这个方法也类似,只是要两次取消‘n’才结束程序 |
![]() | 13 crella 2020-05-28 10:07:48 +08:00 via Android 这教程写的有问题。把 cont 函数的内容移植到 while true 的循环末尾就好了,略加修改就好了。 建议放弃看这代码所在的教程、视频、书,因为写得不好。 |
![]() | 14 Supermanhh OP @mzotw2babm 多谢指点,现在明白过来了,cont()只是返回了 1 or 0 并没有对主程序的 flag 实际赋值,现在反应过来了 |
![]() | 15 Supermanhh OP @crella 是的,,我也发现了这书里面代码写的也不规范,放弃了 |