Отправляет email-рассылки с помощью сервиса Sendsay

[TC] Еще один вопрос по Python

Доброго времени суток, друзья.
Большое спасибо Анатолию за предыдущий ответ по питону, действительно проблема
была связана с использованием зарезервированного слова языка и была мной приодолена
посредством переименования переменной.
(вот что значит писать письма в рассылку с конторского компа. руки просто сами
тянутся завернуть вот этаким оборотом).
Ну ладно.
Возник у меня еще один вопрос.
Пишу я это функцию, возвращающую размер государственной пошлины в зависимости
от цены иска, которая передается функции в качестве параметра.
В теле функции есть переменная res, которой присваивается значение в блоке if_elif_else.
В конце функции я пишу:
return res
на что интерпретатор мне говорит что-то типа:
sintax error

return outside function

Что, собственно говоря, ему надо?

Эдуард Воробьев
г. Ленинск-Кузнецкий
winks***@r*****.ru

Ответить   Wed, 30 Sep 2009 19:52:46 +0400 (#912203)

 

Ответы:

Приветствую всех.
Эдуард пишет:

Вероятнее всего, вы ошиблись с отступами, поэтому интерпретатор воспринимает
ваш return, как находящийся за пределами тела функции.

Успехов. Анатолий.

Ответить   "i_chay" Wed, 30 Sep 2009 18:51:04 +0500 (#912436)

 

Доброго времени суток, Эдуард.

Из сообщения от 30.09.2009 14:54:

Ему надо, чтобы Вы соблюдали отступы,
которыми в Python определяется блочная структура.
В результате несоблюдения этого правила Вы поместили
return res вне тела функции.

Можно, например:

def myfunc (a):
return a+1

print myfunc(1)

С уважением, Руслан Усачев

Ответить   Wed, 30 Sep 2009 16:33:05 +0300 (#912438)

 

Извините, господа, а нельзя ли чуть по-подробнее? Сколько должно быть
пробелов или знаков табуляции? Если можно словами, ибо почтовые программы не
всегда передают текст именно в том виде, на который адресант расчитывает.

Функция выглядит так:

def poshlina(cena):

res=1

if cena<=5000:

res=200

elif cena<=10000:

res=cena/25

elif cena<50000:

res=(cena-10000)/100*3+400

elif cena<100000:

res=(cena-50000)/100*2+1600

elif cena<500000:

res=(cena-100000)/100+2600

elif cena<768:

res=(cena-500000)/20+6600

else:

res=20000

return res

Эдуард Воробьев

г. Ленинск-Кузнецкий

winks***@r*****.ru

Ответить   Wed, 30 Sep 2009 23:31:08 +0400 (#912541)

 

Доброго времени суток, Эдуард.

Из сообщения от 30.09.2009 18:43:

Давайте условимся, что цифра в начале строки Вашего кода
указывает уровень структурной вложенности.

0 def poshlina(cena):
1 res=1
1 if cena<=5000:
2 res=200
1 elif cena<=10000:
2 res=cena/25
1 elif cena<50000:
2 res=(cena-10000)/100*3+400
1 elif cena<100000:
2 res=(cena-50000)/100*2+1600
1 elif cena<500000:
2 res=(cena-100000)/100+2600
1 elif cena<768:
2 res=(cena-500000)/20+6600
1 else:
2 res=20000
1 return res

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

С уважением, Руслан Усачев

Ответить   Wed, 30 Sep 2009 19:10:15 +0300 (#912762)