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
Python
Почему происходит ошибка при запуске 4 варианта?
Писал программу на Python, всё работает, при добавлении оценки и выводе работает только один раз, а потом ошибка индекса. Заранее спасибо.
В вашем коде возникает ошибка индекса, потому что в цикле `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`.
Чтобы исправить эту проблему, вам следует изменить условие в цикле `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`.
Проблема возникает в строке while s <= len(studentList):, где s - индекс, который должен быть в пределах допустимых значений индексов списка. Однако, при каждом выполнении цикла while, s увеличивается на 1, что может привести к выходу за пределы списка.
Для исправления этой ошибки, вы можете заменить условие в строке while s <= len(studentList): на while s < len(studentList):, чтобы цикл выполнялся только до последнего элемента списка.
Исправленный фрагмент кода будет выглядеть следующим образом:
Для исправления этой ошибки, вы можете заменить условие в строке while s <= len(studentList): на while s < len(studentList):, чтобы цикл выполнялся только до последнего элемента списка.
Исправленный фрагмент кода будет выглядеть следующим образом:
while s < len(studentList):
print(f'{studentList[s]} - {a[s]}')
s += 1
Александр Деменёв
Всё равно ошибка
Похожие вопросы
- Кто знает почему выходит ошибка? ПРОГРАММИРОВАНИЕ PYTHON
- Почему elif выдаёт ошибку? expected an indented block
- Где-то ошибка. Помогите.
- объясните мне как смотреть код и видеть причину ошибки? Это опыт работы, практики, гениальности или чего-то еще?
- Почему остаток от деления 7 % 5 = 2, если он равен 1.4?
- Где ошибка в коде? (Python)
- Ошибка в программе
- Ошибка в коде стандарт PEP8 Python
- Питон. Ошибка в программе. Вычисление простых чисел
- В чем разница между этими двумя вариантами написания кода функции?