我正在使用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可能为'空'的情况 - 道歉,我没有解释得那么好
谢谢 - 我现在将'!='改为'不是'!
答案 0 :(得分:0)
首先,您应将x_f
和y_f
初始化为None
。
有四种情况:(x_f
是否None
)x(y_f
是否None
),而且您的代码缺少两个{ {1}}和x_f
为y_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