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()
将返回
,如果该行仅包含空格。这是一个无限循环。这是一个无限循环。