#python #python_3x #обработка_ошибок
Вот задача: Сгенерировать 20 случайных целых чисел в диапазоне от -5 до 4, записать их в ячейки массива. Посчитать сколько среди них положительных, отрицательных и нулевых значений. Вывести на экран элементы массива и посчитанные количества. Вот текст ошибки: a[i]=int(a[i]) TypeError: 'int' object is not subscriptable. Как ето исправить?Большое Спасибо! import random a=[] for i in range(20): a=random.randint(-5,4) p=[] n=[] z=[] for i in range(20): a[i]=int(a[i]) for i in range(0,20,1): if(a[i]>0): p.append(a[i]) if(a[i]==0): z.append(a[i]) if (a[i]<0): n.append(a[i]) print('quantity positive',len(p)) print('quantity negative',len(n)) print('quantity zero',len(z))
Ответы
Ответ 1
В 4й строчке вы записываете в переменную "a" целое число: a=random.randint(-5,4) Затем, в 9й строчке вы пытаетесь обратиться к переменной "a" по индексу. a[i]=int(a[i]) Но целочисленные переменные не умеют в индекс. Чтобы всё заработало, вам нужно заменить 4ю строчку на такое: a.append(random.randint(-5,4)) А вообще, ваш код не слишком питоничен. Там где это возможно, рекомендуется вместо циклов использовать списковые включения. Они гораздо более лаконичны, и код с ними становится гораздо проще, чем без них. Вашу программу можно переписать таким образом: import random a = [random.randint(-5,4) for _ in range(20)] p = [i for i in a if i > 0] n = [i for i in a if i < 0] z = [i for i in a if i == 0] print('quantity positive', len(p)) print('quantity negative', len(n)) print('quantity zero', len(z)) Как видите, получилось гораздо понятнее, чем у вас. PS: Признаком хорошего стиля считается ставить пробелы слева и справа от "равно", знаков сравнения и арифметических символов. А также пробел после запятой.
Комментариев нет:
Отправить комментарий