Ошибка индекса в Django. Список вне диапазона - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть программа, которая принимает данные от пользователя, затем разделяет значения и преобразует их в список.

num_of_subjects = 5 #input by user
subjects = ['eng', 'maths', 'sci', 'his'] #wrong input by user

Ожидается

subjects = ['eng', 'maths', 'sci', 'his', 'phy'] #because num_of_subjects is 5

views.py

def schoolinput_view(request):
    if request.method == 'POST':
    subjects_view = request.POST.get('subjects')

   for i in range(num_of_subjects):
       sub = subjects_view[i]
       print(sub)

Это дает список ошибок вне диапазона, как и ожидалось, поэтому я попытался

try:
    def schoolinput_view(request):
        if request.method == 'POST':
        subjects_view = request.POST.get('subjects')

    for i in range(num_of_subjects):
       sub = subjects_view[i]
       print(sub)
except IndexError as listerror:
    print('Please check if subjects meet number of subjects')

И это не решило проблему и все еще дает IndexError, даже если обработано исключение.

1 Ответ

0 голосов
/ 18 февраля 2020

Вместо этого вы можете перед тем, как перейти к следующему процессу, проверить, соответствует ли количество введенных предметов.

if num_of_subjects == len(subjects):
    for i in range(num_of_subjects):
        sub = subjects_view[i]
        print(sub)
else:
    print('Please check if subjects meet number of subjects')

Вы также можете сократить

for i in range(num_of_subjects):
    sub = subjects_view[i]
    print(sub)

до

for subject in subjects:
    print(subject)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...