私信  •  关注

Cosmic Ossifrage

Cosmic Ossifrage 最近创建的主题
Cosmic Ossifrage 最近回复了
8 年前
回复了 Cosmic Ossifrage 创建的主题 » 下面代码python代码的输出是什么

不是这样的 跳过 价值 5 它掉进了 infinite loop 在值5处。

这个 continue 语句重新启动循环,但因为从未更改 x 在执行此操作之前,在随后通过循环时, x == 5 条件继续得到满足,同样的行为被重复 无限大 .

你看不到这一点,因为你在Jupyter运行,在那里程序没有返回并不明显。如果在python shell上运行,或者编写一个脚本并使用python解释器执行它,那么它将永远旋转,将CPU固定在100%,并且永远不会返回接受进一步的输入。


分辨率

有多种方法可以解决这个问题。

(推荐)使用 for 环

一 对于 循环迭代一组值(可能是ITerable或值 yield 直到没有剩余值。相比之下,A while 循环将永远运行,直到其条件为假。

如果要迭代的项目数量已知且有限,那么通常使用这样的循环更为惯用,如示例中所示。 range(x, y) 是获取间隔中整数的简单机制 [x, y) .

for x in range(0, 7):
  if x == 5:
    continue
  print(f'value of {x}')

使用 虽然 循环(此处包含其指导性质):

增量 X 每次循环传球

增加的值 X 每次通过循环时

x = -1
while x < 7:
  x += 1
  if x == 5:
    continue
  print(f'value of {x}')

重构逻辑以在 print 呼叫

x = 0
while x < 7:
  if x != 5:
    print(f'value of {x}')
  x += 1

无法连接到 localhost 从Docker(特别是在Mac上,Docker运行在Linux虚拟机的表面下)访问主机提供的服务。

但是,有使用特殊主机名通过IP地址访问主机的功能 docker.for.mac.localhost . 不存在任何其他Docker网络问题,请修改要使用的连接字符串 docker.for.mac.localhost:3306 应解决此问题并允许访问主机上的服务。

(有关此解决方案的详细信息,请参阅 Docker docs )