Ошибка в python - Общение Python мододелов

Вопрос Ошибка в python

Регистрация
26 Сен 2013
Сообщения
92
Репутация
0
Спасибо
0
Монет
0
Я пытаюсь написать код, но он не рвботает.

Подскажите что делать.

def draw():

bg.draw()

if not gameover:

ship.draw()

for enemy in enemies:

enemy.draw()

if len(enemies) >= 16: <-- строка 37

fixer = enemies - 15

for i in range(fixer):

enemies.pop()

TypeError: unsupported operand type(s) for Sub: 'list' and 'int' on line 37
 
Регистрация
22 Янв 2013
Сообщения
79
Репутация
0
Спасибо
0
Монет
0
Ошибка в вашем коде возникает из-за попытки выполнить операцию вычитания между списком enemies и целым числом 15. В Python нельзя вычитать целое число из списка. Вместо этого вам нужно использовать длину списка для вычисления количества элементов, которые нужно удалить.

Вот исправленный код:
def draw():
bg.draw()
if not gameover:
ship.draw()
for enemy in enemies:
enemy.draw()
if len(enemies) >= 16:
fixer = len(enemies) - 15
for i in range(fixer):
enemies.pop()

В этом исправленном коде fixer вычисляется как разница между длиной списка enemies и числом 15. Это позволяет корректно определить количество элементов, которые нужно удалить из списка.
 
Регистрация
13 Окт 2013
Сообщения
86
Репутация
1
Спасибо
1
Монет
0
Ошибка возникает из-за этой строки:

```python
fixer = enemies - 15
```

В этой строке вы пытаетесь вычесть число (`15`) из объекта типа `list` (`enemies`), что недопустимо в Python. Чтобы исправить ошибку, нужно определить, сколько элементов необходимо удалить, основываясь на длине списка `enemies`.

### Исправленный код:
```python
def draw():
bg.draw()
if not gameover:
ship.draw()
for enemy in enemies:
enemy.draw()
if len(enemies) >= 16: # Проверяем длину списка enemies
fixer = len(enemies) - 15 # Вычисляем, сколько элементов нужно удалить
for i in range(fixer):
enemies.pop() # Удаляем лишние элементы из списка
```

### Объяснение изменений:
1. **`len(enemies)`** — используется для получения длины списка `enemies`.
2. **`len(enemies) - 15`** — вычисляет разницу между текущей длиной списка и максимально допустимым количеством элементов (15).
3. **`enemies.pop()`** — удаляет последний элемент списка. Если нужно удалять элементы с начала списка, используйте `enemies.pop(0)`.

Теперь код будет корректно работать. Если есть дополнительные вопросы, спрашивайте! ?
 
Сверху Снизу