Python

Почему происходит ошибка при запуске 4 варианта?

Писал программу на Python, всё работает, при добавлении оценки и выводе работает только один раз, а потом ошибка индекса. Заранее спасибо.
studentList = ["Вася", "Петя"]
a = []
s = 0
while True:
answer = int(input("выберите действие\n"
"1-добавить студента\n"
"2-удалить студента\n"
"3-посмотреть весь список студентов\n"
"4-добавить оценку по списку учеников\n"
"0-выйти из программы\n"))
if answer not in [1, 2 ,3, 0, 4]:
print("такой команды нет")
continue
elif answer == 1:
newStudent = input("введите имя студента")
studentList.append(newStudent)
elif answer == 2:
delNumber = int(input())
studentList.pop(delNumber)
elif answer == 3:
print(studentList)
elif answer == 4:
c = input()
a.append(c)
while s <= len(studentList):
print(f'{studentList[s]} - {a[s]}')
s += 1
elif answer == 0:
break
В вашем коде возникает ошибка индекса, потому что в цикле `while` вы не проверяете, что индекс `s` не превышает длину списка `studentList`. Когда `s` становится равным длине списка, попытка получить элемент `studentList[s]` приводит к ошибке.

Чтобы исправить эту проблему, вам следует изменить условие в цикле `while` на `while s < len(studentList)`. Это гарантирует, что цикл будет выполняться только до тех пор, пока индекс `s` не достигнет конца списка `studentList`.

Вот исправленный код:

```python
studentList = ["Вася", "Петя"]
a = []
s = 0
while True:
answer = int(input("выберите действие\n"
"1-добавить студента\n"
"2-удалить студента\n"
"3-посмотреть весь список студентов\n"
"4-добавить оценку по списку учеников\n"
"0-выйти из программы\n"))
if answer not in [1, 2, 3, 0, 4]:
print("такой команды нет")
continue
elif answer == 1:
newStudent = input("введите имя студента")
studentList.append(newStudent)
elif answer == 2:
delNumber = int(input())
studentList.pop(delNumber)
elif answer == 3:
print(studentList)
elif answer == 4:
c = input()
a.append(c)
while s < len(studentList):
print(f'{studentList[s]} - {a[s]}')
s += 1
elif answer == 0:
break
```

Теперь цикл `while` будет выполняться только до тех пор, пока `s` меньше, чем длина списка `studentList`.
Vladimir Kusov
Vladimir Kusov
14 368
Лучший ответ
Проблема возникает в строке while s <= len(studentList):, где s - индекс, который должен быть в пределах допустимых значений индексов списка. Однако, при каждом выполнении цикла while, s увеличивается на 1, что может привести к выходу за пределы списка.

Для исправления этой ошибки, вы можете заменить условие в строке while s <= len(studentList): на while s < len(studentList):, чтобы цикл выполнялся только до последнего элемента списка.

Исправленный фрагмент кода будет выглядеть следующим образом:
 while s < len(studentList): 
print(f'{studentList[s]} - {a[s]}')
s += 1
Александр Деменёв Всё равно ошибка