Уведомления

Группа в Telegram: @pythonsu

#1 Июль 20, 2020 18:11:13

Simka
Зарегистрирован: 2020-02-15
Сообщения: 71
Репутация: +  1  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

Здравствуйте!
Имеется список. Элементы списка - числа. С ними нужно произвести определенные действия в зависимости от значения.
Первоначально код был такой:

 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?

Отредактировано Simka (Июль 20, 2020 18:15:38)

Офлайн

#2 Июль 20, 2020 18:26:35

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

Simka
почему элементы списка не воспринимаются как int
они и так int ( в вашем случае) а что вы пытаетесь делать тут
 nlit=int(b,[1])
одному вам понятно. по мне так вы пытаетесь кортеж состоящий из двух списков перевести в число а это ну никак невозможно от словосочетания невозможно никак!
если вы почитаете первые страницы любого учебника то там сказано что функция int() принимает один аргумент - строку и если эта строка состоит из цифр то возвращает число.

Отредактировано marvellik (Июль 20, 2020 18:29:47)

Офлайн

#3 Июль 20, 2020 18:30:18

Nikita_PyCharm
Зарегистрирован: 2020-07-01
Сообщения: 13
Репутация: +  1  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

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

Отредактировано Nikita_PyCharm (Июль 20, 2020 18:35:20)

Прикреплённый файлы:
attachment tesk.py (135 байт)

Офлайн

#4 Июль 20, 2020 18:54:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

marvellik
функция int() принимает один аргумент

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

 print int('4b', 16)



Офлайн

#5 Июль 20, 2020 20:17:54

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

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)


Офлайн

#6 Июль 20, 2020 23:10:09

Simka
Зарегистрирован: 2020-02-15
Сообщения: 71
Репутация: +  1  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

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 (Июль 21, 2020 00:06:39)

Офлайн

#7 Июль 21, 2020 00:01:14

Simka
Зарегистрирован: 2020-02-15
Сообщения: 71
Репутация: +  1  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

Nikita_PyCharm
У тебя синтаксическая ошибка на 3 строчке между b и “1” не должно быть запятой
Спасибо, даже неловко за такую ошибку!

Офлайн

#8 Июль 21, 2020 13:20:58

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

ну что то проясняется

 >>> 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

Отредактировано marvellik (Июль 21, 2020 13:21:21)

Офлайн

#9 Июль 21, 2020 15:44:04

Simka
Зарегистрирован: 2020-02-15
Сообщения: 71
Репутация: +  1  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

marvellik
вы наверно забыли что индексы начинаются с нуля? b это явно не первое число списка.
Спасибо! И для nlit надо было нулевой элемент списка брать… Конечно же забыл. Или точнее - иногда сбивают старые навыки программирования на Algol-68 для ЭВМ Минск-22. Такой я “динозавр”.
К Пайтону внуки приобщают (или я их, взаимный процесс), это после Scratch.

Отредактировано Simka (Июль 21, 2020 16:54:17)

Офлайн

#10 Июль 21, 2020 18:35:16

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Обозначить элемент списка как int

Simka
я думал тут один такой древний

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version