Python:如何设置条件以在满足时“忽略”某些代码?
我正在使用Python(我想是2.7版本)
这里有一段代码,它是一个函数的一部分,这个函数接收x_1、x_2和x_f(y的情况也是一样)作为输入,然后在图像中给相应的像素上色(x_f和y_f表示图像中的最终像素,这样就只会在图像的范围内进行绘制)。
while x_1+k*x_2<=x_f and y_1+k*y_2<=y_f:
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
我遇到的问题是,我需要这段代码能够接受一个输入x_f(或y_f)= Empty
如果x_f=Empty
,那么上面那段代码应该忽略第一行中的整个x部分,只根据y的值生成输出,像这样:
while y_1+k*y_2<=y_f:
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
反之亦然。不幸的是,我不知道怎么让它做到这一点。
我尝试过的方法包括:
if x_f is not Empty and y_f is not Empty:
while x_1+k*x_2<=x_f and y_1+k*y_2<=y_f:
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
else:
if x_f==Empty:
while y_1+k*y_2<=y_f:
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
else:
while x_1+k*x_2<=x_f:
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
问题在于,它并不是抛出错误,而是我用来运行代码的程序不允许我这样做——它崩溃了,并给我一个CPU错误。有没有人有什么想法?
谢谢。
编辑~ 我正在使用一个函数colour_pixels(x_1,x_2...y_f)来接收我的输入。
我的错误是:“IVLE控制台重启:通信丢失”
当输入值y_f被输入为“Empty”时
我必须能够处理x_f或y_f可能是'Empty'的情况——抱歉,我没有很好地解释这一点
谢谢——我现在会把'!='改成'is not'!
2 个回答
我看到这段话时,提到你给颜色赋值的部分总是一样的。你只需要处理 x_f 或 y_f 其中一个为空的情况(但不能同时为空)。如果你不介意代码稍微多一点,可以用一个条件表达式来解决这个问题:
# For safety I would add an assert that at least one is not Empty
assert x_f is not Empty or y_f is not Empty
while (x_f is Empty or (x_1+k*x_2<=x_f)) and (y_f is Empty or (y_1+k*y_2<=y_f)):
pixels[x_1+k*x_2,y_2+k*y_2]=colour
k+=1
首先,你应该把 x_f
和 y_f
初始化为 None
,也就是没有值。
这里有四种情况:x_f
是 None
还是有值,以及 y_f
是 None
还是有值。你的代码缺少了当 x_f
和 y_f
都是 None
的情况。另外,你的 if x_f!=None:
这句代码表示 x_f
不是 None
,所以在这个部分你应该处理 x_f
,而不是 y_f
。
我觉得如果你用下面的 if-else 语句来写代码,会更容易理解:
if x_f==None:
if y_f==None:
....
else:
....
else:
if y_f==None:
....
else:
....