Python - Пајтон

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Python

Python (се чита Пајтон) претставува динамички програмски јазик развиен од Guido van Rossum во раните 90ти години. Јазикот денес се применува насекаде за скрипти, па се до апликации за извршување поголеми операции. Неговата едноставност лежи во тоа што јазикот е динамички, програмерот не е толку ограничен во пишувањето на кодот и не мора да се држи до строги правила како што е случај со другите статички испишани програмски јазици. Пример, за да се користи променлива во програмските јазици C/C++ потребно е да се наведе од кој тип е таа променлива. Во Python динамичноста дозволува интерпретерот да открие каква вредност се крие зад таа променлива. Повеќе околу ова може да прочитате овде. Покрај тие поедноставувања Python има уште редица други кои на програмерот му овозможуваат побрзо работење и завршување на некои задачи и заштеда на време.

Извадок од Python - Wiki за слободен софтвер на македонски.

- - - - - - - - -

Официјална страна на Python.
Download Python.

- - - - - - - - -


Како се извршува Python програма (Пример со "Hello World" ) ?

Значи најпрвин го стартуваме Python Shell-от, потоа отвараме нов прозор (File > New Window) каде што ќе го пишуваме кодот и потоа во работната површина на тој прозор ќе го запишеме кодот, во случајов кодот за Hello World изгледа вака:

Код:
def HelloWorld():
      print: 'Hello Pyhon World!';
Објаснување за кодот:
Во првиот ред го дефинираме името на програмата (со тоа име ќе ја повикаме програмата во Python Shell-от).
Во вториот ред и даваме наредба на програмата на екран да ни испише "Hello Python World!" (без наводниците).

Потоа, за да ја извршиме програмата одбираме Run > Run Module или пак притискаме на F5.

Следно, пред да ни се отвори Python Shell-от треба да го зачуваме проектот (зачувајте го било каде) и во работна површина на Python Shell-от ќе го повикаме претходно напишаниот програм... Значи ќе внесеме:

Код:
HelloWorld()
...и на екран треба да ни биде испишано Hello Python World!

И да се извинам за користењето на „нестручни“ изрази, сеуште сум почетник во Python, ама мислам дека тоа не менува многу.

Еве и неколку основни примери за тоа како изгледа Python кодот:

if и else:
Код:
def parNepar():
    broj = input('Vnesete eden broj: ');
    if broj%2 == 0:
        print 'Brojot e paren!';
    else:
        print 'Brojot ne e paren!';
Ако:
Влез = 44.
Излез = Бројот е парен.

Влез = 53.
Излез = Бројот е непарен.


for циклус:
Код:
def forCiklus():
    br = input('Vnesete nekoj broj od 0 do 100: ');
    i = 1;
    for i in range(i, br):
        print i;
    else:
        print 'For ciklusot e zavrshen.';
Ако:
Влез = 6.
Излез =
1
2
3
4
5
6
For ciklusot e zavrshen.

- - - - - - - - - - -

Па... кој што има да додаде нешто повеќе за Puthon, да праша нешто или било што... нека повели :)
 

ElektriX

Велешанче :)
Член од
30 март 2007
Мислења
127
Поени од реакции
3
Еве програма во Пајтон што одредува најголем број од 3 внесени броја:
Код:
no1=int(input('Enter the first number: '))
no2=int(input('Enter the second number: '))
 no3=int(input('Enter the third number: '))
 if no1>no2:
         if no1>no3:
             print('The biggest number is {0}'.format(no1))
       else:
            print('The biggest number is {0}'.format(no3))
else:
   if no2>no3:
        print('The biggest number is {0}'.format(no2))
   else:
         print('The biggest number is {0}'.format(no3))
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Која е разликата помеѓу python и php?
Ако би навлегле во детали има многу разлики, ама еве една мини споредба со која би ги опфатиле основните факти за „Python vs PHP“

- Заеднички основа на Python и PHP:

И двата програмски јазици се од високо ниво со динамичко пишување, OpenSource, поддржани од големи развојни инвестиции, лесни за процесорање во C, C++, Java, мултиплатформиски...


- Споредба на јазиците:

Карактеристики за PHP се синтаксата на C и Perl и многуте загради, значи и „доларчиња“, изразите switch и do while, зголемувањето и намалувањето во loop циклусите, референците, типот на методите (јавни, приватни, заштитени)...

Карактеристики на Python се тоа што тој е општонаменски, значи не е само за веб програмирање, едноставната синтакса, нема означување на Python кодот во комбинација со HTML (Како што е тоа со PHP во изразот: <?PHP ... ?>), Python се базира на креирање модули, аргументите во функциите, класите во стандардната библиотека, SWIG интеграција, голем спектар на типови на податоци, стандардно API за базите на податоци, GUI фрејмворк поддржка (Gtk и Qt)...

- - - - -
Е сеа ова е само еден миниатурен дел од целата споредба на Python vs PHP. Има уште еден тон муабет да се прави на ова тема... Како и да е, голем дел од фактите укажуваат дека Python е помоќен за разлика од PHP (ако не се лажам мислам дека Python е најкористениот програмски јазик во Google Inc).
- - - - -

Уз пат, еве и неколку Python примери:

- Python и HTML (рутини на печатење на HTML формите)
Код:
def par():
  " Start a new HTML paragraph"
  print "<p>"
  
def header (title):
  " Print the header block for a cgi-generated web page"
  print "Content-type: text/html"
  print 
  print '<HTML>'
  print '<META NAME=AUTHOR CONTENT="Boudewijn Rempt">'
  print '<META NAME=GENERATOR CONTENT="npc">'
  print '<TITLE>'
  print title
  print '</TITLE>'
  
def image (image):
  print "<p align=center>"
  print "<img src='" + image + "' align=center>"
  print "<p align=left>"

def body():
  " print a standard sequence for the opening of a body"
  print '<BODY TEXT="#000000" BGCOLOR="#FFEBCD" LINK="#2E8B57" VLINK="#008B8B" ALINK="#DC143C">'
  
def coda_body():
  " close the body "
  print "<hr>"
  par()
  print "Optimized for Lynx"
  print "<em>© Copyright 1999 Boudewijn Rempt.</em>"
  print "</body>"
  print "</html>"

def form (action):
  print '<form action="' + str(action) + '" method="post">'
  
def coda_form():
  print '</form>'
  
def hidden (id, value):
  print
  print "<input type='hidden', name='" + str(id) + "' value='" + str(value) + "'>"
  
def textbox (id, lable, text, size):
  if size > 10:
    print "<p>", lable, '<input type="text", size=' + str(size) + ' value="' + str(text) + '" name="' + str(id) + '">', '</p>'

def chkbox (id, lable, value):
  print lable
  print '<input type=checkbox name=' + str(id) + ' value=' + str(value)
  if value == 'J' or value == 'Y' or value == 'j' or value == 'y':
     print ' checked'
  print '>' 
  
def radio (id, lable, tbl, default):
  par
  print lable
  for row in tbl:
    par()
    if str(row[0]) == str(default):
      print '<input type=radio checked name="' + str(id) + '" value="' + str(row[0]) + '">' + str(row[1])
    else:
      print '<input type=radio name="' + str(id) + '" value="' + str(row[0]) + '">' + str(row[1])
  
def combobox (id, lable, tbl, rows, default):
  print lable
  print "<select name=" + str(id) + " size = " + str(rows) + ">"
  for row in tbl:
    if str(row[0])==str(default):
      print "<option selected value=" + str(row[0]) + ">" + str(row[1])
    else:
      print "<option value=" + str(row[0]) + ">" + str(row[1] )
  print "</select>"
        
def button (id, lable):
  print '<input type="submit" value="' + str(lable) + '" name="' + str(id) + '">'
  
def head (level, title):
  print "<h" + str(level) + " align=center>" + str(title) + "</h" + str(level) + ">"
  
def textarea (id, lable, text, rows, cols):
  par;
  print lable
  print '<textarea name="' + str(id) + '" rows=' + str(rows),' cols=' +  str(cols) + '>' + str(text) + '</textarea>'
  print "</p>"
  
  
def txt (text):
  par
  print text

def test():
  header ("dinges")
  body ()
  head (1,'Eerste niveau')
  form ('test')
  par
  radio('test','testlbl',((1,'a'),(2,'b')),2)
  par
  combobox ('cmb','cmblbl',((1,'eerste optie'),(2,'tweede optie')), 0, 2)
  coda_form()
  coda_body()
- Python и MySQL
Код:
import MySQL

class Connection:

  def __init__(self, hostname, username, databasename):
    self.dbConnection = MySQL.connect(hostname,username, '')
    self.dbConnection.selectdb(databasename)

  def do (self, strSQL):
    return self.dbConnection.do(strSQL)

  def qry (self, strSQL):
    return self.dbConnection.do(strSQL)

  def disconnect (self):
    self.dbConnection.close
    
  def ins (self, strSQL):
    self.dbConnection.do(strSQL)
   
  def upd (self, strSQL):
    self.dbConnection.do(strSQL)

  def escape(self, str):
    return MySQL.escape(str)
- Повикување на претходно креираните модули и операции со нив
Код:
import db
import html
import cgi

def strInsert(lstFields):

  strIns = ""
  for field in lstFields:
    strIns = strIns  + field + ","
  strIns = "(" + strIns[:-1] + ") values "
  strInsVal = ""
  
  for field in lstFields:
    if cgiData.has_key(field):
      strInsVal = strInsVal  + "'" + cgiData[field ].value + "',"
    else:
      strInsVal = strInsVal + "'',"
      
  strInsVal = "(" + strInsVal[:-1] + ")"
  return strIns + strInsVal
    
def doInsert():
  strSQL = strInsert(('valdyan'
  ,'label','glosse','comment'))
  if strSQL == "() values ()":
    pass
  else:
    dbc.ins("insert into lex_valdyan " + strSQL)
  
def strUpdate(lstFields):
  strUpd = ""
  for field in lstFields:
    if cgiData.has_key(field):
      strUpd = strUpd  + " "  + field + " = '" + cgiData[field].value + "',"
  strUpd = strUpd[:-1]
  return strUpd
  
def doUpdate():
  if cgiData.has_key("lexnr"):
    strSQL = " update lex_valdyan set " + strUpdate(('valdyan'
    ,'label','glosse','comment')
    ) + " where lexnr = " + str(cgiData['lexnr'].value)
    dbc.upd(strSQL)
    
def doDelete():
  if cgiData.has_key("lexnr"):
    strSQL = " delete from lex_valdyan where lexnr = " + str(cgiData['lexnr'].value)
    dbc.upd(strSQL)

def doNew():
  html.form('lex_valdyan.py')
  html.textbox('valdyan','valdyan','',70)
  html.textbox('label','label','',70)
  html.textbox('glosse','glosse','',70)
  html.textarea('comment','comment','',10,70)
  html.par()
  html.button('action','insert')
  html.button('action','search')
  html.button('action','new')  
  html.button('action','index')
  html.coda_form()
  
def doQueryDelete():
  html.form('lex_valdyan.py')
  if cgiData.has_key("lexnr"):
    strSQL = " select lexnr, valdyan, label, glosse, comment from lex_valdyan where lexnr = " + str(cgiData['lexnr'].value)
    rs = dbc.qry (strSQL)
    row = rs[0]
    html.hidden("lexnr",cgiData['lexnr'].value)
    html.txt("Do you really want to delete " + row[1] + "?")
    html.par()
    html.button('action','Rather not')
    html.button('action','Really delete')
  else:
    doNew()
  html.coda_form()

def doEdit():
  if cgiData.has_key("lexnr"):
    strSQL = " select lexnr, valdyan, label, glosse, comment from lex_valdyan where lexnr = " + str(cgiData['lexnr'].value)
    rs = dbc.qry (strSQL)
    row = rs[0]
    html.form('lex_valdyan.py')
    html.hidden('lexnr',row[0])
    html.textbox('valdyan','valdyan',row[1],70)
    html.textbox('label','label',row[2],70)
    html.textbox('glosse','glosse',row[3],70)
    if row[4] is None:
      html.textarea('comment','comment',"",10,70)
    else:
      html.textarea('comment','comment',row[4],10,70)
    html.par()
    html.button('action','update')
    html.button('action','search')
    html.button('action','new')
    html.button('action','index')
    html.coda_form()
  else:
    doNew()


def doIndex(strSQL):
  print('<hr>')
  html.form("lex_valdyan.py")

  html.button("action","new")
  html.button("action","edit")
  html.button("action","delete")
  html.par()
  rs = dbc.qry(strSQL + " order by valdyan ")
  html.radio ('lexnr','Entry',rs,'')
  html.par()
  html.coda_form()
    
  
def doSearch():
  strSQL = " select lexnr, concat( lexnr,', ', valdyan,', ',label,', ', glosse) from lex_valdyan where "
  if cgiData.has_key("valdyan"):
    strSQL = strSQL + " valdyan like '"
    strSQL = strSQL + cgiData["valdyan"].value + "'"
  else:
    strSQL = strSQL + " valdyan like '%' "
  if cgiData.has_key("label"):
    strSQL = strSQL + " and label like '"
    strSQL = strSQL + cgiData["label"].value + "'"
  
  if cgiData.has_key("glosse"):
    strSQL = strSQL + " and glosse like '"  
    strSQL = strSQL + cgiData["glosse"].value + "'"
  
  if cgiData.has_key("comment"):
    strSQL = strSQL + " and comment like '"
    strSQL = strSQL + cgiData["comment"].value + "'"
    
  doIndex(strSQL)
    
def doActions():
  if cgiData.has_key("action"):
    if cgiData["action"].value == 'insert':
      doInsert()
      doNew()
    elif cgiData["action"].value == 'update':
      doUpdate()
      doEdit()
    elif cgiData["action"].value == 'delete':
      doQueryDelete()
    elif cgiData["action"].value == 'search':
      doSearch()    
    elif cgiData["action"].value == 'edit':
      doEdit()
    elif cgiData["action"].value == 'new':
      doNew()
    elif cgiData["action"].value == 'Really delete':
      doDelete()
      doNew()
    else:
      doIndex(" select lexnr, concat(lexnr, ', ', valdyan,', ',label,', ', glosse) from lex_valdyan")
  else:
    doNew()
    

#
# main
#

dbc = db.Connection('essle','irina','valdyas')
cgiData = cgi.FieldStorage()

html.header('Valdyan Dictionary')
html.body()
html.head('1','Valdyan Dictionary')
doActions()
html.coda_body()
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Епа ете горниот пример е онлајн речник кој се состои од MySQL и CGI скрипта за обработка на податоците во базата (впишување, читање, бришење, и едитирање) која генерира статички HTML за поголема прегледност. Апликацијата се состои од html.py (каде што е креиран HTML делот), db.py (каде што е креирана конекцијата со MySQL базата на податоци) и lex_valdyan.py (главниот дел за извршување на операциите и соодветно сетирање на HTML-от каде што се импортирани претходно креираните модули).

Незнам дали кодот ти е јасен и дали можеш да го разбереш, ама објаснувањето би било тоа :)
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Експериментирав нешто и направив еден едноставен систем за енкриптација и декриптација па реков да го пишам и тука :)

Код:
import random

def sKeys():
    chKeys = "qwertyuiopasdfghjklzxcvbnm!@#$%^&-+?><QWERTYUIOPASDFGHJKLZXCVBNM!!@#$%^&-+?><";
    return chKeys[random.randrange(1, len(chKeys))];

def encrypt(password):
   retStr = "";
   i = 0;
   j = 0;
   while (i < len(password)):
        if j%3 != 0:
           retStr += sKeys();
        else:
            retStr += password[i];
            i+=1;
        j+=1;
   return retStr

def decrypt(password):
    retStr = "";
    for i in range(0, len(password)):
        if i%3==0:
            retStr += password[i];
    return retStr;
Еве ги и резултатите:

>>>
>>> testlozinka = encrypt("mojata lozinka")
>>> print 'Lozinkata enkriptirana e: ' + testlozinka
Lozinkata enkriptirana e: mdAob$jDrarKtXAaAM Vzl#Sof<zTNi++nmPkjpa
>>> print 'Lozinkata dekriptirana e: ' + decrypt(testlozinka)
Lozinkata dekriptirana e: mojata lozinka
>>>
Иако не е којзнае каков системов, сепак боље ишта него ништа. :)
 

Jane

Кајганџија
Член од
5 февруари 2006
Мислења
3.394
Поени од реакции
114
Која верзија ја користите? На линкот за даунлоад гледам има 2.6.4 и 3.1.1, а постарата верзија е над поновата :raz: Дека е бета нигде не е спомнато...
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Која верзија ја користите? На линкот за даунлоад гледам има 2.6.4 и 3.1.1, а постарата верзија е над поновата :raz: Дека е бета нигде не е спомнато...
Јас уште пичам на 2.6 верзијата. Незнам точно пред колку време е излезена 3.1 верзија, али сите документации за 3.1 верзијата се објавени на 5ти Декември...

- Download Python 3.1.1 Documentation
- What’s New In Python 3.1

Него мене ме интересира една работа ако некој знае... Знчи на линуксов имам домашен Apache2 сервер ги инсталирав сите модули за Python (и mod_python 3.3.1), го конфигурирав серверот да чита и .py и .cgi фајлови е сега ме интересира како да го конфигурирам серверот index фајловите да ги чита без екстенцијата и при евентуалните ерори на прелистувачот да ми го пише еророт наместо фајлот за конфигурација ?
Треба да инсталирам некој дебагер, да конфигурирам нешто... или... ?
 

SkyDriver

Would like my bananna ?
Член од
31 јули 2008
Мислења
2.140
Поени од реакции
221
Да се самоцитирам можда на некој ќе му се најде...

Него мене ме интересира една работа ако некој знае... Знчи на линуксов имам домашен Apache2 сервер ги инсталирав сите модули за Python (и mod_python 3.3.1), го конфигурирав серверот да чита и .py и .cgi фајлови е сега ме интересира како да го конфигурирам серверот index фајловите да ги чита без екстенцијата
Во httpd.conf

Код:
# HTML, PHP, Perl, Python
DirectoryIndex index.html index.htm default.htm index.php index.pl index.py
...и при евентуалните ерори на прелистувачот да ми го пише еророт наместо фајлот за конфигурација ?
Треба да инсталирам некој дебагер, да конфигурирам нешто... или... ?
Код:
try:
# Кодот
Excepd: # По избор Except <аргумент>:
# Еророт
Уз пут и неколку единсотавни програми што ги имам решавано:

Код:
'''
Да се пресмета аритметичката средина на броевите од 1 до n
'''
def arSred():
    n = 4
    z = 0.0
    for i in xrange(1, n+1):
        z += i
    print z/n
Код:
'''
Да се пресмета збирот на броевите деливи со 3 од 1 до n. (3, 6, 9, ...)
'''
def zbirDelivi():
    n = 60
    z = 0
    for i in xrange(n+1):
        if i%3 == 0:
            z += i
    print z
Код:
'''
Да се пресмета збирот на броевите од 1 до n.
'''
def zbirn():
    n = 60
    z = 0
    for i in xrange(n+1):
        z += i
    print z
Код:
'''
Да се најде збирот и производот на елементите на низата броеви [a].
Пример: 
За [a]={1, 9, 4, 5, 2, 9} треба да се испечати
Zbirot e 30, a proizvodot e 3240. 
'''
def zbirProizvod():
    a = [1, 9, 4, 5, 2, 9]
    z = 0
    p = 1
    for i in xrange(len(a)):
        z += a[i]
        p *= a[i]
    print 'Zbirot = ' + str(z) + ' proizvod = ' + str(p)
Код:
'''
Да се испечатат само парните броеви од целобројната низа [a]. 
Пример: 
За [a]={1, 9, 4, 5, 11, 7, 8, 10, 6, 3, 2, 9, 7} треба да се испечати
4 8 10 6 2 
'''
def parni():
    a = [1, 9, 4, 5, 11, 7, 8, 10, 6, 3, 2, 9, 7]
    for i in xrange(len(a)):
        if a[i]%2 == 0:
            print a[i]
Код:
'''
Од тастатура се внесуваат два цели броја c и d, и низа [a] од цели броеви.
Да се испечатат елементите на низата [a] почнувајќи од c-тиот до d-тиот. 
Пример: 
За [ai]n={1, 9, 4, 5, 11, 7, 8, 10, 6, 3, 2, 9, 7} и c=3, d=8, треба да се испечати 4 5 11 7 8 10 
'''
def pecati():
    c = 3
    d = 8
    a = [1, 9, 4, 5, 11, 7, 8, 10, 6, 3, 2, 9, 7]
    for i in xrange(c-1, d):
        print a[i]
Код:
'''
Да се изврши циклично поместување на елементите на низата
броеви [a] за k-места на десно или лево (k се внесува од тастатура). 
Пример: 
За [a]={1, 9, 4, 5, 2, 7} и k=2, треба да се добие низата  
{2, 7, 1, 9, 4, 5} или {4, 5, 2, 7, 1, 9}. 
'''
# m = за колку места да се пометат елементите
def pomesti(m, ar):
    n = m
    l = len(ar)
    ar2 = []*ll
    for m in xrange(l):
        if n == l:
            n = 0
        ar2.append(ar[n])
        n += 1
    return ar2

def niziP():
    niza = [1, 9, 4, 5, 11, 7, 8, 10, 6, 3, 2, 9, 7]
    print pomesti(1, niza)
Код:
'''
Проверка на домен и SSH сервер (локално):
'''
import socket
import os

def checkSSH():
    if checkServer():
        print "Server is down"
    else:
        print "I find ssh!"

def checkServer():
        serverSocket = socket.socket()
        serverSocket.settimeout(0.25)
        try:
            serverSocket.connect((socket.gethostbyname(socket.gethostname()),22))
        except socket.error:
            return 1

def checkDomain(domain):
    try:
        socket.gethostbyname(domain)
		print 'The entered domain is available!'
    except:
        print 'The entered domain is not available'
Еве ви и еден чат во Python :)

П.С. Тестиран е само на линукс оперативен систем, ама мислам дека би работел и на Windows.

Серверот:
Код:
from socket import *

host = "localhost"
port = 21567
buf = 1024
addr = (host,port)

UDPSock = socket(AF_INET,SOCK_DGRAM)
UDPSock.bind(addr)

while 1:
	data,addr = UDPSock.recvfrom(buf)
	if not data:
		print "Client has exited!"
		break
	else:
		print "\nReceived message '", data,"'"

UDPSock.close()
Клиентот:
Код:
from socket import *

host = "localhost"
port = 21567
buf = 1024
addr = (host,port)

UDPSock = socket(AF_INET,SOCK_DGRAM)

def_msg = "===Enter message to send to server===";
print "\n",def_msg

while (1):
	data = raw_input('>> ')
	if not data:
		break
	else:
		if(UDPSock.sendto(data,addr)):
			print "Sending message '",data,"'....."

UDPSock.close()
Еве и скриншот како изгледа сето тоа. :)
П.С. Хостот можете да го менувате во зависност од тоа каде се наоѓа серверот.
 
H

^HITMAN^

Гостин
Чатот баш сега го испробав и на Windows Vista не ми работи. Пробај и со compatibility мод на работа на .exe фалјот кој го експортира и пак не сака.:toe:
 
На врв Bottom