奇怪的 while 语句行为?

2023-12-24

我不明白为什么以下陈述不起作用。

randomKey = random.choice(list(topic.keys()))
randomValue = random.choice(topic[randomKey])

current = "-" * len(randomValue) 
while current != randomValue: 
   (statements)
else:
   (statements)

但是,如果我将第一行更改为

while current == randomValue:

'else' 之后的语句正确执行。否则,'else'后面的语句不会执行。知道为什么会导致这种奇怪的行为吗?完整的代码已被排除,因为它将贯穿整个页面。


它是 Python 语法的一部分。从文档 http://docs.python.org/2/reference/compound_stmts.html#the-while-statement:

This [a while语句]重复测试表达式,如果为真,则执行第一组;如果表达式为 false(这可能是第一次测试),则else子句(如果存在)将被执行并终止循环。

因此,在第一种情况下,while 条件必定永远不会计算为 false,而在第二种情况下,它最终会计算为 false。请注意,显式地跳出循环将not执行 else 子句。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

奇怪的 while 语句行为? 的相关文章

随机推荐

  • 使用 Wait() 时 StreamSocket.InputStreamOptions.ReadAsync 挂起

    这是我能够准备的最小可能场景 此代码连接到 imap gmail com 读取初始服务器问候语 使用 Read 方法 发送NOOP命令 NO操作 读取 NOOP 命令响应 再次使用 Read 方法 问题是第二次读取挂起 如果使用 await
  • 无需源代码即可调试/绕过 BSOD

    你好 祝你有美好的一天 这里需要一些帮助 情况 我有一个不起眼的 DirectX 9 应用程序 名称和应用程序详细信息与问题无关 自某些驱动程序版本以来 它会导致所有 nvidia 卡 GeForce 8400GS 及更高版本 出现蓝屏死机
  • 类变量中的类型提示

    对于上面的代码 我收到以下错误 Parse error syntax error unexpected Connectors T STRING expecting variable T VARIABLE 当我删除类型提示并var dump
  • 如何让yield在调试模式下工作?

    我正在使用 ipdb 和 Yield 我注意到与 ipdb 一起使用时 产量并没有达到预期的效果 具体来说 当使用 ipdb 调试此代码时 并按 n 键盘中的字符只是跳过yield命令而不是从函数返回 def cats print 1 yi
  • Android ApplicationRecord 和 Google Analytics

    我正在开发一个可以通过 AndroidApplicationRecord 安装和打开的应用程序 AAR 请参阅http developer android com guide topics nfc nfc html http develop
  • 默认会话过期超时?

    默认情况下JSESSIONID关闭浏览器时cookie就过期了 但是关联的时间是多久HttpSession在服务器端真的有效吗 大多数容器默认为 30 分钟 您可以通过以下方式进行配置
  • 如何继承样式并覆盖某些内容?

    具体问题是如何继承我的自定义样式 Water 并覆盖其 Grid Background 部分 有没有可能 首先 我只想在那里放另一张图片 ButtonStyles1 xaml
  • __USE_FILE_OFFSET64 与 _FILE_OFFSET_BITS=64

    我正在尝试维护在许多不同系统上编译的代码 我见过十几种不同的请求方式lseek这需要 64 位 一些系统使用lseek64 一些使用lseeko 有些要求您定义 FILE OFFSET BITS 64 现在我刚刚找到了一个新的 需要你定义
  • 从命名范围的 Name 对象获取工作表名称

    I have Microsoft Office Interop Excel Workbook wb Microsoft Office Interop Excel Name name 假设我已经获得了命名范围的 Name 对象和 wb 有什么
  • 创建视图还是使用内部联接?

    我有一个规范化的数据库 其中外键 主键提供一对多数据库 我计划使用 PHP 访问该数据库以进行基本的前端 后端显示 现在 我的问题来自这两个示例查询 CREATE VIEW view AS SELECT functiondetails De
  • 在 Visual Studio 2010 中运行的 Windows Phone 8 SDK

    我知道这个 SDK 还没有完成 但是一些幸运的开发人员已经拿到了它 所以我的问题是 当您安装 Windows Phone 8 SDK 时 它是否也在 Visual Studio 2010 中安装了 SDK 或者只是在 Visual Stud
  • 在cuda中是否有更好/更干净/更优雅的malloc和free方式?

    我正在尝试 cudaMalloc 一堆设备指针 如果任何 malloc 不起作用 则优雅地退出 我有功能代码 但臃肿 因为如果失败 我必须 cudaFree 我之前 malloc 的所有内容 所以现在我想知道是否有更简洁的方法来实现这一点
  • 如何将 dtype='datetime64[ns]' 转换为浮点数?

    我正在练习线性回归 在这里我将日期作为输入 x 传递并期望输出 y float x df Date values x x reshape 1 1 y df MeanTemp values MeanTemp column has float
  • 在 C# 中转换为泛型类型失败

    我希望通过创建动态 GetControl 方法来节省一些编码 我的想法是这样的 private T GetControl
  • Rust:为关联类型实现特征“From”(错误)

    这是我之前问题的后续问题 Rust 从标准输入读取和映射行并处理不同的错误类型 https stackoverflow com questions 59187274 rust read and map lines from stdin an
  • CSS 类选择器通配符[重复]

    这个问题在这里已经有答案了 所以我想知道是否有办法在 CSS 中添加通配符 我有几个课程是 button 0 button 1 button 2 button 3等在一个button元素 我想得到所有 button 类来定义 是否可以做类似
  • 提取括号之间文本的模式

    如何从中提取字符串 and 使用模式匹配或任何东西 例如 如果文本是 你好 Java 那么如何只得到 Java 尝试这个 String x Hello Java Matcher m Pattern compile matcher x whi
  • 我可以使用客户端 Javascript 执行 DNS 查找(主机名到 IP 地址)吗?

    我想使用客户端 Javascript 来执行从客户端计算机看到的 DNS 查找 主机名到 IP 地址 那可能吗 Edit 这个问题让我很痒 所以我在 Google App Engine 上建立了一个 JSON Web 服务来返回客户端的 I
  • FFmpeg-Python 音频在最终视频中丢失

    我试图将视频放置在背景图像之上 但生成的输出视频没有音频 有什么办法可以让音频保持原样吗 def ConvertVideo source background start end dest stream ffmpeg input sourc
  • 奇怪的 while 语句行为?

    我不明白为什么以下陈述不起作用 randomKey random choice list topic keys randomValue random choice topic randomKey current len randomValu