Найти - Пользователи
Полная версия: TypeError: 'int' object is not subscriptable
Начало » Python для новичков » TypeError: 'int' object is not subscriptable
1
veirant
a = input().split()
i = 0
j =
while i != len(a):
j = j.append(i)
i = i + 1.rfind()
print (j)
Программа, теоретически должна сортировать список по возрастанию и удалять повторяющаяся элементы в нём, но по какой-то необъяснимой для меня причине выдает ошибку. (TypeError: ‘int’ object is not subscriptable) В принципе знаком с языком недолго, поэтому такие осечки для меня свойственны. Пожалуйста, опишите, в чем может быть проблема и предоставте аналог этого кода, который вы считаете более эффективным. ( Учитывая способности новичка, разумеется) Заранее Спасибо.
KasFun
 a = input().split()
i = 0
j = 1
while i != len(a):
    j = j.append(i)
    i = i + 1.rfind()
    print (j)

вот так форматировать код нужно
в панели форматирования текста, рядом со смайликом улыбающимся - есть “вставить код Python”
KasFun
 a = input().split()
i = 0
j = 1
while i != len(a):
    j = j.append(i)
    i = i + j.rfind() +1
    print (j)

вот так без ошибок вроде
JOHN_16
KasFun
ну и что вы вставили? у него в j явно list
veirant

Вы не совсем поняли в чем задача. В первую очередь, j - это список в который мы добавляем значения. Код не выделяется, даже после вашего пресловутого форматирования. Я знаю, что это исключительно моя ненаходчивость, но не возьмем во внимание. Вот аналог. Правда пока с a ндроида. https://drive.google.com/file/d/15yiCSoUn7JLRYwvbOMjAzaIUHaQaUUTi/view?usp=drivesdk
papuas
veirant
 1.rfind()
что это такое?
 string.rfind(str, beg=0 end=len(string))
что вы не понимаете ?
oleg_panasyuk
Вот ваша программа если я правильно понял условия.
 a = input('Введите элементы списка через пробел: ').split(' ')
j = []
i = None
print(a)
while a:
	i = a.pop(0)
	if i in a:
		print('Элемент {} повторяется.'.format(i))
	else:
		j.append(i)
		print('Элемент {} добавлен в список.'.format(i))
else:
	j.sort()
	print(j)
marvellik
KasFun
вот так без ошибок вроде
вы о чем?
первая ошибка j это обьект int поэтому j.append(i) сразу даст ошибку но даже если это исправить то вторая
j.rfind() где rfind это метод строк и требует еще параметр в скобках и к списку не применим ну и главное этот код и близко не выполняет поставленную задачу
а вообще это решение в две строки (можно в одну)
 a = input('Введите элементы списка через пробел: ').split(' ')
print(list(sorted(set(a))))
или примерно так ( код не оптимальный но для понятия пойдет)

 a = input('Введите элементы списка через пробел: ').split(' ')
print(a)
result = []
# создаем новый список без повторов -------------------------
for elem in a:
    if elem not in result:
        result .append(elem)
print(result )
#-----------------------------------------------------------------------------------
# сортируем новый список (result.sort()) 
n = 1
while n < len(result):
   for i in range(len(result) - n):
       if result[i] > result[i + 1]:
           result[i], result[i + 1] = result[i + 1], result[i]
   n += 1
print(result)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB