Питон проблема с циклом for
Написал функцию, которая должна загружать карту в игру. Но почему-то цикл for видит только 3 строки.
Вот функция:
def loadmap(path):
mapfile=open(path)
mapc=[]
while True:
ln = mapfile.readline()
if not ln:
break;
ln=ln.replace('\n',"")
mapc.append(ln)
mapfile.close
bg=mapc[0]
bsc=mapc[1]
mapc.pop(0)
mapc.pop(0)
print(mapc)
for x,y,sx,sy,tsp,col,tsc in mapc:
x=int(x)
y=int(y)
sx=int(sx)
sy=int(sy)
obj=pygame.draw.rect(frame,(255,255,255),[x,y,sx,sy])
loadimg(obj,pygame.image.load(tsp)
Вот, что за ошибка:
for x,y,sx,sy,tsp,col,tsc in mapc:
^^^^^^^^^^^^^^^^^^^^^
ValueError: not enough values to unpack (expected 7, got 3)
Вот сам файл:
n
n
n
500
500
10
10
textures/idle.PNG
#000000
$
def loadmap(path):
try:
with open(path) as mapfile:
mapc = [line.strip() for line in mapfile] # Более компактный способ чтения файла
bg = mapc[0]
bsc = mapc[1]
map_data = mapc[2:] # Данные карты
for line in map_data:
try:
x, y, sx, sy, tsp, col, tsc = line.split()
x = int(x)
y = int(y)
sx = int(sx)
sy = int(sy)
obj = pygame.draw.rect(frame, (255, 255, 255), [x, y, sx, sy])
loadimg(obj, pygame.image.load(tsp)) # Закрывающая скобка
except ValueError:
print(f"Ошибка в строке: {line}")
except FileNotFoundError:
print(f"Файл не найден: {path}")
ты не мог в один блок запихнуть весь код?
И, ты понимаешь что делает метод append? Ты добавил список в список, а не расширил его, как это делает метод extend.
Поэтому, когда ты пытался список списков распаковать на СЕМЬ объектов, вылезла ошибка т.к. в списке был всего ОДИН объект, т.е. список.
Читай: https://skillbox.ru/media/code/metody-append-i-extend-v-python-dobavlyaem-elementy-v-spisok/
