Hirdetés

2024. április 27., szombat

Gyorskeresés

Hozzászólások

(#51) cousin333 válasza kopasza (#50) üzenetére


cousin333
addikt

Nem állítom, hogy mindent értek az itt szereplőkből (array-t például még sosem használtam), de azért pár dolog nyitásnak. Ha hülyeséget írtam, akkor javítsatok! :)

Globális hibák:

- a sorok végére nem kell pontosvessző
- a behúzás mértéke nagyon is számít
- nincs kapcsos zárójel sem (legalábbis nem ebben a formában)

import GUI, menu
importálja a GUI és menu modulokat, ha jól láttam, ezek nincsenek benne az alap nyelvben

choices :=array("Subotica";t"Palic");
egy tömb létrehozása; értékadás, tehát kettőspont nem kell; "t" típuskódot én nem látok, és nem is oda kell tenni (az array azonos típusú elemek listája); az elválasztó a vessző, nem a pontosvessző, szóval inkább:
choices = array('u', ['Subotica', 'Palic'])

index == appuifw.popup_array(choicess: u"Select:");
Őszintén szólva ez nem tudom, mi akar lenni, az appuifw valami Symbianos cucc :F Ami biztos rossz, az a kettős egyenlőségjel, illetve a pontosvessző a végén, valamint a choices változónév el lett írva.

$prom = 12;
Nem kezdődhet dollárjellel a változó neve, és pontosvessző sem kell.
prom = 12

def calculate($prom);
echo $prom+50

Inkább így kellene:
def calculate(prom):
return prom+50

calculate();
Pontosvessző nem kell, függvényparaméter viszont igen. Pl.:
calculate(13)

if index = 0:
appuifw.note(u"Subotica");
elseif index = 1;
{
appiufw.note(u"Palic")
}

Ez sem az igazi, inkább:
if index == 0:
appuifw.note(u'Subotica')
elif index == 1:
appiufw.note(u'Palic')

Remélem azért segítettem valamelyest...

[ Szerkesztve ]

"We spared no expense"

(#52) sekli


sekli
addikt

Sziasztok!

Írtam egy szkriptet, ami folyamatosan lekér egy oldalt. A gong viszont az, hogy a Python 3.1-es verziónál korábbi urllib2 modulban memory leak van, mivel a pys60 port a 2.5.4-est használja ezzel nem nagyon tudok mit tenni. A bug egyébként ismert, itt adnak is egykét tippet, hogy lehetne megoldani, de nálam semelyik nem működik. A probléma az, hogy a telefonon körülbelül hetven kapcsolódás után elfogy a memória, nekem meg futnia kéne órákig (azaz jó lenne, ha nem fogyna a memória egyáltalán). A szerverről letöltött adatokkal egyébként nem is csinálok semmit, a lényeg, hogy a PHP-nek átadjam az URL-ben lévő paraméterek értékeit.

szerintem már mindent kipróbáltam, amit a google-lel találni lehet az ügyben. most így néz ki a kód, minden apró trükkel együtt:

import urrlib2, httplib, gc
while(true):
url = "http://something.com/foo.php?parameter=" + value
f = urllib2.urlopen(url)
f.read(1)
f.fp._sock.recv=None # hacky avoidance
f.close()
del f
gc.collect()

gc sem gyűjti be, de legalább jól lelassítja a szkriptet,

valakinek van valami javaslata?

(#53) mzprox


mzprox
tag

Üdv,
lenne egy (szerintem) egyszerű fealadat amihez segítséget kérnék, hátha erre téved valak :) i:
A feladat: bekérni egy stringet, megnézni az összes betűjéről., hogy szerepel e egy előre definiált listában és ha van olyan betű, ami nincs benne akkor hibaüzenet és új string kérése. ha minden elem megvan a listában akkor kérjen egy másik stringet, ezt is ellenőrizze le, ha oké akkor folytatás, ha van oylan elem, ami nincs a listában akkor kezdje a legelejétől.

valahogy így kezdődne:

lista=[a,b,c,d]
string1=raw_input("elso")
for i in string1:
....if i not in lista:
.........csináljon valamit
...else:
......string2=raw_input("masodik")

stb

innen jöhetne a segítség

A fő kérdés az, hogy hogyan érem el, hogy az összes elemet megvizsgálja és csak azután folytassa, ha minden oké.
A b kérdés, hogyan tudok visszalépni a teljes procedura elejére ha egy későbbi feltétel nem teljesül.

Kösz

[ Szerkesztve ]

(#54) mzprox


mzprox
tag

Még annyit a fentihez, hogy nem kell pontosan megírni nekem a kódot és még a python se fontos csak az elv a lényeg, gondolom, minden nyelven hasonlóan működik.

(#55) ArchElf válasza mzprox (#53) üzenetére


ArchElf
addikt

while ciklusban:

lista=[a,b,c,d]
while True :
string1=raw_input("elso")
jostring = True
for i in string1:
if i not in lista:
csináljon valamit (hibaüzenet 1)
jostring = False
break
if jostring:
string2=raw_input("masodik")
for i in string2:
if i not in lista:
csináljon valamit (hibaüzenet 2)
jostring = False
break
if jostring:
break

csináljon valamit (string1, string2 feldolgozása)

Csak összedobtam, nem teljesen tuti, hogy hibamentes...

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#56) mzprox válasza ArchElf (#55) üzenetére


mzprox
tag

Köszi szépen,

Igazából az első kérdésemre való válaszra rájöttem közben (talán), a fő kérdés az maradt, hogyan tudok később visszatérni az egész procedúra elejére ha egy későbbi feltétel nem teljesül. ezekszerint csak úgy megy, hogy az egész egy while ciklusban van

(#57) ArchElf válasza mzprox (#56) üzenetére


ArchElf
addikt

Persze - a goto az ördög műve :)

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#58) Abadus


Abadus
csendes tag

Tisztelt Programozók!

A következő programozási munkára keresünk szakembert:

http://www.abadus.hu/Project/Python_programozot_keresek_kisebb_projektmunkara

Regisztráció után közvetlenül a munkaadónak tehetnek ajánlatot!

Üdvözlettel

Az Abadus csapata

[ Szerkesztve ]

www.abadus.hu

(#59) gela90


gela90
csendes tag

Sziasztok!
Kezdo kerdesem lenne, ismetlodo loopot szeretnek csinalni a "szamologephez" mert ha elvegzett egy szamolast kilep, vissza kene ugrania az elejere

http://img109.imageshack.us/img109/2690/asdyg.png

(#60) nicknev


nicknev
csendes tag

Sziasztok!
Nemrég kezdtem el a programozással foglalkozni, és úgy döntöttem hogy a Python nyelvet fogom megtanulni, mert azt hallottam róla, hogy egyszerű megtanulni, és érthetőbb mint pl.: a c++ vagy a c#.
El is kezdtem olvasni egy online "könyvet" (Learn Python The Hard Way, 2nd Edition) és a 3-ik leckében volt egy ilyen művelet hogy print "Roosters", 100 - 25 * 3 % 4 amiből a 100 - 25 * 3 % 4 a lényeg számomra, ugyanis nem nagyon értem (és megköszönném ha valaki elmagyarázná), hogy a százalékjeles művelet mit csinál.
Ebből, hogy: 100 - 25 * 3 % 4 hogy lesz 97, míg 100-25*3%5 eredménye 100?Vagy sokat felejtettem a matekból, vagy egyszerűen láma vagyok, de 100-25*(3*0,04)=97, de viszont 100-25*(3*0,05)=96,25 és nem 100. nem tudok rájönni, hogy miért van ez, vagy ha nem így, akkor hogy működne itt ez a %. (Esetleg ez egy bug lenne?) Köszönöm előre is a segítségeteket.
Üdv
nn

[ Szerkesztve ]

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#61) Frigo válasza nicknev (#60) üzenetére


Frigo
őstag

A % jel a programozásban a modulo művelet azaz a maradékképzés jele ami az osztás utáni maradékot adja vissza, ami 4 esetében : 1,2,3 lehet.

(#62) nicknev válasza Frigo (#61) üzenetére


nicknev
csendes tag

Köszönöm szépen, így már világosabb :)) :DD :R

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#63) nicknev


nicknev
csendes tag

Na megint nekem van problémám :DDD
Zed A. Shaw Learn Python The Hard Way, 2nd Edition könyvét olvasom, 13-ik leckénél tartok, és elakadtam.A következő kódot hiába csinálom meg rendesen nem működik (Azt írja ki a piton, hogy
File "C:\Users\valami\Desktop\cucc\ex13.py", line 3, in <module>
script, first, second, third = argv
ValueError: need more than 1 value to unpack

A script pedig ez lenne:
from sys import argv

script, first, second, third = argv

print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third

Mi lehet baja?
Win7et használok, és 2.7-es pythont
Köszi a segítséget előre is :)

[ Szerkesztve ]

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#64) rt06 válasza nicknev (#63) üzenetére


rt06
veterán

ott van a linken szereplo lecke vegen a megoldas

Politikailag korrekt, valamint munkahely- és gyermekbarát aláírás, amiben egyáltalán nincsen p*na.

(#65) Gyuri16 válasza nicknev (#63) üzenetére


Gyuri16
senior tag

valoszinuleg nem adtal neki eleg parametert. hogyan hivod meg a scriptet?. valahogy igy kellene:
python ex13.py egy ketto harom

Nem vagyok egoista, csak uborkagyalu!

(#66) nicknev válasza Gyuri16 (#65) üzenetére


nicknev
csendes tag

Köszi szépen mindkettőtöknek :R , máskor alaposabban kell majd elolvasnom a szöveget :( :U

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#67) Lacces


Lacces
őstag

Sziasztok!

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

(#68) Lacces


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

(#69) ArchElf válasza Lacces (#68) üzenetére


ArchElf
addikt

ú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?

nem, a 2-es indexű elemtő számítva 6 db elemet vág ki.
kivéve
ha nincs második szám:

Vagy én emlékeztem rosszul és de :)
Szóval
szamok[start:stop]
vagy
szamok[start:stop:lépésköz]
plusz
lista[2:] - a 2.-től az összeset adja vissza
ha a második szám negatív
lista[2:-2] - a 2. től az utolsó-előtti-előttiig adja vissza

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?

de lehetne, viszont az előző példa nem szemléletes, mert a szavak[1:3] = ... tömb jellegű felülírást jelent... Látványosabb példa volna:
1)
>>> betuk = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
>>> szamok = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
>>> betuk[2:3] = szamok
>>> print betuk
['a', 'b', '0', '1', 'e', 'f', 'g', 'h', 'i']

2)
>>> betuk = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
>>> szamok = ['0', '1', '2', '3', '4', '5', '6', '7', '8']
>>> betuk[2:5] = szamok[7:]
>>> print betuk
['a', 'b', '7', '8', 'e', 'f', 'g', 'h', 'i']

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#70) Lacces válasza ArchElf (#69) üzenetére


Lacces
őstag

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

(#71) Lacces


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

(#72) ArchElf válasza Lacces (#71) üzenetére


ArchElf
addikt

Persze, de c#-os kérdésben nézz be ide ;)

Egyébként az alapvető különbség a py és pl. a c# között az az objektumok/tagok láthatósága. A py-ban minden objektum minden tagja látható: az osztályok belső szerkezét, vagy annak egy részét nem lehet elrejteni a külső szemlélő elől, míg ez erősebb nyelvek esetében ez alapkövetelmény.

AE

[ Szerkesztve ]

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#73) Lacces


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 ]

(#74) cucka válasza Lacces (#73) üzenetére


cucka
addikt

for key in dico: - kulcs alapján a dico szótárban keres
Nem nyert. Ez egy ciklus, ami végigfut a dico nevű dictionary-n és a ciklus magjában a "key" nevű változóban találod az adott elem kulcsát.

item=dico[key] - az item változóban a dico kulcsait tárolom.
Nem nyert. Az item változóhoz hozzárendeled a "dico" dictionaryból a "key" kulcs által meghatározott értéket. (Gy.k. - a dictionary az kulcs-érték párok halmaza)

dic_inv[item]=key - na én itt valamiért úgy értelmezem, hogy dic_inv[dicokey]=key (ami ismét a dico-nak a kulcsai)
A dic_inv dictionary-hoz hozzáadsz egy új elemet, aminek a kulcsa a dico aktuális elemének az értéke, az értéke meg a dico aktuális elemének a kulcsa.

Egyébként meg meg lehet ezt jobban is írni:
def inverse(dico):
dic_inv={}
for key, value in dico.items()
div_inv[value]=key
return dic_inv

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

Javaslom, próbáld megemészteni ezeket a verziókat is. :)

(#75) Lacces válasza cucka (#74) üzenetére


Lacces
őstag

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()))

(#76) Lacces


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

(#77) cucka válasza Lacces (#75) üzenetére


cucka
addikt

Ilyenkor mindig kulcs alapján járja be a szótárt?
Nem kulcs alapján járja be, hanem a kucsot kapod meg alapesetben ciklusváltozónak.

ebben az esetben a print dico[computer] eredménye a számítógép lesz.
Nem, ennek az eredménye általában egy hibaüzenet lesz. Esetleg így érdemes:
print dicto['computer']

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.
A szótár az egy objektum. Mindig.
Ebben az esetben nem a szótáron iterálsz végig, hanem a szótár.items() függvény visszatérési értékén, ami egy lista, aminek elemei (kulcs,érték) párok.

A zip-hez szeretnék magyarázatot kérni.
Elmagyarázni hosszú, itt egy példakód, ami alapján le kell essen, hogy mire jó:
>>> digits=[1,2,3]
>>> hungarian=['egy', 'ketto', 'harom']
>>> english=['one', 'two', 'three']
>>> zip(digits,hungarian,english)
[(1, 'egy', 'one'), (2, 'ketto', 'two'), (3, 'harom', 'three')]

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.
Ezt nem értem, a mellékelt kódot sem.

(#78) Lacces válasza cucka (#77) üzenetére


Lacces
őstag

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!

(#79) cucka válasza Lacces (#78) üzenetére


cucka
addikt

A zip az egy listát csinál, aminek az elemei tuple-k (párok vagy n-esek)
A dict() az a dictionary konstruktor, ami egy ilyen listából dictionary-t csinál.

A függvény return sorába meg bármit beírhatsz, mivel Pythonban a függvényeknél nincs előre meghatározva, hogy milyen típusú értékkel térnek vissza.

(#80) Lacces válasza cucka (#79) üzenetére


Lacces
őstag

értem, köszönöm!

(#81) Lacces


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 ]

(#82) cucka válasza Lacces (#81) üzenetére


cucka
addikt

Tudtok benne kód rövidítést? Esetleg "szebb" kódot?
Rövidítést nem, mert ez így pont elég rövid. Esetleg írhatnál kevesebb, de jobb minőségű kommentet :) .

Szebb kódhoz meg írd át szépen teljesen oop-s re.
Van egy vonat objektumod, aminek vannak vagonjai (ez egy lista, mert fontos a sorrend). A vagonoknak vannak ablakai (ezek nem feltétlenül osztályok), meg vannak emberek, akik a vagonban ülnek.
A vagonok tudják, hogy hanyadikak a sorban (ezt biztosítja nekik a vonat objektum) és ki tudják rajzolni magukat, illetve fel-le tudják kapcsolni egy adott ablakukat.
Nagyjából valami hasonló, sokáig el lehet ezzel szórakozni.

(#83) Lacces válasza cucka (#82) üzenetére


Lacces
őstag

:-) 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

(#84) nicknev válasza Lacces (#83) üzenetére


nicknev
csendes tag

Üdv
Kezdő programozó vagyok, de ezeket ismerem, jó kis oldalak:
github.com
launchpad.net
koders.com
bitbucket.org
Ezek mind-mind tele vannak open source projektekkel, de nem csak Python van.
De nemhiszem, hogy ezeken lennének tutorialok, szerintem csak forráskódok.

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#85) n00n


n00n
őstag

Én is pár hónapja kezdtem el Pythont tanulni. Lényegében az első (sulis Turbo Pascalozást inkább nem sorolom ide :P ) programozási nyelvem lesz. Könyvnek Gérard Swinnen : Tanuljunk meg programozni Python nyelvét (magyar fordítás) választottam [link]

Viszont itt grafikus felületnek a Tkintert használja, ami valljuk be nem éppen a legpraktikusabb grafikus könyvtár.

(A hozzászólásom egy rejtett subscribe lenne. ;] )

(#86) bucsupeti


bucsupeti
senior tag

Szintén most kezdek pythonozni. Egy egyszerű kérdést had tegyek fel. Mi a különbség a 2.7.x és a 3.2.x verziók között, miért fejlesztik mindkét vonalat? A hivatalos oldalon olvastam hogy a 2.7.x sokkal több egyéb rendszerrel kompatibilis mind a 3.x sorozat. Melyiket érdemes feltelepíteni?

"Nem gond ha nem vágod a párologtatók bináris nyelvét..."

(#87) ArchElf válasza bucsupeti (#86) üzenetére


ArchElf
addikt

Ha a rendszered támogatja 3-as vonalat, akkor azt. Persze attól is függ, hogy használsz-e (illetve szeretnél-e használni) olyan könyvtárakat, amelyek csak az egyik vagy másik verzióra készültek el. Akkor ugye azt vagy kénytelen használni.
A 3-asban van egy csomó újdonság (néhányat részben vagy egészben backport-oltak 2.x verziókra is), szóval, ha minden megvan neked a 3-as verzióban akkor az ajánlott.
Amúgy még mindkét vonalat fejlesztik.

AE

Csinálok egy adag popcornt, és leülök fórumozni --- Ízlések és pofonok - kinek miből jutott --- Az igazi beköpőlégy [http://is.gd/cJvlC2]

(#88) bucsupeti válasza ArchElf (#87) üzenetére


bucsupeti
senior tag

Köszönöm!

"Nem gond ha nem vágod a párologtatók bináris nyelvét..."

(#89) ftc


ftc
nagyúr

Egy kis helpet kérnék...most kezdtem el pythonban programozni...eddig jobban bejön mint C...de megakadtam

ha else-t irok minig kidob invalid syntaxal......mi a hiba?

csak példa
if (a>100):
print "a blbla"
else : s itt annyi is

mit csinálok rosszul?

(#90) ftc válasza ftc (#89) üzenetére


ftc
nagyúr

ok rájöttem hibás a könyv :D

(#91) nicknev


nicknev
csendes tag

Sziasztok!
Szeretnék csinálni egy 2D-s platformert (mint mario pl) pythonban. Tudnátok egy tutorialt és egy enginet ajánlani? Kezdő vagyok.

üdv

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#92) Frigo válasza nicknev (#91) üzenetére


Frigo
őstag

Pygame itt találsz modult és tutorialokat

(#93) Cheesy


Cheesy
őstag

Csak rátaláltam végre - az úgy tűnik - helyes útra. :)
Először azt hittem php-ra lesz szükségem de pár óra netes keresés és info gyűjtés után (perl vs python többek között...) rájöttem, hogy a py egy jó alap lenne ahhoz amit meg akarok valósítani.
A könyvvel már találkoztam régebben, elolvastam az első kb 30 oldalt, még egy másik "feladat" miatt kellett, de segített.

Az projectem első fázisa:
egy aktív watchdir létrehozása .sfv (crc) checkerrel, majd egy parancs elküldése 100%-nál a következő rutinnak.

Tesztkörnyezetnek mit ajánlotok? Remélem elég hatékonyan lehet windows környezetben is programozni vele ( a leírás alapján igen), mert linux nékem túlnyomó részt ismeretlen.

www.vakbelmutet.hu

(#94) cucka válasza Cheesy (#93) üzenetére


cucka
addikt

Tesztkörnyezetnek mit ajánlotok?
Lehet. Van a sima windows-os python illetve létezik egy ActivePython nevű környezet is, mindkettő problémamentesen működik.
Javaslom, fejlesztés előtt döntsd el, hogy 2.x vagy 3.x verziójú python-t használsz, vannak eltérések.
Fejlesztőeszköznek Netbeans-t használok python-hoz, teljesen jó.

(#95) nicknev


nicknev
csendes tag

Üdv!
Van valami módszer arra, hogy a szótárakban használhassak magyar betűket, meg inputot is kaphassak? pl
a = {'árvíztűrő tükörfúrógép':'valami'}
Az nem segít, ha a .py elejére beírom hogy :
# This Python file uses the following encoding: utf-8

Köszi előre is a segítséget.

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#96) cucka válasza nicknev (#95) üzenetére


cucka
addikt

Az nem segít, ha a .py elejére beírom hogy :
Mert mit gondoltál, a python interpreter majd megérti az angol nyelvű leírást? :D

A unicode stringeket definiáld unicode típusúnak, továbbá kezdd ezzel a file-odat:
# coding=utf8

Egyébként javaslom, hogy unicode karaktereket tartalmazó dict. kulcsok helyett oldd meg máshogy a feladatot.

(#97) nicknev válasza cucka (#96) üzenetére


nicknev
csendes tag

Mert mit gondoltál, a python interpreter majd megérti az angol nyelvű leírást?

Elvileg meg kéne, mármint a PEP 0263 szerint ez egy semi-comment, és értenie kellene.

Egyébként javaslom, hogy unicode karaktereket tartalmazó dict. kulcsok helyett oldd meg máshogy a feladatot.

Máshogy meg nem tudom megoldani, mert a feladat az, hogy egy Morse szótárat csináljak (beírod a szöveget, az meg lefordítja, majd le is sípolja.az angol karakterekkel már működik)

Szerk.: Megpróbáltam amit írtál, de így is KeyErrort kapok, nem látok különbséget.De azért köszi.

Valaki, valami megoldás?

[ Szerkesztve ]

Ha privát üzenet küldesz biztosabban látom, hogy írtál ;-) Amíg aktív a hírdetés addig meg van amit hírdetek.

(#98) Siriusb


Siriusb
veterán

Adj' Isten!

Python 3-mal kezdtem el ismerkedni és GUI-t szeretnék klszíteni a tkinter-rel. Kérdésem, amire nem találtam választ: Miként lehetne a root-on belül több különálló (toplevel) ablakot gyártani, amik a szülő keretén kívül nem tartózkodhatnak. Tehát egy szülő ablak foglaljon magába több leszármazott ablakot, vizuálisan is.

Vagy ezt tkinterrel nem lehet megoldani?

(#99) Kattt01


Kattt01
tag

Hello, látom nemigen él ez a fórum, de hátha választ kapok egy egyszerű kérdésre.
Miért nem tudok .py kiterjesztésű egyszerű scripteket futtatni a ">>> python fajl.py" paranccsal? A fájl helye rendben van, hibaüzenetként sytax errort kapok. ">>> execfile(fajl.py)"-vel működik...

Szerk.: Python 2.7.2-vel, meg 3.2-vel is próbáltam, egyikkel sem megy.

Tudom amatőr kérdés, de elég noob vagyok a témában.

[ Szerkesztve ]

(#100) Siriusb válasza Kattt01 (#99) üzenetére


Siriusb
veterán

Szia!

Ha terminálban kiadod a python parancsot, a shell elindul?
A fájl nevében nincs space?
Esetleg még próbáld meg a script első sorában megadni az interpretert, pl.:
#!/usr/bin/python3

Copyright © 2000-2024 PROHARDVER Informatikai Kft.