2014-10-29 148 views
-3

我有一個程序我做了,我仍然在做這個工作,但我發現,當我做一個2維數組,我這個做:蟒蛇範圍奇怪行爲

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'.") 
+3

我不明白你遇到的問題。你的預期產出是多少? – 2014-10-29 21:16:36

+0

你的意思是長度是2000? – 2014-10-29 21:18:30

+0

我希望用戶輸入房間的x值和房間的y值,並且他們可以讀取該房間或他們可以寫入的房間,但我只希望實際使用的值爲-1000到1000。 – caleb64804 2014-10-29 21:19:12

回答

0

這是不是由於方式range()作品。

這是因爲列表索引(正如你使用它)的方式。使用負數作爲索引從列表末尾向後計數。

x[-1]返回列表中的最後一項。 x[-2001]將從列表末尾向後計數,並返回第一個項目。

您的名單是2001條目long,所以x[-2001]x[0]相同。親自嘗試一下。

+0

那麼我怎麼能包含負值是不可能的? – caleb64804 2014-10-29 21:28:27

+0

@ caleb64804:沒有列表,沒有 – BrenBarn 2014-10-29 21:29:11

+0

@BrenBarn ok謝謝 – caleb64804 2014-10-29 21:30:08