PDA

Просмотр полной версии : помагите с python


gold-goblin
31.12.2008, 02:19
пользуюсь версией 2.5.2
изучаю первый час =)
подскажите что не правельного в этой конструкции?

def sloj(x, y)
s=x+y
print s
иремпритатор ругается так:
>>> def sloj(x, y) File "<stdin>", line 1 def sloj(x, y) ^ SyntaxError: invalid syntax >>> s=x+y Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'x' is not defined >>> print s

И еще посоветуйте плиз нормальный (блакнот или хз как назвать) с подцветкой синтексиса под никсы....
Харание спасибо!

Rejjin
31.12.2008, 02:41
def sloj(x, y):
...
Двоеточие...
Если что-то не получается, юзай режим интерпретатора ;-)

gold-goblin
31.12.2008, 02:44
юзай режим интерпретатора ;-)
тупой вопрос =) это как?

Добавлено:

С двоеточием такая ошибка =)
def sloj(x, y): ... s=x+y File "<stdin>", line 2 s=x+y ^ IndentationError: expected an indented block

Rejjin
31.12.2008, 02:59
Что бы использовать режим интерпретатора, нужно запустить исполняемый файл, тоесть сам интерпретатор, а не файл с расширением *.py
В этом режиме все исполняется "построчно", тоесть если у тебя ошибка в синтаксисе, то интерпретатор тебе сразу ее выявит.
В Питоне функция определяется ключевым словом def, имени функции, затем в скобках идут некие параметры, разделяемые запятой, передаваемые в функцию из программы. К этим параметрам можно обращаться внутри функции по их именам. Впрочем, функция может не принимать никаких параметров, тогда в скобках не нужно ничего писать.
Пример:
>>> def fib(n): # Функция, выводящая на экран числа Фибоначчи, не превосходя щие n...
"""Числа Фибоначчи"""
... a, b = 0, 1
... while b < n:
... print b,
... a, b = b, a+b
...

>>> # Теперь функцию можно вызвать
... fib(2000)

У тебя будет так:
def sloj(x, y):
s = x+y
print s

Chaak
31.12.2008, 03:03
Про отступы не забывай

gold-goblin
31.12.2008, 03:27
хм. я и так в режиме иренпритатора кодю пока =)
спасибо за подсксказку =)

gold-goblin
31.12.2008, 15:11
хм либо я тупой либо иремпритатор лагучий....
пишу

def sloj(x, y):
s = x+y
print s
Он ругается на 2 строчку (s = x+y)
А если просто записать 2 строку то все нормально....
В чем проблема?

login999
31.12.2008, 15:33
бля, тебе ж написали -не забывай про отступы, должно быть так:

def sloj(x, y):
ПРОБЕЛs = x+y
ПРОБЕЛprint s

gold-goblin
31.12.2008, 15:35
Пробелы есть!!!!!!
я не слепой

gold-goblin
31.12.2008, 15:46
проблема решилась. переставил питон с нуля и все заработало.

gold-goblin
31.12.2008, 16:23
Подскажите, гденибуть в интернете можно найти кагбы маленькие задачки для закрепления пройденого материала =)?
Просто сейчас уже прочитал 63 страницы книги Yazik_programmirovaniya_python
И решил закрепить материал, а в голову ничего не лезет =(
Да всех с последим днем 2008 года!!!

KaZ@NoVa
31.12.2008, 17:19
Подскажите, гденибуть в интернете можно найти кагбы маленькие задачки для закрепления пройденого материала =)?
Просто сейчас уже прочитал 63 страницы книги Yazik_programmirovaniya_python
И решил закрепить материал, а в голову ничего не лезет =(
Да всех с последим днем 2008 года!!!

http://forum.academ.org/uploads/monthly_10_2007/post-4774030-1193818734.jpg

Chaak
31.12.2008, 18:51
На, вот хорошая книжка в отличном качестве. Полный питон + всякие задания в конце глав.
http://webfile.ru/2523676

gold-goblin
31.12.2008, 19:31
ChaaK
Спасибо! Книга супер!!!

gold-goblin
01.01.2009, 22:29
тут поевился еще вопрос.
Значит написал я сегодня за 5 минут первую свою программу:
def fil():
print 'sozdat fail?'
print '1 - da'
print '2 - net'
x = int(raw_input(":"))
if x == 2:
print 'a nax togda zapskal mena?'
elif x == 1:
file=open(test.txt, r)
print 'sdelat zapis v fail?'
print '1 - da'
print '2 - net'
zas = int(raw_input(":"))
if zas == 2:
print 'spasibo za sozdanie faila=)'
elif zas == 1:
print 'fto zapishem v fail?'
text = raw_input(":")
file.write(text)
print 'yraaa ja zakonchila svoy radoty, prover fail'


Прога спокойно принемается иремпритатором, но при попытке выполнить эту функцию выписывает ошибку <function fil at 0x819d844>
Где я напортачил?

t00th
01.01.2009, 22:38
тут поевился еще вопрос.
Значит написал я сегодня за 5 минут первую свою программу:


Прога спокойно принемается иремпритатором, но при попытке выполнить эту функцию выписывает ошибку Где я напортачил?

Пиши с отступами, ничерта не понятно.
Ошибку которую увидел, открываешь файл для чтения, а сам пытаешься что-то записать.
file=open(test.txt, w)

add: По книжкам, почитай Programming Python Mark Lutz.Второе издание в сети найти легко, третье на русском вряд ли найдешь, если с английским хорошо то лучше его ищи.Там темы с примерами, что потом не было таких кошмарных "способов закрепить" :)

gold-goblin
01.01.2009, 22:48
пишу с табуляцией в роле оцтупа и из -за этого возможно их не видно в цитате...
def fil():
print 'sozdat fail?'
print '1 - da'
print '2 - net'
x = int(raw_input(":"))
if x == 2:
print 'a nax togda zapskal mena?'
elif x == 1:
file=open(test.txt, r)
print 'sdelat zapis v fail?'
print '1 - da'
print '2 - net'
zas = int(raw_input(":"))
if zas == 2:
print 'spasibo za sozdanie faila=)'
elif zas == 1:
print 'fto zapishem v fail?'
text = raw_input(":")
file.write(text)
print 'yraaa ja zakonchila svoy radoty, prover fail'

вот весь код с оцтупами =)

В книге написано что есть режим работы r+ но у меня выскакивает ошибка синтаксиса... Спасибо что сказал про режим работы с файлом =) сейчас поменяю

gold-goblin
01.01.2009, 23:04
тагже менял режимы на w и wb проблемма 1 и таже

t00th
01.01.2009, 23:14
тагже менял режимы на w и wb проблемма 1 и таже
file=open('/home/user/log.txt', 'w')
Кавычки забыл, все работает

gold-goblin
01.01.2009, 23:27
неа, ошибка всеравно есть =(

t00th
01.01.2009, 23:33
неа, ошибка всеравно есть =(
Пиши какая ошибка, твой код копипастнул, все работает

gold-goblin
02.01.2009, 00:05
уже писал.....
<function fil at 0x819d844>

De-visible
02.01.2009, 01:23
Велкам ту осику, и объясни проблему там

gold-goblin
02.01.2009, 01:26
De-visible
Спасибо но проблема решилась =)
Но думаю скоро будут новые =)

gold-goblin
03.01.2009, 02:10
Тут еще 1 ошибочка назрела....
Подскажите, пытаюсь поставить сокет на прослушку таким образом


import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
result = sock.recv(1024)

Ошибка выскакивает тута:


result = sock.recv(1024)


а вот и ошибка

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
socket.error: (22, 'Invalid argument')