Keresés

Hirdetés

Új hozzászólás Aktív témák

  • Lacces

    őstag

    Sziasztok!

    Valaki ért a Komodo Edithez? Hogyan lehet elérni, hogy futtassa a python kódot?

  • Lacces

    őstag

    Sziasztok

    slicing eljárás, vagy szeletelés a listánál

    úgy működik. Pl.: lista[2:6]
    hogy a lista elemei közül a 2. 3. 4. 5. indexű elemet vágja ki?

    A következő példát nem értem, hogy miért van ott a 3-as?
    >>> szavak[1:3] = ['saláta']
    >>> szavak
    ['sonka', 'saláta', 'ketchup']

    Miért nem csak simán szavak[1]=['saláta'] van ott?

    :R

  • Lacces

    őstag

    válasz ArchElf #69 üzenetére

    Köszönöm szépen!

    Ez nagyon jó válasz! Nagyon jó a példád! Köszönöm!

    Így már megértettem! :R

  • Lacces

    őstag

    Ismét egy kérdésem van:

    Van ez a jó tulajdonsága Pythonnak, hogy objektumokból alkotott objektumot lehet létrehozni. Ami nekem nagyon tetszik. És őszintén szólva nagyon király programozási nyelvnek tartom a Python-t és viccen kívül most kezdem megérteni a .Net és Java-t is nagyjából. Kiváló tanuló nyelv, nekem legalább is.

    Viszont azt kérdezném, hogy ez a lehetőség megvalósítható-e C# és Java alatt is? (objektumból alkotott objektum). Így konkrétan példát még nem láttam rá. De az interfész-re gondoltam, de az másról szól. Talán az öröklődés még ami szóba jöhet. De nem emlékszem így vissza. És nem tudom, hogy angolul is hogyan kéne rákeresnem.

    doboz=Teglalap()
    doboz.sarok=Pont() #Erre a részre gondolok

    A teljes példakód:
    # coding: iso-8859-2

    class Pont:
    "Egy matematikai pont definíciója"

    # Egy Pont objektum létrehozása
    p1=Pont()

    # Példány attribútomok vagy változok
    # Nem kell semmilyen konstruktor stb.
    p1.x=3.0
    p1.y=4.0


    # Objektumokból alkotott Objektum

    class Teglalap:
    "egy téglalap osztály definicója"

    doboz = Teglalap()
    doboz.szeles=50.0
    doboz.magas=40.0
    # Példányváltozó(sarok) egy Pont objektum
    doboz.sarok=Pont()
    doboz.sarok.x=12.0
    doboz.sarok.y=27.0

  • Lacces

    őstag

    Sziasztok!

    Ez a következő függvény, ami nem mást csinál, mint a kulcs-érték párokat kicseréli.
    def inverse(dico):
    "egy új szótár létrehozása lépésről lépésre"
    dic_inv={}
    for key in dico:
    item=dico[key]
    dic_inv[item]=key
    return dic_inv

    Ennél a résznél a dic_inv[item]=key részt nem értem. Ismerem a szótárakat, átnéztem, de valamiért átcsúszok a logikáján.

    for key in dico: - kulcs alapján a dico szótárban keres
    item=dico[key] - az item változóban a dico kulcsait tárolom.
    dic_inv[item]=key - na én itt valamiért úgy értelmezem, hogy dic_inv[dicokey]=key (ami ismét a dico-nak a kulcsai)

    [ Szerkesztve ]

  • Lacces

    őstag

    válasz cucka #74 üzenetére

    Aham, igaz

    for key in dico - értem, úgy mint a listáknál, ez egy bejárás. Ilyenkor mindig kulcs alapján járja be a szótárt?

    dico[key], igen leesett, ami nem más mint a "key" kulcshoz tarotzó értéket írja ki:
    dico={'computer':'számítógép'}, akkor ebben az esetben a
    print dico[computer] eredménye a számítógép lesz.
    Így már eszembe jutott. Még meg kell szokni. Köszönöm szépen!

    def inverse(dico):
    dic_inv={}
    for key, value in dico.items()
    div_inv[value]=key
    return dic_inv

    Ebben az esetben, a szótárt úgy kezelem, mint egy objektum. a key az adott elem kulcsa, a value az adott elem értéke. És akkor simán kicseréli a kettőt.

    A zip-hez szeretnék magyarázatot kérni. Megnéztem angolul, de a fordítással sem értettem meg. Ez összefűzés lenne egyenként? Példákból is így vettem ki.
    a dico.values() és dico.keys()-t ismerem.

    Amúgy erre gondoltál? (hogy a visszatérési érték egy szótár, ami dic_inv a jelen példában) végül is mindegy, az a lényeg, hogy nem a "dico" szótár.
    def inverse(dico):
    return dic_inv(zip(dico.values(), dico.keys()))

  • Lacces

    őstag

    Meg még egy kérdésem, a get()-el kapcsolatban:

    for m in words:
    dico[m] = dico.get(m, 0) +1
    lista = dico.items()

    Úgy tűnik a szótár használata nem tiszta számomra...

    a get() - azt csinálja, hogy megnézi a dico szótárban az "m" kulcshoz tartozó értéket, ha szerepel benne akkor az m-et ad neki (m értéket, ami a "words" aktuális eleme), ha nem, akkor 0-t. Én így tudtam. De miért van ott az a +1 ?

    Itt a könyv teljes példájának a kód sorozata:

    nFile = raw_input('Kezelendo file neve : ')
    fi = open(nFile, 'r')
    text = fi.read()
    fi.close()
    # annak erdekeben, hogy a szoeg szavai konnyen elklulonithetok legyenek, a nem
    # betu karaktereket betukozze alakitjuk :?
    alpha = "abcdefghijklmnopqrstuvwxyzíéáúóüöÍÉÁűőŰŐÚÓÜÖ"
    betuk = '' # a lerehozand uj karakterlanc
    for c in text:
    c = c.lower() # minden betut kisbetuve alakit
    if c in alpha:
    betuk = betuk + c
    else:
    betuk = betuk + ' '
    # az eredménystring átalakítása szavak listájává :
    words = betuk.split()

    # a hisztogram elkészítése :
    dico ={}
    for m in words:
    dico[m] = dico.get(m, 0) +1
    lista = dico.items()
    # az eredménylista rendezése :
    lista.sort()
    # kiiratas :
    for item in lista:
    print item[0], ":", item[1]

    :R

  • Lacces

    őstag

    válasz cucka #77 üzenetére

    Aham, most már így értem. Igen, egy csomó dolgot értelmezte félre, és írtam le rosszul, most akkor egy kis pihenés jön.

    Igen, így már leesett a zip.

    Vagy még jobban:
    def inverse(dico):
    return dict(zip(dico.values(), dico.keys()))

    Itt mi a "dict"?
    Beírtam ezt a kódot a másik helyett, és elfogadta, de anélkül is elfogadta ha nem volt ott a "dict"

    És köszönöm a türelmedet!

  • Lacces

    őstag

    Sziasztok!

    Ismét jelentkezem.

    Most egy GUI-s feladatot csináltam meg a könyv alapján. Egy kis vonatot rajzol ki, színezve a vagonok, ablakok, arcok.

    Első kérdésem, ami talán egyszerűbb:
    Tudtok benne kód rövidítést? Esetleg "szebb" kódot? Már kaptam jobb megoldásokat itt a fórumon.

    Második kérdésem:
    Van egy adott light() és egy light34(). Az előbbi az ablak színét feketéről sárgára változtatja. Az utóbbi, a 3. és 4. vagon ablakit változtatja meg.
    Ez ügyben a kérdésem: Hogyan lehet azt elérni, hogy, adott indexű ablakokat világítson csak meg?

    Próbálkoztam vele, de nem jött össze:

    light()-ot így módosítani, hogy kap egy index nevű paramétert, ha az f == index, akkor azt az f-et fogja csak módosítani.
    def light(self, index):
    "felkapcsolja a vagon belső világítását"
    for f in self.ablakIndex:
    if f==index:
    self.canvas_.itemconfigure(f, fill="yellow")

    def light34(self):
    "ablak színének megváltoztatása a 3.és 4. vagonban"
    self.v3.light(1)
    self.v4.light(2)

    És egy másik kérdés is érdekelne, hogyan lehetne, egyszerre több ablak indexét is átadni? Én tömbre gondoltam, vagy numerikus listára. És akkor az elágazás a for ciklusban így nézne ki (light metódusban)
    if f in numerikuslista
    Bár ezt sem tartom szép megoldásnak...

    Teljes, működő kód:
    # coding: iso-8859-2

    from Tkinter import *

    def circle(can,x,y,r, colour="white"):
    "a <can> vászon egy <r> sugarú kör rajza <x,y> pontban"
    can.create_oval(x-r, y-r, x+r, y+r, fill=colour) # kör rajzolása elipszisből

    class Application(Tk):
    def __init__(self):
    #Szülőosztály konstruktora:
    Tk.__init__(self)
    self.can=Canvas(self, width=475, height=130, bg="white")
    self.can.pack(side=TOP, padx=5, pady=5)
    Button(self, text="Train", command=self.rajzolas).pack(side=LEFT)
    Button(self, text="Hello", command=self.kineznek).pack(side=LEFT)
    Button(self, text="Világítás", command=self.light34).pack(side=LEFT)

    def rajzolas(self):
    "4 vasúti kocsi létrehozása vásznon"
    # a vasúti kocsikat a vagon osztályban vannak definiálva
    self.v1=vagon(self.can, 10, 30)
    self.v2=vagon(self.can, 130,30, "dark green")
    self.v3=vagon(self.can, 250,30, "maroon")
    self.v4=vagon(self.can, 370, 30, "purple")

    def kineznek(self):
    "személyek megjelenése bizonyos ablakokban"
    self.v1.perso(3) # 1.vagon, 3.ablak
    self.v3.perso(1) # 3.vagon, 1.ablak
    self.v3.perso(2) # 3.vagon, 2.ablak
    self.v4.perso(2) # 4.vagon, 1.ablak

    def light34(self):
    "ablak színének megváltoztatása a 3.és 4. vagonban"
    self.v3.light()
    self.v4.light()


    class vagon:
    # a paramétereket a rajzolás függvényben kapja
    # a kosntruktorhoz hozzáadtam a colour paramétert
    def __init__(self, canvas_, x, y, colour="navy"):
    "egy kis vagon rajza a <canvas> vásznon <x,y> pontban"
    # paraméterek tárolása példány-változókban
    self.canvas_, self.x, self.y=canvas_, x, y
    # alap téglalap rajzolása
    canvas_.create_rectangle(x,y, x+95, y+60, fill=colour)
    # 3 ablak 25x40 pixel, 5 pixel távolságra
    self.ablakIndex=[] # ablak hivatkozásainak tárolása egy lista
    for ablak in range(x+5, x+90, 30):
    #az ablak index-hez listához (hozzáfűzi) hozzáadja a következő canvas-okat.
    self.ablakIndex.append(canvas_.create_rectangle(ablak, y+5, ablak+25, y+40, fill="black"))
    # két 12 pixel sugarú kerék
    circle(canvas_, x+18, y+73, 12, "gray")
    circle(canvas_, x+77, y+73, 12, "gray")

    def perso(self, wind):
    "egy személy mejelenése a <wind> ablakban"
    # minden egyes ablak közepe koordinátájának a kiszámítása:
    xm=self.x+wind*30-12
    ym=self.y+25
    circle(self.canvas_, xm, ym, 10, "pink") #arc
    circle(self.canvas_, xm-5, ym-3, 2) #balszem
    circle(self.canvas_, xm+5, ym-3, 2) #jobszem
    circle(self.canvas_, xm, ym+5, 3) #száj

    def light(self):
    "felkapcsolja a vagon belső világítását"
    for f in self.ablakIndex:
    self.canvas_.itemconfigure(f, fill="yellow")

    Application().mainloop()

    [ Szerkesztve ]

  • Lacces

    őstag

    válasz cucka #82 üzenetére

    :-) Igen, nem rossz objektumokra szétszedni, csak az objektumok összekötése az már egy érdekes dolog.

    Ez a könyv amiből tanultam, az alapokat adja meg a programozásra, ami nem rossz, lehet majd megnézem magamnak azt a komolyabbat is amiből te is tanultál. De az objektumokkal való szórakozás, amikor sok van, és azokat összekapcsolni, nah arra talán egy ilyen projekt példa volt, na majd az alapján összeeszkábálom majd szerintem.

    Nem rossz nyelv, ez a python, nekem tetszik, bár sosem gondoltam, hogy komolyabban foglalkoznék vele, hobbi szinten nekem tetszik.

    Olyan oldal létezik a python alá, mint például a www.codeproject.com ?
    Ahol opensource projektek, tutorialok vannak fent? Egy komplett kis alkalmazás elkészítése.

    Google-el az a baj, hogy beírom, hogy java file manager vagy python file manager code source / tutorial / project, akkor nem igazán ad ki rá értelmes találatot.

    Ilyen jó lenne, és főleg olyan, ahol sok objektum-orientált szemlélet van benne. :R

  • Lacces

    őstag

    Sziasztok!

    Milyen praktikák, trükkök, kiegészítők, webszerverek, leírás stb. van arra, hogy egy python webalkalmazás (django) sebességét megnöveljük? :R
    Főleg a PHP7 közeledtével nálam aktuális a téma, de mivel a matematikai számításokban gyorsabb a python, ezért nála teszem le a voksomat egyelőre.

Új hozzászólás Aktív témák