Top.Mail.Ru
Ответы

Питон проблема с циклом for

Написал функцию, которая должна загружать карту в игру. Но почему-то цикл for видит только 3 строки.
Вот функция:

1
 def loadmap(path): 
1
     mapfile=open(path) 
1
     mapc=[] 
1
     while True: 
1
         ln = mapfile.readline() 
1
         if not ln: 
1
             break; 
1
         ln=ln.replace('\n',"") 
1
         mapc.append(ln) 
1
     mapfile.close 
1
     bg=mapc[0] 
1
     bsc=mapc[1] 
1
     mapc.pop(0) 
1
     mapc.pop(0) 
1
     print(mapc) 
1
     for x,y,sx,sy,tsp,col,tsc in mapc: 
1
         x=int(x) 
1
         y=int(y) 
1
         sx=int(sx) 
1
         sy=int(sy) 
1
         obj=pygame.draw.rect(frame,(255,255,255),[x,y,sx,sy]) 
1
         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)

Вот сам файл:

1
 n 


1
 n 
1
 n 
1
 500 
1
 500 
1
 10 
1
 10 
1
 textures/idle.PNG 
1
 #000000 
1
 $ 
Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок
1мес

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}")

Аватар пользователя
Оракул
1мес

ты не мог в один блок запихнуть весь код?

И, ты понимаешь что делает метод append? Ты добавил список в список, а не расширил его, как это делает метод extend.

Поэтому, когда ты пытался список списков распаковать на СЕМЬ объектов, вылезла ошибка т.к. в списке был всего ОДИН объект, т.е. список.

Читай: https://skillbox.ru/media/code/metody-append-i-extend-v-python-dobavlyaem-elementy-v-spisok/