Python:如果满足这个条件,如何设置条件以“忽略”某些代码?

时间:2014-05-06 07:40:47

标签: python function loops input conditional-statements

我正在使用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 (or 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输入为“空”

我必须能够处理x_f或y_f可能为'空'的情况 - 道歉,我没有解释得那么好

谢谢 - 我现在将'!='改为'不是'!

2 个答案:

答案 0 :(得分:0)

首先,您应将x_fy_f初始化为None

有四种情况:(x_f是否None)x(y_f是否None),而且您的代码缺少两个{ {1}}和x_fy_f。此外,您的None声明表示if x_f!=None:不是x_f。因此,您应该在此块中执行涉及None而非x_f的操作。

如果您创建if-else语句,我认为您的代码将更具可读性:

y_f

答案 1 :(得分: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