python范围表现得很奇怪

时间:2014-10-29 21:15:26

标签: python range

我制作了一个程序,我还在努力,但是当我制作一个二维数组时,我已经注意到了这一点:

a = [["empty room :(" for x in range(-1000, 1001, 1)] for x in range(-1000, 1001, 1)]

我可以访问从-2000到2000而不是-1000到1000的值,我做错了什么以及如何解决它?谢谢!

整个代码是:

a = [["empty room :(" for x in range(-500, 501, 1)] for x in range(-500, 501, 1)]
a[0][1]="hi"
print("Enter 'read' for read and enter 'write' for write.")
print("Enter 'stop' to stop this program.")
prom = "empty"
while (prom != "stop"):
    prom = input("Read or Write?: ")
    if (prom == 'read'):
        x = int(input('Enter x value for room: '))
        y = int(input('Enter y value for room: '))
        print(str(a[x][y]))
    elif (prom == 'write'):
        x = int(input('Enter x value for room: '))
        y = int(input('Enter y value for room: '))
        mes = input('Enter message for room: ')
        a[x][y] = mes
    elif (prom == 'stop'):
        break
    else:
        print("Error: enter 'read', 'write', or 'stop'.")

1 个答案:

答案 0 :(得分:0)

这不是range()工作方式的原因。

这是因为列表索引(当你使用它时)的方式有效。使用负数作为索引从列表末尾向后计数。

x[-1]返回列表中的最后一项。 x[-2001]将从列表末尾向后计数,并返回第一个项目。

您的列表长度为2001项,因此x[-2001]x[0]相同。亲自试试吧。