Python 如何在while循环中使用布尔运算符或
我一直在努力解决一个程序的故障,我相信归结起来就是这样一句话:Python 如何在while循环中使用布尔运算符或,python,Python,我一直在努力解决一个程序的故障,我相信归结起来就是这样一句话: while line != '\n' or '': 我正在使用readline()读取一个文件,我正在努力修复函数中的代码。 对于这个while循环,我希望它在以下条件下继续: -行不等于“\n” 或 -第行不等于“” 为什么这句话不能代表上述情况?我认为应该是这样的 while line != '\n' or line != '': 我认为应该是这样 while line != '\n' or line != '': 你必须
while line != '\n' or '':
我正在使用readline()读取一个文件,我正在努力修复函数中的代码。
对于这个while循环,我希望它在以下条件下继续:
-行不等于“\n”
或
-第行不等于“”
为什么这句话不能代表上述情况?我认为应该是这样的
while line != '\n' or line != '':
我认为应该是这样
while line != '\n' or line != '':
你必须读书
line != '\n' or ''
作为
在布尔上下文中,空字符串的计算结果为False
,因此表达式等效于
line != '\n' or False
line != '\n'
这相当于
line != '\n' or False
line != '\n'
您或者需要像@houcros建议的那样编写表达式,如下所示
line != '\n' or line != ''
或者像我建议的那样
line not in ('\n', '')
我认为这更容易阅读。在您的特定情况下,对于这个特定的程序,一个简单的
while line.strip()
也就足够了-如果行
只包含空格(检查这是否是您真正想要的),行.strip()
将是'
,其计算结果为假
你必须阅读
line != '\n' or ''
作为
在布尔上下文中,空字符串的计算结果为False
,因此表达式等效于
line != '\n' or False
line != '\n'
这相当于
line != '\n' or False
line != '\n'
您或者需要像@houcros建议的那样编写表达式,如下所示
line != '\n' or line != ''
或者像我建议的那样
line not in ('\n', '')
我认为这更容易阅读。在您的特定情况下,对于这个特定的程序,一个简单的
while line.strip()
也就足够了-如果行
只包含空格(检查这是否是您真正想要的),行.strip()
将是'
,其计算结果为假
当你说你想要“行
不等于”\n“
或者行
不等于”
”,我想你真的想要“行
不等于”\n“
,行也不等于”
”。否则,您的条件就非常正确(因为line
不能既等于'\n'
又为空)
因此,我相信您正在寻找的条件是:
while line != '\n' and line != '':
或同等地
while not (line == '\n' or line == ''):
当你说你想要“行
不等于”\n'
或者行
不等于”
”,我想你真的想要“行
不等于”\n'
并且行不等于”
”。否则,您的条件就非常正确(因为line
不能既等于'\n'
又为空)
因此,我相信您正在寻找的条件是:
while line != '\n' and line != '':
或同等地
while not (line == '\n' or line == ''):
典型的类似问题:。是否只想读取Python中的文件?为什么不在
文件
对象(实际上是调用的对象)上使用for
,或者使用?Relate:。规范的类似问题:。是否只想读取Python中的文件?为什么不在文件
对象(实际上是调用的对象)上使用for
,或者使用?Relate:.while line.strip()
与while line!=“\n”
@PadraicCunningham没有人声称它是。我提醒询问者在使用前仔细检查line.strip()
解决方案是否仍能满足他的要求,提醒他line.strip()
将返回”
,如果该行仅包含空格。while line.strip()
与while line!=“\n”
@PadraicCunningham没有人声称它是。我提醒询问者在使用前仔细检查line.strip()
解决方案是否仍能完成他想做的事情,提醒他line.strip()
将返回”
,如果该行仅包含空格。这是一个无限循环。这是一个无限循环。