Python:如何设置条件以在满足时“忽略”某些代码?

0 投票
2 回答
3763 浏览
提问于 2025-04-18 05:30

我正在使用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 个回答

0

我看到这段话时,提到你给颜色赋值的部分总是一样的。你只需要处理 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
0

首先,你应该把 x_fy_f 初始化为 None,也就是没有值。

这里有四种情况:x_fNone 还是有值,以及 y_fNone 还是有值。你的代码缺少了当 x_fy_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:
        ....

撰写回答