【问题标题】:How is while loop working in the python code below?while 循环在下面的 python 代码中是如何工作的?
【发布时间】:2021-03-06 06:45:56
【问题描述】:

这个while循环是如何工作的?

myfile = open(r'E:\poem.txt',"r")
str=" " 
while str: 
    str = myfile.readline() 
    print(str,end=" ") 
myfile.close()

【问题讨论】:

  • 请重新格式化您的代码,使其有意义。
  • 我已经重新格式化了代码。等待批准。
  • @Shir 我怀疑格式是否正确,即使它现在已被批准; myfile.close() 在 while 块内;它可能应该在 while 块之外。
  • 你不应该使用 str 作为变量名。
  • @RufusVS 你确实指出了;编辑应该被恢复并由 OP 代替。但是,我对后者的期望很低。然而目前,我们看到的示例代码可能不正确。

标签: python while-loop


【解决方案1】:

myfile.readline() 返回一个空字符串,以防它没有更多行可从文件中读取。这是它返回此值的唯一情况。因此,可以将其用作whileif 语句中的布尔条件。

因此,在上面的示例中,while 循环在没有更多行可读取时停止。

更多信息请参见this post

【讨论】:

  • .readline() 不返回 False:它返回一个空字符串,其计算结果为 Falsey 值。重要区别。
  • 请指出,空字符串作为 while (and if) 语句中的唯一测试用例的评估结果为假值。您的答案(现在)缺少该部分,并且可能是理解 while 循环(条件)如何工作的基础。
  • 我编辑了这篇文章。希望现在就足够了。
  • 知道了。谢谢大家的解释。
【解决方案2】:

我认为这不是最好的解决方案。这是一个更 Pythonic 的:

with open(r'E:\poem.txt') as myfile:
    for line in myfile:
        print(line, end=' ')

with 语句会自动为你关闭文件。

【讨论】:

  • 但问题是 while 循环在原始代码中是如何工作的。不是如何更好地实现它。
  • 我对此表示赞同,但这并不是对以下问题的真正答案:“这个 while 循环是如何工作的?”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 2019-01-22
相关资源
最近更新 更多