Леонид Мадиков
Знаток
(427)
2 недели назад
Ошибка в вашем коде возникает из-за попытки выполнить операцию вычитания между списком 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. Это позволяет корректно определить количество элементов, которые нужно удалить из списка.
Леонтьев Михаил
Гуру
(3442)
2 недели назад
Ошибка возникает из-за этой строки:
```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)`.
Теперь код будет корректно работать. Если есть дополнительные вопросы, спрашивайте! ?
Подскажите что делать.
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