2014-10-29 7 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

Я не понимаю проблему, которую вы испытываете. Каков ваш ожидаемый результат? –

+0

Вы имеете в виду длину 2000? –

+0

Я хочу, чтобы пользователь вводил значение x для комнаты и значение y для комнаты, и они могут читать эту комнату, или они могут писать на нее, но мне нужны только значения от -1000 до 1000 для практических целей. – caleb64804

ответ

0

Это не связано с тем, как что range() работ.

Это связано с тем, что индексирование списка маршрутов (как вы его используете) работает. Использование отрицательного числа в качестве индекса рассчитывается назад от конца списка.

x[-1] возвращает последний элемент в списке. x[-2001] будет отсчитывать назад от конца вашего списка и возвращает первый элемент.

Ваш список - 2001 год, поэтому x[-2001] - это то же самое, что и x[0]. Попробуйте это для себя.

+0

, так как я могу включить отрицательные значения, это просто невозможно? – caleb64804

+0

@ caleb64804: Не со списком, – BrenBarn

+0

@BrenBarn ok Спасибо – caleb64804

Смежные вопросы