为什么>=计算在Python中不起作用

为什么>=计算在Python中不起作用,python,evaluation,comparison-operators,Python,Evaluation,Comparison Operators,>似乎不起作用。当fixedx=100且lenimg[0]为100时,代码不执行打印语句并将fixedx的值更改为99 这两个变量都是整数。 在python中还有其他方法进行比较吗 single_sm.jpg是一个100x125 jpg文件。因此,lenimg=125,lenimg[0]=100 运行下面的脚本生成: 回溯最近一次呼叫上次: 文件shrink.py,第69行,in 更改的\u img=收缩pix,0,81,25,20,向下 文件shrink.py,第37行,在shrink中 结果

>似乎不起作用。当fixedx=100且lenimg[0]为100时,代码不执行打印语句并将fixedx的值更改为99

这两个变量都是整数。 在python中还有其他方法进行比较吗

single_sm.jpg是一个100x125 jpg文件。因此,lenimg=125,lenimg[0]=100

运行下面的脚本生成:

回溯最近一次呼叫上次:

文件shrink.py,第69行,in

更改的\u img=收缩pix,0,81,25,20,向下

文件shrink.py,第37行,在shrink中

结果[i,j]=img[fixedx,fixedy]

索引器:索引100超出大小为100的轴1的界限

from PIL import Image
import numpy as np
import math

def shrink(img, x, y, size, scale, downsp):

    result = np.zeros((scale, scale, 3), dtype=np.uint8)
    scale_factor = math.floor(size/scale)
    for i in xrange(scale):
        for j in xrange(scale):

            fixedx = int(i*scale_factor+x)
            fixedy = int(j*scale_factor+y)

            if fixedx >= (len(img[0]) - 1):
                print "in this step"
                fixedx = len(img[0]) - 1
            if fixedy >= (len(img) - 1): 
                fixedy = len(img) - 1

            result[i,j] = img[fixedx, fixedy]
    return result

if __name__ == '__main__':

    img = Image.open("imgs/single_sm.jpg")
    pix = np.array(img)
    downsp = True
    changed_img = shrink(pix, 0, 81, 25, 20, downsp)
    changed_img = np.array(changed_img)
    resized = Image.fromarray(changed_img, 'RGB')
    resized.save('downsp.jpg')
错误显示:

IndexError: index 100 is out of bounds for axis 1 with size 100
由于轴1是数组fixedy的第二维度,而不是fixedx,这意味着数组的值与预期值不同。所以结论是阵列有125x100像素,实际上这正是你说的:lenimg=125,lenimg[0]=100,而不是100x125


为了证实这一点,我尝试了你的程序,用125x100个零的普通数组替换图像,它显示了与你相同的错误消息。然后我用一个100x125数组进行了尝试,结果成功了。

这段代码应该可以正常工作。我们需要查看img[0]是什么以及分配了什么fixedx。无法复制。问题在别处。你能在if语句之前执行print x、typefixedx和print lenimg[0]吗?@vk1011我执行了,都显示100,然后索引越界错误