TypeError: 'int' object is not subscriptable

ArturP

Новичок
Пользователь
Апр 12, 2020
15
1
3
Python:
a = int(input())
f = []
for i in range(a):
    b = input()
    b = [int(j) for j in b.split()]
    f.append(b)
t = True
while t:
    for i in range(a - 1):
        if f[i[1]] > f[i[1]+1]:
            f[i], f[i+1] = f[i+1], f[i]
        elif f[i[1]] ==  f[i[1]+1]:
            if f[i[0]] > f[i[0]+1]:
                f[i], f[i+1] = f[i+1], f[i]
        else:
            t = False
for i in range(a):
    print(f[i])
 
Последнее редактирование:

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
У вас в цикле
Python:
for i in range(a - 1):
перебираются числа от 0 до a - 1.
В строке
Python:
if f[i[1]] > f[i[1]+1]:
вы пытаетесь получить значение i[1], но так как в переменной i находится число - возникает ошибка.
 
  • Мне нравится
Реакции: ArturP

ArturP

Новичок
Пользователь
Апр 12, 2020
15
1
3
У вас в цикле
Python:
for i in range(a - 1):
перебираются числа от 0 до a - 1.
В строке
Python:
if f[i[1]] > f[i[1]+1]:
вы пытаетесь получить значение i[1], но так как в переменной i находится число - возникает ошибка.
Можете в таком случае мне подсказать как поступить?
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Можете в таком случае мне подсказать как поступить?
Что должно получиться в результате? У вас в переменной f список списков чисел, с которым вы проводите какие операции в бесконечном цикле while t:. Вот эти строки кода не выполнятся никогда:
Python:
for i in range(a):
    print(f[i])
так как цикл выше не остановится.
 

ArturP

Новичок
Пользователь
Апр 12, 2020
15
1
3
Что должно получиться в результате? У вас в переменной f список списков чисел, с которым вы проводите какие операции в бесконечном цикле while t:. Вот эти строки кода не выполнятся никогда:
Python:
for i in range(a):
    print(f[i])
так как цикл выше не остановится.
Простите, немного недописал код можете подсказать сейчас(отредактировал тему)
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Простите, немного недописал код можете подсказать сейчас(отредактировал тему)
Что код должен делать (какой результат) по прежнему не понятно. Опишите задание или что хотите с помощью кода сделать словами (входные данные, выходные данные, какие-то ограничения и т. д.)
 

ArturP

Новичок
Пользователь
Апр 12, 2020
15
1
3
Что код должен делать (какой результат) по прежнему не понятно. Опишите задание или что хотите с помощью кода сделать словами (входные данные, выходные данные, какие-то ограничения и т. д.)
Необходимо отсортировать элементы массива. В первой строке вводится количество списков из двух элементов в последующих эти самые элементы. Сортировать нужно по убыванию первых значений(для 1 5 это будет 1) если они равны то по возрастанию вторых.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Необходимо отсортировать элементы массива. В первой строке вводится количество списков из двух элементов в последующих эти самые элементы. Сортировать нужно по убыванию первых значений(для 1 5 это будет 1) если они равны то по возрастанию вторых.
Не совсем понятен принцип сортировки. Вот пример со стандартной сортировкой по возрастанию:
Python:
a = int(input())
f = []
for i in range(a):
    b = input()
    b = [int(j) for j in b.split()]
    f.append(b)

f.sort()

for i in range(a):
    print(f[i])
 

ArturP

Новичок
Пользователь
Апр 12, 2020
15
1
3
Не совсем понятен принцип сортировки. Вот пример со стандартной сортировкой по возрастанию:
Python:
a = int(input())
f = []
for i in range(a):
    b = input()
    b = [int(j) for j in b.split()]
    f.append(b)

f.sort()

for i in range(a):
    print(f[i])
Используется метод пузырьковой сортировки.
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
Используется метод пузырьковой сортировки.
Вот пример:
Python:
a = int(input())
f = []
for i in range(a):
    b = input()
    b = [int(j) for j in b.split()]
    f.append(b)

last_item = []
for i, item in enumerate(f):
    if i == 0:
        last_item = item
    else:
        if last_item[1] > item[1]:
            f[i - 1], f[i] = f[i], f[i - 1]
        elif last_item[1] == item[1]:
            if last_item[0] > item[0]:
                    f[i - 1], f[i] = f[i], f[i - 1]

for i in f:
    print(i)
 

Форум IT Специалистов