Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
melancholiac
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 1
1

Python : index_out_of_range

07.01.2016, 18:13. Просмотров 226. Ответов 1
Метки нет (Все метки)

Шалом всем. Возникла indexoutofrange проблема при создании тайлов пола рогалика. Первая программа на питоне, знакомился с языком 5 часов. Посему извиняюсь за ламерство и обещаю скорейшее RTFM, а людей с зорким глазом прошу указать где собственно происходит выход за границы массива. IDE: VS15.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class tile:
    def __init__(self,x,y,symbol):          #Класс тайла
        self.x = int(x)
        self.y = int(y)
        self.symbol=str(symbol)[0]         #Используем только первый символ строки
class field2d:
    def __init__(self,size,floor):          #Создаем пол от размера и заполняем его тайлами пола (floor является экземпляром tile)
        self.size=size
        self.field=[]                       #Используем одномерный массив для создания 2д поля, да
        for i in range(self.size*self.size):
            floor.y= i/size>=1 and i//size or 0 # Устанавливаем координату х исходя из проверки на выход из строки и перехода на следующую
            floor.x= i/size>=1 and i%size or i # Устанавливаем координату у исходя из оставшегося значения i
            self.field[i]=floor.symbol
    def out(self):  # Построчный вывод
        for i in range(self.size):
            row=""
            for j in range(self.size):
                row+=str(self.field[j])
            print(row)
 
floortile=tile(0,0,'.')
field=field2d(5,floortile)
field.out()
Добавлено через 3 минуты
Забыл упомянуть что координаты х и у каждого тайла поля в дальнейшем будут использоваться для функции перемещения, которая просто будет менять символы двух объектов на поле (и соответственно их координаты)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.01.2016, 18:13
Ответы с готовыми решениями:

Python - момент истины. Python - как оружие возмездие против системы
Какие модули в python мне нужны для взлома баз данных? Перехвата информации?...

Cx_freeze python error in main script как исправить- Python
Пытался создать из .py .exe , но при запуске .exe получаю ошибку вот код...

Как из Python скрипта выполнить другой python скрипт?
Как из Python скрипта выполнить другой python скрипт? Если он находится в той...

Что лучше учить Python 2 или Python 3?
хочу начать учить питон но полазив в нете, частенько попадалась информация что...

Порт pyqt5 (python 3.5) программы на android - Python
Подскажите пожалуйста возможно ли программу написанную на python методами pyqt5...

1
alex925
2671 / 2278 / 630
Регистрация: 19.03.2012
Сообщений: 8,830
07.01.2016, 20:51 2
Цитата Сообщение от melancholiac Посмотреть сообщение
а людей с зорким глазом прошу указать где собственно происходит выход за границы массива
В следующий раз внимательней читай traceback там пишется, где возникла ошибка.
Ошибка у тебя в 13 строке, ты создал пустой список (ни чем его не заполнил) и пытаешься обратиться к какому-то элементу (которого нет), отсюда и ошибка. Нельзя обращаться к несуществующему.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
class Tile:
    def __init__(self, x, y, symbol):  # Класс тайла
        self.x = int(x)
        self.y = int(y)
        self.symbol = str(symbol)[0]  # Используем только первый символ строки
 
 
class Field2D:
    def __init__(self, size, floor):  # Создаем пол от размера и заполняем его тайлами пола (floor является экземпляром tile)
        self.size = size
        self.field = []  # Используем одномерный массив для создания 2д поля, да
        for i in range(self.size * self.size):
            floor.y = i / size >= 1 and i // size or 0  # Устанавливаем координату х исходя из проверки на выход из строки и перехода на следующую
            floor.x = i / size >= 1 and i % size or i  # Устанавливаем координату у исходя из оставшегося значения i
            self.field.append(floor.symbol)
 
    def out(self):  # Построчный вывод
        for i in range(self.size):
            row = ""
            for j in range(self.size):
                row += str(self.field[j])
            print(row)
 
 
floortile = Tile(0, 0, '.')
field = Field2D(5, floortile)
field.out()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2016, 20:51

Почему синтаксис Python 2.* и Python 3.* так отличается?
Привет! Решил на досуге заняться изучением Python'a. Читаю книгу по второму...

Python 35 Выполнить файл из python shell
Есть файл do.py : print('start') import os import sys import re import...

Сложности с переходом с python 2.x на python 3.x
def _load_config(self): for fn in CONFIG_FILES: fn =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru