Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 3, 2012 14:23:28

DOSfag
Зарегистрирован: 2012-06-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

TypeError: object of type ‘int’ has no len()

Прикреплённый файлы:
attachment Калькулятор.py (5,4 KБ)

Офлайн

#2 Июнь 3, 2012 14:57:05

hedint
Зарегистрирован: 2012-05-16
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

Значит именно то, что написано.
Нельзя применить функцию 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")

Дальше вываливается ошибка с выходом за границы списка, но тут уж решайте дальше сами)

Офлайн

#3 Июнь 3, 2012 16:32:11

DOSfag
Зарегистрирован: 2012-06-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

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 (Июнь 3, 2012 16:33:06)

Прикреплённый файлы:
attachment Калькулятор.py (5,4 KБ)

Офлайн

#4 Июнь 3, 2012 16:36:36

DOSfag
Зарегистрирован: 2012-06-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.

Офлайн

#5 Июнь 3, 2012 17:01:50

DOSfag
Зарегистрирован: 2012-06-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

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 (Июнь 3, 2012 17:04:14)

Офлайн

#6 Июнь 3, 2012 17:03:01

DOSfag
Зарегистрирован: 2012-06-03
Сообщения: 25
Репутация: +  0  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

Баг с переполнением стёка пофиксил

Офлайн

#7 Июнь 3, 2012 20:30:49

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.
Надо запомнить.



Офлайн

#8 Июнь 4, 2012 05:40:03

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

Что значит эта ошибка:

DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля, и возникают проблемы с переполнением.
Зато в Бэйсике этого недостатка нет!
А ещё, а ещё….
А не, в остальных везде тот же недостаток.



Офлайн

#9 Июнь 4, 2012 07:01:13

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

DOSfag
Вот в чём и недостаток питона… В том, что индекс идёт с нуля
Надеюсь это была жесткая шутка.
FishHook
А не, в остальных везде тот же недостаток.
Еще матлаб в какой то мере можно приписать, хоть и не полноценный ЯП, но близко.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Июнь 4, 2012 10:54:10

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Что значит эта ошибка:

В lua вроде бы тоже.

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



Отредактировано Ed (Июнь 4, 2012 11:39:15)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version