Найти - Пользователи
Полная версия: Обозначить элемент списка как int
Начало » Python для новичков » Обозначить элемент списка как int
1
Simka
Здравствуйте!
Имеется список. Элементы списка - числа. С ними нужно произвести определенные действия в зависимости от значения.
Первоначально код был такой:
 b[4,1,0,0,0]
nlit=(b,[1])
for i in range (nlit):
    elemlit=(b[i])
    print(elemlit)
    if elemlit==0:

Получаю ответку:
nlitb,)
TypeError: ‘list’ object cannot be interpreted as an integer

Внес изменения:
 b=[4,1,0,0,0]
nlit=int(b,[1]) 
for i in range (nlit):
    elemlit=int(b[i])+1
        if elemlit==0:

“b…” в коде стоит на правильной позиции, без пробела перед ним
Ответ Пайтона:
nlit=int(b,) # число элементов в знаке
TypeError: ‘list’ object cannot be interpreted as an integer

Подскажите, почему элементы списка не воспринимаются как int и как их обозначить как int?
marvellik
Simka
почему элементы списка не воспринимаются как int
они и так int ( в вашем случае) а что вы пытаетесь делать тут
 nlit=int(b,[1])
одному вам понятно. по мне так вы пытаетесь кортеж состоящий из двух списков перевести в число а это ну никак невозможно от словосочетания невозможно никак!
если вы почитаете первые страницы любого учебника то там сказано что функция int() принимает один аргумент - строку и если эта строка состоит из цифр то возвращает число.
Nikita_PyCharm
Simka
Здравствуйте!Имеется список. Элементы списка - числа. С ними нужно произвести определенные действия в зависимости от значения.Первоначально код был такой:
У тебя синтаксическая ошибка на 3 строчке между b и “1” не должно быть запятой если ты отбираешь из списка b по индексу то это (b[ x]) а если ты присваиваешь список b и 1 то это (b, 1)
а int() в этом случае не надо указывать у тебя и так в списке только числа определяются как int()
 b=[4,1,0,0,0]
c=[4,1,0,1,0]
nlit=int(b[1])
for i in range (nlit):
    elemlit=int(b[i])+1
        if elemlit==0:
            pass
FishHook
marvellik
функция int() принимает один аргумент

В общем то говоря, это не правда

 print int('4b', 16)
marvellik
FishHook вообщем то вы правы
'''В языке программирования Python встроенная функция int() возвращает целое число в десятичной системе счисления (класс int). Если вызвать функцию int() без аргументов, она вернет 0. Чаще всего функции int() передают только один аргумент, который может быть либо строкой, либо числом
Строки должны быть символьными представлениями целого числа, иначе будет сгенерирована ошибка ValueError'''
я же уточнил что первые страницы. автору пока нужно именно это понять. ну а дальше ровно то что вы и показали.
'''В случае, когда указывается второй аргумент для функции int(), первый всегда должен быть строкой. С помощью второго аргумента функции int() сообщается, в какой системе счисления находится число, указанное в строке первого аргумента. Функция int() возвращает его значение в десятичной системе счисления.'''

у автора первый аргумент явно не строка а второй ну точно не система счисления.
Nikita_PyCharm а как с таким списком ваше решение работает?
 b=[4,150,0,0,0]
nlit = int(b[1])
for i in range (nlit):
    elemlit=int(b[i])+1
    if elemlit==0:
        pass
вообще то как и предполагалось
IndexError: list index out of range
а автору нужно что то делать с числами из списка
 b = [4,150,0,0,0]
for elem in b:
    if elem == 0:
        pass
    else:
        print(elem,'|', elem*2)


Simka
marvellik
что вы пытаетесь делать тут
Поподробнее о том, что я пытаюсь сделать.

b[4,1,0,0,0]
nlit=(b,[1])
for i in range (nlit):
elemlit=(b[i])
print(elemlit)
if elemlit==0:

Первая строка - список. Всего таких списков - по числу букв английского алфавита, т.е. списки a,b,c,d……Первая цифра - (для списка b это 4) -это количество последующих цифр в списке, это количество и последовательность нулей и единиц в списках отличаются .
В списке b в комбинации нулей и единиц 4 цифры. Это значение я присваиваю переменной nlit, считывая значение как 1-й элемент списка b. Это параметр для цикла. Далее я пытаюсь в цикле организовать для каждого i-го элемента ( видимо, правильно будет для (i+1)-го) комбинации выполнить одну из двух операций в зависимости от того, это 1 или 0. Вроде бы nlit естественным образом целое число, но если я правильно понял - Пайтон воспринимает его как элемент не списка, а строки.

Получив сообщение об ошибке, я и попытался использовать функцию int. Наверное, она здесь не нужна и у меня какая-то ошибка в коде? Где я “напорол”?
Simka
Nikita_PyCharm
У тебя синтаксическая ошибка на 3 строчке между b и “1” не должно быть запятой
Спасибо, даже неловко за такую ошибку!
marvellik
ну что то проясняется
 >>> b = [4,1,0,0,0]
>>> b[1]
1
>>> b[0]
4
>>>
вы наверно забыли что индексы начинаются с нуля? b это явно не первое число списка.
смотрим дальше исправив индекс на 0
 >>> nlit = b[0]
>>> for i in range (nlit):
	print(b[i])
	
4
1
0
0
>>>
опачки а первое то число это совсем не 0 или1. вообщем вам нужно внимательно почитать про индексы а так же про range
 >>> for i in range (nlit):
	print(b[i + 1])
	
1
0
0
0
Simka
marvellik
вы наверно забыли что индексы начинаются с нуля? b это явно не первое число списка.
Спасибо! И для nlit надо было нулевой элемент списка брать… Конечно же забыл. Или точнее - иногда сбивают старые навыки программирования на Algol-68 для ЭВМ Минск-22. Такой я “динозавр”.
К Пайтону внуки приобщают (или я их, взаимный процесс), это после Scratch.
marvellik
Simka
я думал тут один такой древний
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