Int object has no attribute append

Когда я запускаю этот код, возникает следующая ошибка: я новичок в программировании, и я знаю, что у меня есть множество бесполезных массивов. Я не знаю, где моя ошибка, так как я объявил j как массив. Я полностью из идей.

4 ответа

2 Решение DhruvPathak [2012-08-09 09:20:00]

j был использован как список aa, так и целое число. Используйте j только для целочисленного имени, назовите список на что-то еще.

Внимательно посмотрите на следующий фрагмент кода:

Обратите внимание, как вы сначала вызываете .append в j (который вы инициализировали списком ранее), а затем используйте его как переменную цикла, вложенную в тот же цикл.

Используйте лучше, значимые имена переменных в вашем коде, чтобы избежать этого класса ошибок. Переименуйте либо переменную цикла, либо переменную списка модулей.

1 Alex [2012-08-09 09:17:00]

Кажется, вы используете переменную ‘j’ как int-counter в цикле, то есть список ‘j’ заменяется на int ‘j’, где вы не можете добавить что-то. Решение. Переименуйте переменные с более сложными именами.

Ваш отступ сломан, но кажется, что эта линия является виновником:

В первый раз j является массивом, но затем вы скрываете его с помощью int j . Трудно обнаружить, поскольку то, что вызывает ошибку, похоже, происходит после него, но поскольку оно в цикле, это не так. Попробуйте переименовать это целое число.

Поэтому я просмотрел похожие вопросы, и у меня по-прежнему возникает одна и та же проблема, и я не могу понять это. Для этого назначения программирования я создаю упрощенную версию лексического анализа для небольшого подмножества лексики Clite. Я извлекаю токены из входного файла, выводя результаты моего анализа. Я создаю таблицу символов для найденных идентификаторов с использованием словаря. Когда я нахожу те же идентификаторы на разных строках, мне нужно добавить в таблицу символов строку, в которой она была найдена. Например, я нахожу идентификатор "number18" в строке 2 и снова в строке 7. Таким образом, таблица символов должна будет идти от до

Читайте также:  Asus xonar dgx настройка наушников

Проблема возникает, когда я пытаюсь добавить новый номер строки в текущую запись словаря. Я получаю сообщение об ошибке, как я писал в заголовке вопроса. Здесь мой код пока

Вы сначала задали свои значения dict как int :

но потом вы пытаетесь обработать его, как будто это list :

Начните со list содержащим ваш первый int :

и будет работать .append() .

Кроме того, вы можете использовать defaultdict :

а затем добавьте по желанию без необходимости проверять, есть ли ключ:

В другой части выше вы добавляете integer первый раз. Поэтому, когда вы будете использовать append следующий раз, вы получите эту ошибку.

Скорее заверните целое число y в списке [y] , когда вы добавите свое значение в первый раз к своему dict

Ну, вы уже знаете из @Martijn ответ, что использование defaultdict будет лучшим вариантом здесь, так как тогда вам не нужно проверять наличие containment key .

Но, все еще относясь к тому, как вы проверяете ключ в dict:

When I run this code then following error is encountered, I am new to programming and I know I have bunch of useless arrays. I don’t know where my error is as I have declared j as an array. I am completely out of ideas.

4 Answers 4

j has been used a a list as well as an integer. Use j only for integer name, name the list to something else.

Your indentation is broken, but it seems like it’s this line that is the culprit:

The first time, j is an array, but then you hide it with the int j . It’s hard to discover since what causes the error seems to happen after it, but since it’s in a loop, that’s not really true. Try renaming this integer.

Читайте также:  Бюджетные телефоны с хорошей камерой 2018

You seem to use the variable ‘j’ as a int-counter in the loop, i.e. the list ‘j’ is replaced by an int ‘j’ where you cannot append something. Solution: Rename the variables with more sophisticated names.

Take a close look at the following piece of your code:

Notice how you first call .append on j (which you had initialized with a list earlier), then use it as a loop variable nested in the same loop.

Use better, meaningful variable names in your code to avoid this class of errors. Rename either the loop variable or the module-level list variable.

Not the answer you’re looking for? Browse other questions tagged python or ask your own question.

Related

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.1.14.35767

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock detector