Найти - Пользователи
Полная версия: Что значит эта ошибка:
Начало » Python для новичков » Что значит эта ошибка:
1 2
DOSfag
TypeError: object of type ‘int’ has no len()
hedint
Значит именно то, что написано.
Нельзя применить функцию len к числу.
у вас там есть такой код -
in_expr0=0 #1
input(in_expr0) #2
out_expr0=convert_ItP(in_expr0) #3
в первой строке вы присваиваете in_expr0,
во второй осуществляете ввод, но не понятно куда.
функция input принимает в качестве аргумента не переменную, куда будет осуществляться ввод, а “приглашение к вводу” - строку, которая будет напечатана на экране перед запросом на ввод. А возвращает то, что ввел пользователь.
следовательно, вторая строка у вас ничего не делает, а в функцию convert_ItP передается 0, который вы задали в первой строке. Внутри функции к этому нулю применяется функция len и возникает ваша ошибка.

замените вторую строку на что-то подобное:
in_expr0 = raw_input("Write expression")

Дальше вываливается ошибка с выходом за границы списка, но тут уж решайте дальше сами)
DOSfag
hedint, аргумент функции convert_ItP(выражение) - строка, но результат - список (т.к. элементы строк не изменяемые, да и со списком удобнее работать при вычислении выражения, т.к. список может содержать произвольные данные, а строка - только символы). Так что я баг пофиксил, лишние строки удалил.

Спасибо за подсказку Просто я до изучения языка python писал прграммы на паскале, и вот привык, что функция input передаёт значение переменной, а не выводит приглашение на ввод. Теперь буду знать.

Однако ошибка с переполнением стёка (списка) возникают

File “C:\Python32\Мои программы\Калькулятор.py”, line 83, in <module>
in_expr0_a=convert_ItP(in_expr0)
File “C:\Python32\Мои программы\Калькулятор.py”, line 37, in convert_ItP
while priorite(stack)<=priorite(stack):
IndexError: list index out of range

DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.
DOSfag
Traceback (most recent call last):
File “C:\Python32\Мои программы\Калькулятор.py”, line 85, in <module>
out_expr0=calculate(in_expr0_a)
File “C:\Python32\Мои программы\Калькулятор.py”, line 61, in calculate
while len(converted_expresssion)>1:
NameError: global name ‘converted_expresssion’ is not defined

Но ведь переменная converted_expression является параметром функции, а питон говорит, что эта переменная не определена…

Эх… Опять я что-то туплю сегодня! такие элементарные ошибки…
DOSfag
Баг с переполнением стёка пофиксил
fata1ex
DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.
Надо запомнить.
FishHook
DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.
Зато в Бэйсике этого недостатка нет!
А ещё, а ещё….
А не, в остальных везде тот же недостаток.
JOHN_16
DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля
Надеюсь это была жесткая шутка.
FishHook
А не, в остальных везде тот же недостаток.
Еще матлаб в какой то мере можно приписать, хоть и не полноценный ЯП, но близко.
Ed
В lua вроде бы тоже.

PS: Оказалось немало, но в основном старье типа старого Fortranа, SmallTalkа, старых Basicов, Cobolа, Algol, Eiffelа и т.д.
Многие языки баз данных типа PL/SQL, FoxPro, Dbase, PostgreSQL и т.д.
В паскалях, модулах, обероне, аде по-моему можно задавать индексы.
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