2024-04-19 21:11:04 发布
网友
这是我的密码:
if mode not "w" or mode not "r+": # do stuff
这将导致以下错误:
SyntaxError: invalid syntax
有人知道我做错了什么吗?你知道吗
试试这个:
if not mode == "w" or not mode == "r+": ...
这会阻止您看到SyntaxError。但是,由于这些是打开file对象以使其可写的常用值,因此也可以尝试写入文件并捕获IOError。像这样的事
SyntaxError
file
IOError
f = open('blah', 'r') try: f.write("Something amazing") except IOError: # do something to read-only file
not不是比较运算符;它是一个一元布尔运算符,这意味着它只接受一个参数。你知道吗
not
也许你想要的是!=,而不是平等?你知道吗
!=
if mode != "w" and mode != "r+":
我还用and替换了or,因为如果模式等于'w',它也将不等于'r+'。所有这些负面因素都让你很难摸索,你可以使用:
and
or
'w'
'r+'
if not (mode == 'w' or mode == 'r+'):
如果这更容易理解,从逻辑上讲。你知道吗
您还可以使用元组和负成员身份测试将测试组合为一个测试,not in:
not in
if mode not in ('w', 'r+'):
更容易阅读和理解。你知道吗
无法使用以下语法比较项:
a not b
您需要将它们与以下语法进行比较:
a != b
因此,请将if语句改写为:
if mode != "w" or mode != "r+": # do stuff
话虽如此,这纯粹是基于语法的改变。你知道吗
问题是,这个if语句没有意义,所以即使您做了上面的更改,它也肯定不会做您希望它做的事情。你知道吗
考虑一下:假设模式是"w"怎么办?那么它就不是"r+",反之亦然。换句话说,每个值都将与这两个值不同,或者至少其中一个不同。你知道吗
"w"
"r+"
我想你需要and而不是or:
if mode != "w" and mode != "r+": # do stuff
试试这个:
这会阻止您看到
SyntaxError
。但是,由于这些是打开file
对象以使其可写的常用值,因此也可以尝试写入文件并捕获IOError
。像这样的事not
不是比较运算符;它是一个一元布尔运算符,这意味着它只接受一个参数。你知道吗也许你想要的是
!=
,而不是平等?你知道吗我还用
and
替换了or
,因为如果模式等于'w'
,它也将不等于'r+'
。所有这些负面因素都让你很难摸索,你可以使用:如果这更容易理解,从逻辑上讲。你知道吗
您还可以使用元组和负成员身份测试将测试组合为一个测试,
not in
:更容易阅读和理解。你知道吗
无法使用以下语法比较项:
您需要将它们与以下语法进行比较:
因此,请将if语句改写为:
话虽如此,这纯粹是基于语法的改变。你知道吗
问题是,这个if语句没有意义,所以即使您做了上面的更改,它也肯定不会做您希望它做的事情。你知道吗
考虑一下:假设模式是
"w"
怎么办?那么它就不是"r+"
,反之亦然。换句话说,每个值都将与这两个值不同,或者至少其中一个不同。你知道吗我想你需要
and
而不是or
:相关问题 更多 >
编程相关推荐