Új hozzászólás Aktív témák
-
n0rbert0
senior tag
válasz
n0rbert0 #198 üzenetére
Elég érdekesen működik ez a windows tűzfal, mert amikor a raspberry-ben pingelem a gépet és a windowsban nincs kikapcsolva a tűzfal, akkor nem küldi az adatokat. Amint kikapcsolom a tűzfalat, akkor elindulnak a 0-ák és 1-esek.
Ez azért érdekes, mert a raspberry IP-címéről MINDENT engedélyezek...
És az ip biztosan jó, többször ellenőriztem. -
-
n0rbert0
senior tag
Sziasztok!
Egy üzenetet szeretnék fogadni raspberry-ről ezen az oldalon található, első módszerrel.
Amikor lefordítanám a programot, akkor az alábbi hibaüzenetet kapom:
Peer-to-peer van kötve a két eszköz, tehát közvetlenül ethernet kábellel van csatlakoztatva.
import socket
UDP_IP = "10.10.10.9"
UDP_PORT = 27050sock = socket.socket(socket.AF_INET, # Internet
socket.SOCK_DGRAM) # UDP
sock.bind((UDP_IP, UDP_PORT))while True:
data, addr = sock.recvfrom(1024) # buffer size is 1024 bytes
print("received message:", data)Valaki tudna segíteni?
-
Siriusb
veterán
Stackoverflow-n találtam ezt a példát:
qmarks = ', '.join('?' * len(myDict))
qry = "Insert Into Table (%s) Values (%s)" % (qmarks, qmarks)
cursor.execute(qry, myDict.keys() + myDict.values())Az utolsó sorban a paraméterek megadásánál lévő plusz jel kiveri a biztosítékot (unsupported operand). Ennek működnie kellene?
-
xxSanchez
őstag
Sziasztok!
Valakinek esetleg nincs tippje arra, hogy hogyan kéne ellenőriznem, hogy a mappában található-e .dll vagy akármilyen általam megadott kiterjesztésű fájl? Eddig eljutottam:
if not os.path.exists('teszt.dll'):
// nincs itt
else:
//itt vanItt ellenőrzi, hogy van-e teszt.dll és jól is működik a kód, csak nekem az kéne, hogy a kiterjesztést nézze. Tehát ha találna .dll kiterjesztésű fájlt a mappában akkor szólna.
Előre is köszi!
-
Siriusb
veterán
Nem tudok rájönni, hogy a tix labelentry-nél hogy tudom konfigolni a subwidgeteket (label és entry). Valami ötlet, miként hivatkozhatok rájuk?
-
sonar
addikt
Sziasztok,
Meg lehet csinálni a non grafikus verzióban, hogy input mezőket, gombokat hozok létre?
Amolyan régi DOS féle programot? -
sonar
addikt
Sziasztok,
Egy ideje már barátkozom a Pythonnal (2.5 - 2.7), mivel munkához kell.
Használtok IDE-t vagy valami debuggert?
Én többnyire csak Geany-t (ubuntu) illetve Notepad++(win) használok. De abban se vagyok biztos, hogy minden funkciót ismerek.
Ha esetleg valaki tud jobbat szivesen meghallgatnám. -
Siriusb
veterán
Python 3-hoz milyen GUI-t ajánlanátok? Feltételek: céges szoftverhez kell, Linux és Windows alatt.
Utóbbi napokban elkezdtem beleásni magam a PyGobject/Gtk+ 3-ba és csak most kezdtem realizálni, hogy ez nincs Windowsra.
Egyelőre a PySide-t találtam, habár nem vagyok egy QT fan. Tkinter annyira nem jön be, különösen a Gtk3 -hoz hasonlítva. -
cucka
addikt
Mivel lebegőpontos számokkal dolgozol, a
if S+E+M+O+T == 1:
sorod nem úgy fog működni, ahogy azt elképzeled. Használj fixpontos értékeket (kulcsszó: decimal). Amúgy mi értelme ennek a programnak?Amúgy kipróbáltam, a kérdéses belső if feltétele 851 alkalommal fog teljesülni a program futása közben, az s1, e1, stb. értékei minden esetben különbözőek, csak ugye minden alkalommal felül is írod a korábbi értékeket.
-
aAron_
őstag
i=0.1
S=0
while S<=1:
E=0
while E<=1:
M=0
while M<=1:
O=0
while O<=1:
T=0
while T<=1:
if S+E+M+O+T == 1:
s1=S
e1=E
m1=M
o1=O
t1=T
T+=i
O+=i
M+=i
E+=i
S+=ihogy lehetséges, hogy az eredmény s1 = 0.8; e1 = 0.2
az én logikám szerint s1 = 1.0; többi = 0 lenne a helyesha kérhetem valaki vessen rá egy pillantást, sehogy sem jövök rá
-
aAron_
őstag
értem, köszönöm
-
aAron_
őstag
üdv!
for ciklusok, while loop-ok, if statement-ek elejét végét nem lehet valahogy jelölni? kicsit bonyolultabb programnál számomra már kezd átláthatatlanná válni
egyébként maga a fordító is honnan látja, hogy melyiknek mikor van vége? C után elég furcsa számomra
-
Siriusb
veterán
Még egyszer nekifutok, hátha. Egy az egybe kimásolva a terminálból. Elöljáróban:
1) ~/tmp az a /home partíciómon levő könyvtár rövid útvonala. Abszolút útvonal: /home/siriusb/tmp Bármely, neked tetsző könyvtárban lehetsz, ez csak egy példa.
2) siriusb @arch ~/tmp $ Ezt soha nem kell begépelni ez a bash prompt, kifejtve: bejelentkezett felhasználó + @ host név + útvonal + és végül egy karakter ($), ami jelzi, hogy innentől kezdve jön az, amit én, mint felhasználó írok be (értsd: parancs)Lássuk a terminált:
siriusb @arch ~/tmp $ echo -e 'print "Hello. I am a python program."\nname = raw_input("What is your name? ")\nprint "Hello there, " + name + "!"' > hello.py
siriusb @arch ~/tmp $ python hello.py
Hello. I am a python program.
What is your name? alfa
Hello there, alfa!
siriusb @arch ~/tmp $ python
Python 2.7.3 (default, Dec 22 2012, 21:14:12)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Vastaggal kiemelve, amit valóban be kell gépelned!Szintaxis kiemeléssel, persze nem az igazi.
Ha kiadod a python parancsot, akkor egy interaktív felületre jutsz, ahol a >>> jel után tudod kiadni az utasításokat, pl. 5 + 5
siriusb @arch ~/tmp $ python
Python 2.7.3 (default, Dec 22 2012, 21:14:12)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 5+5
10
>>>Egyébként, amennyiben nincs különösebb okod rá, szvsz érdemesebb lenne a python3-at tanulni. Ha megy az angol: [link]
Szerk:
(#168) Orton96
Ezt most a python írta ki? Mert akkor az a baj, amit gyanítottunk, hogy olyan dolgokat is beírsz a py fájlba, amit nem kellene. -
-
Jester01
veterán
Másold be a terminálból pontosan mit csináltál és mi lett az eredménye.
Így, ahogy én csináltam:$ cat >hello.py
#!/usr/bin/python
print 'Hello. I am a python program.'
name = raw_input("What is your name? ")
print "Hello there, " + name + "!"
$ chmod +x hello.py
$ ./hello.py
Hello. I am a python program.
What is your name? Jester
Hello there, Jester!(a programot a következő sorban ctrl+d-vel zárhatod le)
-
-
Orton96
aktív tag
Sziasztok. Most kezdtem el Ubuntut használni és a Linux rendszerekről szóló Full Circle nevű ingyenes netes újság magyar fordításában felkeltette az érdeklődésemet a python programozás. Az első feladat nagyon egyszerű:
"Néhány sornyi kódot fogunk írni egy gedit-féle szövegszerkesztővel, majd pedig megtárgyaljuk, hogy melyik sor mit végez. Gépeljük be a következő négy sort:
#!/usr/bin/env python
print 'Hello. I am a python program.'
name = raw_input("What is your name? ")
print "Hello there, " + name + "!"Ennyi az egész. Mentsük el hello.py néven valahova. Én talán egy home mappabeli python_peldak nevű mappába tenném. Ez az egyszerű példa már mutatja, hogy mennyire könnyű a kódolás Pythonban. Mielőtt használnánk a programot, előbb futtathatóvá kelltennünk. Ezt a
chmod +x hello.py
parancs begépelésével érhetjük el abban a mappában, ahol a python fájlunk van. Most már elindíthatjuk
a programot.Hello. I am a python program.
What is your name?
Ferd Burphel
Hello there, Ferd Burphel!
greg@earth:~/python_examples$ "Akárhogyan is próbáltam, nem sikerül megcsinálni. Soha nem nyitja meg, mindig arra hivatkozik, hogy nem létező fájlt vagy mappát akarok megnyitni...
(a gép 2.7.3-mas python fájlokat ismer fel a terminál szerint)
Valakinek van ötlete?
-
p06
senior tag
Sziasztok!
A következő a problémám. Van egy Raspberry Pi-m és egy RGB led-em. Ha jól tudom csak két 2PWM kimenete van, ezért csináltam egy "Szoftveres PWM"-et a sima kimeneti lábakra.
A következő lépés a kitöltési tényezők folyamatos bekérése lenne a programban. Ha jól olvastam akkor tud több szálat futtatni. Vagyis a While ciklus fut folyamatosan ahol a LED vezérlése történik, és kellene még egy folyamatosan futó While vagy hasonló ciklus ahol az adatokat kérem be.
Igazából tegnap este óta foglalkozom pythonnal így nem igazán tudom, hogy kellene. Ha valaki csinált már hasonlót, és csak a vázlatát írná le, hogy is kellene beszúrni a ciklusokat azt megköszönném !!!!
-
Siriusb
veterán
válasz
sztanozs #150 üzenetére
Kösz a választ. Olyan okos ez a python
, azt hittem, ezt is lehet rövidíteni, de akkor marad a függvény.
Jó, hogy írtad a sorrendben kinyomtatást is. Most vettem elő igazán ezt a nyelvet újra, persze régebben is elég minimális ismereteim voltak vele kapcsolatban... Idáig csak kisebb dolgokra használtam, pl. csv konvertálás xml-be.
Ha már itt vagyok, GUI-nak mit használtok? Tkinter?
-
Siriusb
veterán
Újabb kérdés, meg lehet-e egy sorban oldani 2 for ciklus helyett a következőt:
Van egy lista:
mylist= [(1,2,3), (4,5,6), (7,8,9)]Ezzel:
[[print(row[i]) for row in mylist] for i in range(3)]
ki tudom íratni egyesével az összes értéket, ám mi van akkor, ha több parancsot szeretnék kiadni, nem csak a print-et? -
Siriusb
veterán
Python + tkinter kérdés:
Miként lehet megoldani, ha van egy listám ['egy','ketto','harom'], generáljak mindegyik elemből pl. egy labelentry widgetet és ezeket megjelenítsem?
-
tacsk0
aktív tag
Sziasztok!
Nemreg telepitettem fel (Windows 7 64bit)-re a python-3.3.0 amd64.msi-t. Tokeletesen felpakolta magat, cmd-bol is etudom inditani a "python" parancsal. Na itt jon a problema feltettem az "ipython-0.13.1.py3-win-amd64-PROPER.exe"-t. Mivel szeretnek ipython-t hasznalni. Na ot mar nemtudom elovarazsolni. Hiaba irom be (cmd) ipython-t nem mukodik.
Mi lehet a megoldas? Kerlek segitsetek!
-
sonar
addikt
Sziasztok,
Az idő modulokkal küzdök. Két file dátumának a különbségére lenne szükségem, de sehogyse birom összehozni. Nekem túlkomplikáltnak tűnik.
Igy meg tudom határozni a két file idejét, de a különbségüket nem tudom képezni
t1=time.ctime(os.path.getmtime(d1))
flgtime=time.ctime(os.path.getmtime(flg))Tudnátok ebben segiteni, hogy merre induljak el?
-
Hyperion
senior tag
válasz
sztanozs #142 üzenetére
Értem, és köszönöm!
Az első megoldásra magam is gondoltam, "paraszt" módszerrel. Ha változik a file méret, valószínüleg érkezett beleírt parancs--#> hajtsuk végre, viszont féltem, hogy lelassítja az egész működést ezért nem is próbáltam ki.. Viszont ez a külön library tetszik. Van esetleg infód avval kapcsolatban, hogy mennyire idő, és processzorigényes? (Főleg raspin.)
A második megoldás sokkal jobban érdekel, viszont félek még kevés vagyok hozzá, de legalább el tudok indulni valamerre! Köszönöm!
-
Hyperion
senior tag
Sziasztok!
Van lehetőség arra, hogy egy folyamatosan futó Python program változóit menet közben, egy másik Pythonnal befolyásoljam?
Köszönöm!
-
balees
tag
Hello,
kérlek segítsetek, elakadtam:
olyan reguláris kifejezést kellene irnom ami egy bizonyos (getParameters) függvényhívás paramétereit elkapja.
A paraméterek több sorban is lehetnek.
Ilyen lenne a függvényhívás:
getParameters(['ABCD_1',ABCD_2',
ABCD_3','ABCD_4'])Amit eddig sikerült az elkap mindenféle paramétert (mármint ami ' ' között van:
import re
str = "getParameters(['ABCD_1','ABCD_2',\
'ABCD_3','ABCD_4'])\
getPara(['AAA','BBB'])"parameters = re.findall(r'\'[\w-]+\'', str)
for parameter in parameters:
print parameterAmit nem tudok elérni hogy csak a getParameters-ből származó értékek kellenek.
-
cucka
addikt
A hiba a while ciklusban van, ami egyel tovább fut, mint a stringed hossza.
Egyébként ha már pythonban programozol, akkor nem érdemes pythonra lefordított turbo pascal kódot írni.
Például pythonban könnyű végigiterálni bármin anélkül, hogy ciklusváltozóval b*szakodnál:def megtalal(szoveg, karakter):
ret = -1
for i,c in enumerate(szoveg):
if c == karakter:
ret = i
break
return ret(Az enumerate azért kell, hogy a string karakterei mellett azok indexét is megkapjuk, lásd a doksiban, hogy mit csinál pontosan. Ha erre nincs szükség, akkor elhagyható.)
Azt rád bízom, hogy gondold végig, vajon fog-e ez menni unicode stringekkel (nem), hogy hogyan oldod meg a hibakezelést, stb.
-
sonar
addikt
Hi,
Most izlelgetem ezt a nyelvet. De egy picit elakadtam. A feladat az lenne, hogy a megtalal() fv ha megtalálja a karakter-t akkor a visszatérő érték a pozició lesz. Ha meg nem találja meg a keresett karaktert akkor -1 -gyel kellene visszatérnie (de semmi esetre sem lehet 0 vagy pozitív érték)
def megtalal(szoveg,karakter):
i=0
x=len(szoveg)
while (x>=i):
if (szoveg[i]==karakter):
return i
i=i+1
return -1
print megtalal('Julietta & Romeo','x') -
Siriusb
veterán
Szia!
Pl. azért hasznos, mert átkonvertálja az adott objektumot string-é, így az ehhez a típushoz kapcsolódó függvényeket is használni tudod.
-
Yoru
csendes tag
Hali!
Nemrég kezdtem a Python tanulását és lenne egy kérdésem.
A str() string mire használható?pl.:
pi = 3.14159
print str(pi)Miért nem írhatom le csak így?
pl:
pi = 3.14159
print pi -
n00n
őstag
Nem jó így a ciklus. Most, hogy kiíratom a még az all_match-ben maradt meccseket, már látom, hogy azért áll meg, mert nem tud olyan annyi olyan párosítást választani a fordulóhoz, hogy különböző csapatok legyenek.
Pedig annyira nem lehet bonyolult, ez az oldal:
http://www.fixturelist.com/createalist1.phpEgy-két szóból legenerálja a listát. Kár, hogy nem lehet megnézni a forrását. ..
-
n00n
őstag
válasz
Jester01 #127 üzenetére
Kiegészítettem egy break-kel (illetve egy print-el, hogy lássam még mennyi csapat van vissza). Négy csapat esetén gyönyörűen elboldogul, többnél már viszont kiakad. Ötlet?
meccs_per_fordulo = len(teams)/2
fordulok = []
while len(all_match) != 0:
fordulo = []
torlendo = []
for meccsek in all_match:
if meccsek[0] not in fordulo and meccsek[1] not in fordulo:
fordulo.insert(0, ";")
fordulo.insert(0, meccsek[1])
fordulo.insert(0, meccsek[0])
torlendo.insert(0, meccsek)
if len(fordulo) == meccs_per_fordulo * 3:
fordulok.append(fordulo)
#Törlés ciklus:
for delmatch in torlendo:
all_match.remove(delmatch)
print("\n" + str(all_match))
break -
n00n
őstag
válasz
Jester01 #125 üzenetére
De n db csapatra kell megírni, nem pedig csak négyre sajnos.
Próbáltam írni rá egy módszert, de nem akar összejönni.
Az all_match-ben már benne vannak a meccsek. A teams-ben pedig a csapatokmeccs_per_fordulo = len(teams)/2
fordulok = []
while len(all_match) != 0:
fordulo = []
torlendo = []
for meccsek in all_match:
if meccsek[0] not in fordulo and meccsek[1] not in fordulo:
fordulo.insert(0, ";")
fordulo.insert(0, meccsek[1])
fordulo.insert(0, meccsek[0])
torlendo.insert(0, meccsek)
if len(fordulo) == meccs_per_fordulo * 3:
fordulok.append(fordulo)
#Törlés ciklus:
for delmatch in torlendo:
all_match.remove(delmatch) -
n00n
őstag
válasz
cousin333 #123 üzenetére
Köszi szépen. Nagyon egyszerű megoldás.
Viszont ennek a továbbgondolt feladatánál már elakadok.
Szöveg: Van négy (a példa miatt négy, lehet több is, tehát célszerű n db-ra megírni) darab focicsapat, hozzon létre egy tömböt/listát a lehetséges összes meccsről véletlen sorrendben, mely tartalmazza a visszavágókat is.
Eddig úgy meg vagyok.
A példaként vett 4 csapat tehát összesen 12 meccset játszik 6 forduló alatt, fordulónként kettőt. Generáljon egy új listát az elkészült összes meccs listából, mely a fordulókban lejátszott meccseket tartalmazza, fordulónként ; (pontosvesszővel) elválasztva egymástól. Értelemszerűen egy fordulóban egy csapat csak egyszer játszhat. A megértést segítve itt egy példa listarészlet:
fordulok = ([1,3], [4:2], ; , [3,2], [4:1], ; , [1,2], [3,4], ; , ... stb.)
Fogalmam nincs merre induljak. Ötlet?
-
cousin333
addikt
Feltételezem, hogy mondjuk az emberek nevű listában már minden beolvasott név szerepel. Ekkor le kell generálni az összes lehetséges permutációt, hiszen "Eszter köszönti Bélát", de kell egy "Béla köszönti Esztert" is. Ez alapból szépen sorba lesz rendezve, tehát meg kell keverni őket. A kód:
import itertools
import random
variaciok = list(itertools.permutations(emberek, 2))
random.shuffle(variaciok)A random.shuffle helyben keverget, tehát a bemenet és a kimenet egyaránt a variaciok nevű változó. Innen már csak le kell generálni a mondatokat, ami elég egyszerűen megy:
mondatok = [i[0]+' köszönt '+i[1]+' nevű ismerősének.' for i in variaciok]
Ezután ezt ki kell íratni a konzolra, fájlba... stb. Szerintem kb. ennyi. Ez működik 2, vagy akár 100 embernél is.
-
n00n
őstag
Miképpen oldanátok meg ezt a feladatot?
Van n darab emberünk, egy fájlból olvassuk be a nevüket, akik köszönnek egymásnak. Írjon egy programot, ami az alábbihoz hasonló kimenetet generál:
Béla köszönt Tamás nevű ismerősének
Eszter köszönt Béla nevű ismerősének
Béla köszönt Eszter nevű ismerősének
Tamás köszönt Eszter nevű ismerősének
Eszter köszönt Tamás nevű ismerősének
Tamás köszönt Béla nevű ismerőségnekA fájlbeolvasást nem kell megírnia. Tegyük fel, hogy az már csak kész van. Viszont úgy írja meg a programot, hogy a beolvasott adatok változhatnak (egyszer csak két ember, egyszer 10). Mindenki köszönjön mindenkinek, viszont véletlenszerűen.
Adjatok kérlek tanácsot merre álljak neki.
-
cousin333
addikt
válasz
privacy99 #119 üzenetére
Üdv!
A te példád alapján, de nem teljesen azt folytatva (szóval még dolgozni kell rajta), nekem ez jött ki. Hozzáteszem, hogy én Python 3.2.3-at használtam, ami nem teljesen kompatibilis a 2.7-es szériával (amit a kódod alapján te használtál). Szóval a kód:
# előregyártott fejléc a sorok egyes elemeihez
rekord = ['Kod', 'Repter', 'Terv', 'Indulas', 'Terminal', 'Megjegyzes']
# a fájl megnyitása olvasásra, ez a "with" szerkezetes megoldás a végén be is zárja azt, a fájl objektum neve (a példád alapján) f1
with open('d:\\text.txt', 'r') as f1:
# adatok beolvasása soronként, sorvégi újsor karakterek ("\n") levágása
# egy-egy sor szétbontása tabulátorokkal határolt elemekre
# könyvtár-listát hoz létre az elemekből a "rekord" nevű fejlécekkel
# az üres sorokat kihagyja
# 'Terminal': '1', 'Indulas': '05:59', 'Terv': '06:00'}
adatok = [dict(zip(rekord, i.strip('\n').split('\t'))) for i in f1 if i != '\n']
# teljes fájl beolvasva az "adatok" nevű listába
# példa az első elemre (adatok[0]):
# {'Megjegyzes': 'Felszállt', 'Repter': 'London Luton', 'Kod': 'W62201', ...
# 'Terminal': '1', 'Indulas': '05:59', 'Terv': '06:00'}
# az időkülönbségek számításához kell ez a könyvtár
from datetime import datetime as ido
# végignézzük az összes bejegyzést
for adat in adatok:
terv = ido.strptime(adat['Terv'], '%H:%M') # a "terv" egy időobjektum lesz a szövegből a megadott formátummal
teny = ido.strptime(adat['Indulas'], '%H:%M') # a "teny" egy időobjektum lesz a szövegből a megadott formátummal
kulonb = teny - terv # a két időpont különbsége (egy datetime.timedelta objektum)
adat['Diff'] = kulonb.total_seconds() / 60 # a differenciát hozzáírjuk (mp -> perc)
#megnyitunk egy másik fájl adatmentésre
with open('d:\\kimenet.txt', 'w') as f2:
# kiírjuk bele azokat az elemeket (a megadott adatokkal, tabulátorral elválasztva), amiknél az időkülönbség pozitív
[f2.write('\t'.join([elem['Kod'], elem['Repter'], str(elem['Diff'])]) + '\n') for elem in adatok if elem['Diff'] > 0]Vannak benne kommentek is, remélem azzal együtt érthető lesz. Ha egy sorban nincs várható időpont az a beolvasásnál nem baj, feltéve, hogy a tab-ok ki vannak neki hagyva. A számolásnál már gond lehet
, ott bele kell nyúlni a kódba valamiféle vizsgálattal.
-
n00n
őstag
Kis segítség kellene. A Main Window-n van egy gomb (addButton). Arra rákattintva megjelenik az AddDialog, ahol van kettő gomb (btn_ok és btn_cancel) és egy entry.
Ha az ok-ra kattintok ellenőrzi, hogy ki van-e töltve a mező. Ha nincs hibát ír. Viszont itt van egy kis gubanc. Ugye, ha úgy okézom le az ablakot, hogy nem adok meg a mezőben semmit, akkor hibát dob és nem zárja be az ablakot, így újabb lehetőség van megadni valamit. Viszont ilyenkor is lefut az AddDialog.run() alatti print. Aminek csak akkor kellene lefutnia, ha eltűnik az ablak, tehát van a mezőnek tartalm.Az alábbi kódban, ha úgy kattintok az OK-ra, hogy nem töltöttem ki mindent, akkor mégis miért jelenik meg a terminálban az „Ez az üzenet miért jelenik meg?” üzenet?
Main Window kódrészlet:
def on_addButton_clicked(self, widget, data=None):
AddDialog = AddDialog()
AddDialog.run()
print "Ez az üzenet miért jelenik meg?"AddDialog kódrészlet:
def on_btn_ok_clicked(self, widget, data=None):
#Minden ki van töltve:
if entry.get_text() != "":
name = self.entry.get_text()
self.destroy()
else:
self.hibaCimke.set_text(_("Nincs minden kitöltve!"))
def on_btn_cancel_clicked(self, widget, data=None):
self.destroy() -
privacy99
senior tag
Sziasztok!
Belemerültem egy python feladatba, el is jutottam egy darabig de sajnos innen nem tudok továbbhaladni, mert nagyon kezdő vagyok még a nyelvben. Ez a program egy menetrendből szed ki sorokat feltétel szerint. A feltétel hogy a járat Londonba menjen, és késve induljon, tehát a tervezett és várható indulási időpont eltérjen(ugye az utóbbi legyen később) . Az adatok táblázatszerűen vannak rendezve egy fájlban, tabbal vannak elválasztva, és így néznek ki:Járatszám Hova Tervezett Várható Term. Megj.
W62201 London Luton 06:00 05:59 1 Felszállt
DL9694 Amsterdam 06:15 06:17 2A Felszállt
LH1343 Frankfurt 06:35 06:42 2A FelszálltÖsszesen 50 ilyen járatom vana fájlban.
Jelenleg a kódom itt tart:
import sys
import os.path
hossz = len(sys.argv)
if hossz < 2:
print "Keves parameter!"
if not os.path.isfile(sys.argv[1]):
print "A megadott inputfajl nem letezik!"
f1 = open(sys.argv[1], 'r')
lines = f1.readlines()
f2 = open('london.txt', 'w')
for text in lines:
text = text.rstrip(' \t')
l = len(text)
if (l > 0):
f2.write(text)
f2.close()Tehát csak a keret van meg, az inputfájlt majd a program futtatásakor kell megadni, és ha minden igaz ez kiszedi a tabokat és a london.txt-be írja.
A kimenetnek úgy kéne kinéznie, hogy:BA865 London LHR 9
Tehát járatszám hova megy hány percet késik
Ui.: A várható időpont nem mindenhol szerepel, és a járatszám 5 és 7 karakter közötti.Előre is nagyon szépen köszönöm a segítséget!
-
n00n
őstag
A combox.get_text() függvény nem kezeli az ékezetes karaktereket. Próbálkoztam unicode()-al, utf8-cal, de semmi. Valakinek ötlet?
-
n00n
őstag
Van egy GtkComboBoxText-em és nem tudok az istenért se rájönni, hogy hogyan tudnék belőle minden elemet törölni. Ötlet?
-
n00n
őstag
Kellene írnom egy kisebb python programot, aminél célszerű lenne adatbázisban tárolni az adatokat. Milyen offline adatbázist javasoltok hozzá? (Lehetőleg multiplatform legyen).
-
Siriusb
veterán
válasz
mate0023 #104 üzenetére
Szia!
Szerintem próbáld meg átalakítani a másdik példát.
-
mate0023
tag
Sziasztok
Érettségire készülök python nyelven.
Abban szeretnék segítséget kérni,hogy hogyan tudok egy 90 számból álló listát a legegyszerűbben 15X6-os tördelésben a képernyőre íratni.
Csak nagyon hosszan tudnám megoldani, de biztos van egyszerűbb módszer, tudnátok segíteni ?
Üdv. Máté -
Siriusb
veterán
Úgy látom windowst használsz.
Indíts el a Parancssort (azt hiszem így hívják), vagy a Futtatásnál írd be, hogy cmd. Itt kapsz egy fekete ablakot. Ide írd be a python parancsot.
Ha jól tudom, windowsnál a py kiterjesztésű fájlokat automatikusan a pythonnal társulnak, tehát fájlkezelőben dupla kattintással is indulnia kellene.Mégegyszer: amit te láttál, azt nem a python shell-be írták be (nem volt elindítva a python), hanem egy terminálba.
-
-
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.
-
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?
-
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?
-
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?A unicode stringeket definiáld unicode típusúnak, továbbá kezdd ezzel a file-odat:
# coding=utf8Egyébként javaslom, hogy unicode karaktereket tartalmazó dict. kulcsok helyett oldd meg máshogy a feladatot.
-
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-8Köszi előre is a segítséget.
-
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ó. -
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.
-
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
-
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 ismit csinálok rosszul?
-
ArchElf
addikt
válasz
bucsupeti #86 üzenetére
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
-
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?
-
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
) 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.
)
-
nicknev
csendes tag
-
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.
-
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. -
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() -
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.
-
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!
-
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. -
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] -
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())) -
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_invVagy még jobban:
def inverse(dico):
return dict(zip(dico.values(), dico.keys()))Javaslom, próbáld megemészteni ezeket a verziókat is.
-
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_invEnné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) -
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
-
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 gondolokA 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 -
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 visszaA 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
-
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?
-
Lacces
őstag
Sziasztok!
Valaki ért a Komodo Edithez? Hogyan lehet elérni, hogy futtassa a python kódot?
-
nicknev
csendes tag
Na megint nekem van problémám
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 unpackA 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:", thirdMi lehet baja?
Win7et használok, és 2.7-es pythont
Köszi a segítséget előre is -
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 -
gela90
csendes tag
Sziasztok!
Kezdo kerdesem lenne, ismetlodo loopot szeretnek csinalni a "szamologephez" mert ha elvegzett egy szamolast kilep, vissza kene ugrania az elejerehttp://img109.imageshack.us/img109/2690/asdyg.png
-
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
-
mzprox
aktív tag
-
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
-
mzprox
aktív 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.
-
mzprox
aktív tag
Üdv,
lenne egy (szerintem) egyszerű fealadat amihez segítséget kérnék, hátha erre téved valaki:
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
-
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?
-
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 nyelvbenchoices :=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 cuccAmi 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 = 12def calculate($prom);
echo $prom+50
Inkább így kellene:
def calculate(prom):
return prom+50calculate();
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...
-
kopasza
csendes tag
Kernem valaki segitsen ezt kaptam vizsgapeldarah javitsam ki belole a hibakat es komentaljam a program mukodeset es nem nagyon megy
segitene valaki ?
import GUI, menu
choices :=array("Subotica";t"Palic");
index == appuifw.popup_array(choicess: u"Select:");
$prom = 12;
def calculate($prom);
echo $prom+50calculate();
if index = 0:
appuifw.note(u"Subotica");
elseif index = 1;
{
appiufw.note(u"Palic")
} -
altec
csendes tag
Hello mindenkinek!
Egy olyan programra lenne szükségem, ami ebből:
Csanak Dávid
12
20
Borbély András
27
Pál Balázs
26
13
18ilyet ilyet tud csinálni:
Csanak Dávid 32
Borbély András 27
Pál Balázs 57A nevekhez pontszámok tartoznak. Csak az van itt, akinek legalább egy pontszáma van, akinek nincs pontja, az nem szerepel a fájlban. Az adatokat fájlból olvassa be. Az inputfájl a program parancssori paramétere. Ha nincs paraméter, hibát írjon ki.
nem nagyon vágom a pythont (és a többi nyelvet se)!
Nagyon örülnék, ha segítene vki, még mára kellene.
-
ZeUS2140
aktív tag
Sziasztok.
L2j server-t babrálok, modolok (100% legális...) és a quest-ek py-ben vannak megírva.
Elég jól átlátom és módosítgatom, igazítom a saját igényeimhez, de egy résznél elakadtam.
Szóval röviden, hogy felkeltsem a kedveteket:
Adott egy quest, ahol 5 dolog választható. Van 5 változó, amit a meghívott html file-ok választanak ki. Pl egyik html file-ban a linkre kattintva SK paraméter jön vissza.
Ezt az elején a definiálásnál leírt SK : [.........] rész tartalmával fel is tölti.
Utána a SK változó tartalmával lefut 3-4 sql írás és kész.Na a problémám: nekem a 3-4 sql-be írás előtt, közvetlen után kellene egy SK változóban lévő paraméter alapján egy IF ellenőrzés.
Ezt akár milyen formában írom be, már a py file elején megáll.Vagy az IF részt tolom el, de hibát nem ír sehol, szóval durva hibát nem követek el.
Aki tudna segíteni írjon már rám msn-ben kérem. Küldök egy file-t, elküldöm, hogy mit szeretnék, és hogy csináltam és csak azt kellene megnézni, hogy ez így jó-e, miért nem jó és esetleg egy hogyan kellene.
Eddig így próbáltam: ha SK jön vissza html-ből, akkor SK első változója a newclass = 33
Az sql módosítások elé beírtam:
if newclass = 33 :
st.giveItems(620,1)Szóval egy sima változó alapján 5 IF rész kellene nekem.
Aki tud, akar segíteni előre is köszönöm. PM-ben, vagy MSN-en megtalál.
MSN: zeus2140@hotmail.com -
Sanyix
őstag
hogy lehet ebben a fosban ezt a pyxml libet életrekelteni? Mert az az ősrégi verziós win32-es telepít azt írja hogy nincs python 2.4-em (igen mert 2.6 van). A setup.py-vel buildolva meg mindig elszáll azzal hogy unable to find "vcvarsall.bat".
-
RedAnt
aktív tag
a=Cube
Így zárójelek nélkül "a" a Cube osztályra fog mutatni, ahelyett hogy egy új objektumot inicializálnál.
Helyesen:def __init__(self, x=0, y=0, size=0)
...
a = Cube()vagy
a = Cube(0, 0, 0)Érdemes még az osztály definiálásánál megadni az objectet szülőosztálynak:
class Cube(object): -
sekli
addikt
heló,
ugyan rettentően kihalt a topik, én mégis megpróbálkozom egy rém buta kérdéssel, egyszerűen csak nem értem, hogy miert nem jó, pedig annyira egyszerű dolog:
van egy osztály:
import random
class Cube():
def __init__(self,x,y,size):
self.x = x
self.y = y
self.size = size
cubes = []( két dimenziós kocka, nincs harmadik koordinátája, ez most ilyen
)
feltoltok egy tombot elemekkel:
for i in xrange(0,5,1):
a=Cube
a.x=random.randrange(320)
a.y=80+random.randrange(160)
a.size=(a.y-80)/4
cubes.append(a)
print cubes[i].x #itt ki is irja szepen mindegyik (kulonbozo x-et)es ezek mar nem mukodnek, egyik sem:
for kocka in cubes:
print kocka.xmindig a 4-es indexu (utolso) elemet irja ki, xrange()-el sem megy, sot, igy sem:
print cubes[2].x
-
cousin333
addikt
Na, megint megkísérlem feldobni a topikot. Szóval volt egy problémám, amit szerencsére már sikerült megoldani.
Adva van egy függvény, az egyszerűség kedvéért ez (a lényeg a több argumentum):
>>> def osszeg(a,b):
return a+bAdott emellett két (nem feltétlenül, de most jelenesetben) egyforma hosszúságú lista:
>>> a = [1,2,3,4]
>>> b = [5,6,7,8]A cél az volna, hogy párosával hívjuk meg velük az osszeg függvényünket. Erre egy megoldás lehet a map függvény használata.
>>> x = list(map(osszeg, a, b))
>>> print(x)
[6, 8, 10, 12]Látható tehát, hogy a kívánt eredményt kaptuk. De mi van akkor, ha nem ilyen listáink vannak, hanem tuple-jet tartalmazó lista, amiket például így kaphatunk:
>>> c = list(zip(a,b))
>>> print(c)
[(1, 5), (2, 6), (3, 7), (4, 8)]A kérdés, hogy ezt hogyan rakhatjuk be a map függvényünkbe. Nekem úgy tűnik, sehogy, helyette list comprehension-t kell használni, valahogy így:
>>> d = [osszeg(i,j) for i,j in zip(a,b)]
>>> print(d)
[6, 8, 10, 12]A kérdés azonban nem a-ra és b-re vonatkozott elsősorban, hanem c-re, tehát egy tuple-kből álló listára. Mint mondtam, a map-al nekem nem sikerült a list comprehension-nal (ennek mi a magyar neve?) viszont igen. Így:
>>> e = [osszeg(i,j) for i,j in c]
>>> print(e)
[6, 8, 10, 12]Köszönöm, csak ennyit akartam mondani, hátha valakinek segítségére voltam.
ui: Tényleg ennyire nem használja senki ezt a programnyelvet?
Lehet, hogy kellene írnom valami ismertetőt róla, bár én magam sem vagyok egy guru. De ebben a nyelvben éppen az a jó, hogy egyszerűen megtanulható, könnyen használható már alapszintű ismeretekkel is...
-
cousin333
addikt
válasz
zotya7895 #37 üzenetére
Üdv!
Nem kell, mindenesetre nem árt. A legfontosabb, hogy magyar nyelvű segítséged legyen, a Pythonhoz (is) léteznek magyar nyelvű könyvek. Az utasítások angolul vannak a programokban, így az angoltudás megkönnyíti a memorizálásukat és a használatukat, de nem követelmény, elég, ha bebiflázod.
Ami még fontos, az az angol szemlélet: magyarul max. kommentezni szabad,magyar változónevek határesetet képeznek, a lényeg az angol karakterek használata (ékezetmentesség).
-
zotya7895
csendes tag
Helló!
A programozáshoz kell angol tudás vagy ha elindulsz a programozás felé akkor megtanulsz annyit hogy elég legyen?
részben ide vág -
labuwx
tag
Sziasztok!
Valaki legyen szíves megmondani, az osztási maradék függvényét. -
cousin333
addikt
"A fordítással a compile-ra gondoltam, exe-t gyártani a forrásból"
Értem én, de mondom, hogy erre nincsen szükség, ha egyszer fenn van a Python futtatókörnyezet.
"És milyen fejlesztőkörnyezetet tudnál ajánlani, aminek valamilyen jól használható, a Microsoft Visual C-hez hasonló kialakítású kezelőfelülete van ?"
Igazság szerint nem ismerem különösebben a Visual C-t. Alapfokúbb dolgokhoz szerintem jó a "gyári" környezet, esetleg megtámogatva egy Notepad++-szerű alkalmazással. Komolyabbakhoz valóban rendelkezésre áll az említett Eclipse + PyDev. Működni működik, mert próbáltam, de nekem nincs rá szükségem.
"De elöször akkor a python.org-ról a "Python 2.6.2 Windows installer (Windows binary -- does not include source) ", meg a Java Runtime enviroment kell, nem ?"
Igen. A Java az alap Pythonhoz nem szükséges és szerintem az Eclipse is tartalmazza, ami neki kell.
"Én csak ebből gondolom, hogy menne Windows XP-n is, egyébként nem értek a Pythonhoz."
Letöltöd a win-es telepítőt és felteszed, onnantól kezdve mennie kellene, mert abban minden benne van, ami kell. A 3-assal azért nem volt jó, mert az visszafelé nem kompatibilis.
-
atesss
addikt
válasz
cousin333 #31 üzenetére
A fordítással a compile-ra gondoltam, exe-t gyártani a forrásból (ami jelen esetben nem is egy fájl, hanem több mappában jópár fájl; de project fájl meg nincs ami Visual C-nél lenne
).
És akkor ehhez a forráshoz a régebbi változatú Python fog kelleni ?És milyen fejlesztőkörnyezetet tudnál ajánlani, aminek valamilyen jól használható, a Microsoft Visual C-hez hasonló kialakítású kezelőfelülete van ?
Vagy ponthogy abban bonyolultabb lenne így elsőre ?Találtam egy ilyet: [link]
Itt Eclipse + PyDev plug-in-ról írnak, de itt van egy csomó más SDK neve is: [link]
De elöször akkor a python.org-ról a "Python 2.6.2 Windows installer (Windows binary -- does not include source) ", meg a Java Runtime enviroment kell, nem ?A Python meg interpretált nyelv, nem kell feltétlenül lefordítani...
"This program has been tested with python2.4 on both linux and OSX (in theory it should work on any system that has python2.4+ installed). "
Én csak ebből gondolom, hogy menne Windows XP-n is, egyébként nem értek a Pythonhoz. -
atesss
addikt
Üdv !
Egy kis segítségre lenne szükségem:
Találtam egy cuTorrent nevű kiegészitést a uTorrenthez (illetve a WebUI-jához), amivel egy bat fájlon keresztül le tudnám állítani a seed-elést, ha elérem a napi 5GB-os feltöltési limitet (az adatforgalmat figyelő program már megvan).
Hiába keresgéltem, csak Pythonos forráskódot találtam:
[link] és letöltgető innen: [link]
Na ezt le kéne fordítani még, Windows alá...
Próbálkoztam is vele, de amilyen fejlesztői környezetet letöltöttem hozzá (a python.org -ról), azzal nem sikerült boldogulni, pl. rögtön sytax errort dobott.
Tudnátok ajánlani valamilyen grafikus felületű (igazából a Visual Studiohoz hasonló lenne a legjobb, mivel abban tanultam C-t ) SDK-t ? Meg valami tutorial is jó lenne, hogy hogyan is működik ez.Vagy ha valaki meg tudná tenni nekem, hogy lefordítja a programot Windows alá, és elküldi nekem, azt nagyon megköszöném.
Mégiscsak egyszerűbb lenne, mert ha valakinek fent van az SDK, és tudja is használni, akkor kb. 1 perc alatt le lehet fordítani gondolom, nekem meg akár több óra is lehet, mire tényleg kiismerem, hogy hogyan is kellene ezt csinálni.
-
cousin333
addikt
válasz
zotya7895 #28 üzenetére
Látod, most megfogtál
Olyan könyvre gondolok itt elsősorban, ami a programozás folyamatával és nem konkrétan egy adott programozással kapcsolatos. Tudom, hogy léteznek ilyen könyvek, de nekem személyesen még nem volt hozzájuk szerencsém.
Ezt mondjuk nem ismerem, de jónak tűnik, ilyesmire gondoltam.
Az "először"-t inkább visszavonom, legalábbis "párhuzamosan"-ra módosítanám. Egy olyan nyelvvel kellene kezdeni, mint a Python, mert egyszerű és könnyen átlátható. Ennek gyakorlati eredménye is van (a program, amit írsz), és mindjárt példákat látsz az egyes témákra, nem csak a száraz elméletet. Általában a jobbfajta, az egyes programozási nyelvekkel kapcsolatos könyvek is nyújtanak némi általános programozási ismereteket.
-
cousin333
addikt
válasz
zotya7895 #24 üzenetére
Szerintem az ilyesmit nem lehet elég korán kezdeni. Esetleg érdemes lehet alapvetően a számítógépek működésével, és magával a programozással (tehát nem egy konkrét nyelvvel) kapcsolatos könyveket is olvasgatni, de a programozói gondolkodást el lehet sajátítani egy programnyelven keresztül is (valamilyen szinten).
Kezdő nyelvként a Python szerintem ideális, mert egyszerűen el lehet vele indulni (minden benne van, ami kell, könnyen telepíthető, a kód akár soronként futtatható), logikus, egyszerű, és rákényszeríti a felhasználót a szép, strukturált kódra. Mindemellett kellően komplex dolgok is megvalósíthatók vele a későbbiek folyamán.
Ha valami kérdésed van, tedd fel nyugodtan, ha tudok, válaszolok rá (én sem vagyok egy guru, de majd igyekszem).
-
cousin333
addikt
válasz
zotya7895 #21 üzenetére
Üdv!
Elég nagy a pangás ebben a fórumban, szóval nézd el nekem , hogy csak most válaszolok. Szóval előbb a hivatalos oldalról le kell tölteni a legfrissebb verziót (ami jelenleg a 3.0.1-es). Ezt feltelepíted, és elindítod az IDLE nevű környezetet. Innentől kezdve már írogathatod is a programokat. A mikéntről olvashatsz magyar nyelvű könyvet, amiben az alapoktól indulnak.
Amúgy leginkább programot, vagy játékot készíthetsz vele. Honlapot is lehet, csak ahhoz kevés lesz, más nyelvek is kellenek mellé (sőt, inkább azok).
Szerintem a futtatókörnyezettel meg az ajánlott könyvvel el lehet sajátítani az alapokat, onnan meg már tudni fogod, merre szeretnél tovább menni.
-
zotya7895
csendes tag
kétszer küldtem el
-
zotya7895
csendes tag
Sziasztok!
Én is most ismerkedek a python nyelvel és nagyon kezdő vagyok ugyanis még a program sincs meg amivel tudnák alkotni, és abban a programban konkréten mit lehet csinálni? Játékot vagy programot vagy weboldalt lehet vele szerkeszteni?
És hol kezdjem a tanulást? valami könyvet tudtok ajánlani? én ugyanis már néztem az előttem hozzászóltakat és ott is volt egy pár könyv meg doksik meg minden, de ezeket rágjam át?és utána kezdjek programozni? Ti hol kezdtétek? Könyvet olvastatok először és utána programoztatok? Válaszotokat előre is köszsönöm
-
zotya7895
csendes tag
Sziasztok!
Én is most ismerkedek a python nyelvel és nagyon kezdő vagyok ugyanis még a program sincs meg amivel tudnák szerkeszteni a nyelvet, és abban a programban konkréten mit lehet csinálni? Játékot vagy programot vagy weboldalt lehet vele szerkeszteni?
És hol kezdjem a tanulást? valami könyvet tudtok ajánlani? én ugyanis már nézztem az előttem hozzászóltakat és ott is volt egy pár könyv meg doksik meg minden de ezeket rágjam át?és utána kezdjek programozni? Ti hol kezdtétek? könyvet olvastatok először és utána programoztatok? Remélem minden kérdésre választ fogok majd kapni
-
cousin333
addikt
válasz
cousin333 #18 üzenetére
Ennyire ne tépjétek magatokat...
Amúgy alant látható a saját megoldásom, hátha az meghozza a vitakedvet...
fileName, cnt = input('Fajl neve? '), int(input('Oszto? '))
with open('d:\\' + fileName + '.txt', 'r') as iF:
allData = [line.strip('\n').split('\t')[1:] for line in iF]
header, datas = allData[0], [[float(x) for x in elem] for elem in allData[1:]]
with open('d:\\' + fileName + '_avg.csv', 'w') as oF:
oF.write(';'.join(header)+'\n')
for x in range(len(datas)//cnt):
s = datas[x*cnt:(x+1)*cnt]
oF.write(';'.join([str(round(sum([elem[i] for elem in s])/len(s))) for i in range(len(header))])+'\n') -
cousin333
addikt
Na, akkor kissé pörgessük meg a topikok...
Szóval, lenne egy feladatom. Adott egy szöveges fájl az alábbi felépítéssel:
a b c d
1 2 3 4
5 6 7 8
9 8 7 6
5 4 3 2Tehát van egy x hosszúságú fejléc, és alatta soronként azonos számú szám. A fejléc az első sor, a számsorokból száma tízezres nagyságrendű (egy sorban kb. 10 elem található, de ez az érték - elvileg - minden sornál fix). A sorok elemei között tabulátor karakter található.
A feladat egy olyan csv fájl létrehozása lenne, ami az említett fejléccel kezdődik, megadott számú sort átlagol és kiírja az eredményt az új fájl egyetlen sorába. Tehát, a fenti példánál maradva a kiírt fájl ez lenne (ha a megadott sorszám mondjuk 2):
a b c d
3 4 5 6
7 6 5 4Mert a 3 az az eredeti fájl első két sora első elemeinek az átlaga: (1+5)/2, a 4 az a másodiké: (2+6)/2 és így tovább, remélem érthető. Ha a számsorok száma nem egésszámú többszöröse az átlagolás számának, akkor a kimaradó elemek nyugodtan elhagyhatóak. A programnak nem kell hülyebiztosnak lennie, tehát nem kellenek bele mindenféle extra ellenőrzések, kivételkezelések, meg ilyesmik.
A programnak a feldolgozandó fájl nevét, és az osztások számát (hogy hány soronként átlagoljon) kellene bekérnie a futás során. A kimeneti fájl neve nyugodtan lehet a bemeneti fájl módosított verziója.
A cél az lenne, hogy egy minél egyszerűbb, minél hatékonyabb és minél "Pythonosabb" kód szülessen.
+1 feladat: Képes legyen felismerni, ha egy számsor esetleg a kelleténél kevesebb elemből áll, és kijelezze a sor számát, ahol ez először előfordul.
-
D.R.O.
tag
válasz
nickwearby #16 üzenetére
Ha az a baj hogy rákattintsz és egyből eltűnik, akkor tegyél a végére egy inputot, amely egy billentyű leütésre vár. Akkor nem fog eltűnni egyből, csak amikor már jól megnézted mit csinált a programod.
-
cousin333
addikt
válasz
nickwearby #13 üzenetére
esetleg:
python fájlneve
python.exe elérési úttal fájlneveVagy használd az IDLE-t, és onnan nyisd meg a py fájlt, majd F5.
-
nickwearby
tag
Helló,
windows XP alá tettem fel a Python 2.6.1-os verziót.
A .py végződésű programokat dupla kattintással le tudom futtatni,
de mivel rögtön bezárul, ezzel nem sokra megyek.Viszont a python.exe futtatásakor nem tudom, mit kellene beírni, hogy onnan futtassam,
már sok mindent próbáltam amit a neten írtak, de mindenre hibát jelez.Pl. ezeket próbáltam:
python fájlneve.py
teljes elérési útvonal python fájlneve.py
teljes elérési útvonal mindenféle változatban python fájlneve.py
fájlneve.py
Többnyire sytax errort ír ki.
Van valakinek ötlete, hogy mi baja lehet?
Már átírtam a Path változót, a registryt, több nem jut az eszembe, hogy mit kéne.
A megnyitandó fájlt betettem a python főkönyvtárába, úgy próbáltam.Előre is kösz a választ:
nick
-
raczger
őstag
üdv
most ismerkedek a nyelvvel, futtatni is csak nagy nehezen sikerült (persze a legalapvetőbb dolog soha sincs leírva
), megtaláltam ugyan hogyan kellene de nem ment, de mindegy, mert máshogy megoldottam
szóval, van amikor azt írja ki, hogy: syntax error: unexpected end of file
a másik pedig, mikor erre írja ki a hibát: elif n >= 3 unexpected token stb...
esetlegesen mik lehetnek a hibalehetőségek, nekem nem sikerült eddig még rájönnöm
előre is köszönöm -
D.R.O.
tag
ÉÉésss ittvan a 3-as verzió. Szabadjára engedték.
-
cousin333
addikt
No, a megoldás úgy tűnik az enumerate() függvény használata, ami tuple-ket ad vissza. Tehát pl. két mód a használatára (az előbbi példánál maradva):
1.
for i,elem in enumerate(gyumolcs):
print elem # ez lesz a gyümölcsnév
print i # ez lesz az aktuális sorszám2.
for elem in enumerate(gyumolcs):
print elem[1] # ez lesz a gyümölcsnév
print elem[0] # ez lesz az aktuális sorszám -
cousin333
addikt
No, akkor elindítanám a felemelkedés útján ezt rendkívül aktív topikot...
Tehát a kérdésem:
Van egy listám, mondjuk:
gyumolcs = ['alma', 'körte', 'banán', 'szilva', 'barack']
Ezen mennék végig egy for ciklussal:
for elem in gyumolcs:
print elemNamost, hogyan lehetne (menet közben) megmondani, hogy éppen hanyadik elemnél járok a listában? Az, hogy felveszek mondjuk egy count változót, amit folyamatosan inkrementálgatok, az triviális. Még esetleg az is belefér, ha az index() - gyumolcs.index('banán') - metódussal lekérem a sorszámot, de ezzel baj van, ha több 'banán' is szerepel a listában... Nincs erre valamilyen célszerűbb, egyszerűbb módszer? Lehetne persze így is:
for i in range(len(gyumolcs)):
print gyumolcs[i]Ebben az esetben az i lesz a sorszám, de ez a megoldás jóval kevésbé elegáns, nem vall a Pythonra.
-
D.R.O.
tag
-
vipisti
tag
Még 1-2 forrás a Pylons keretrendszerhez:
- WSGI
- Pylons Cookbook
- The Pylons Book -
vipisti
tag
Figyelemfelkeltőnek megemlítem, mire használtam Pythont régebben. A PyWin32 egy COM-os interfészt ad, így néhány soros (tényleg kb 10 sor) kóddal olvashatunk Excel fájlokat. Hasznos lehet, ha többszázat kell feldolgozni...
-
cousin333
addikt
Remek, hogy megnyílt ez a topik, már én is gondolkoztam azon, hogy kellene egy. Viszont most éppen se kérdésem, se kérdés...
Kissé mondjuk meglep, hogy ilyen gyér itt a forgalom. Ami a Python nyelvet illeti, mindenkinek csak ajánlani tudom. Nyilván nem való mindenre, de sok mindent képes egyszerűen, hatékonyan és logikusan megoldani. Ami "érdekessége", hogy használható szkript módban is, tehát egy sor, egy parancs, ami azonnal végre is hajtódik (kivéve persze az if, for, while és egyéb nyalánkságokat), vagy éppen írhatunk egy komplett programot sima Wordpad-ben is.
Amire felhívnám a figyelmet! A 2.5.2-es verzió szép és jó, kellően kiforrott. De 1-2 hónapon belül elkészül a 3-as változat (más néven Python 3000), ami visszafelé nem kompatibilis módon jópár dolgot megváltoztat. Szóval aki most kezdené el tanulni, az szerintem inkább az utóbbival tegye, hogy szokja... Pillanatnyilag a beta 3 érhető el Linux, és a beta 2 Windows alá. Néhány változás a 2.5.2-höz képest: [link]
-
mm00
aktív tag
Végigcsináltam a könyv első 30 oldalát meg kipróbálgattam az ablakos dolgokat a vége felé. Szimpatikus dolog. Sok dolgot lényegesen egyszerűbb elvégezni, mind C vagy C++ba. Felépítésre első ránézésre kicsit elüt a "népszerű" nyelvektől.
Körülnéztem a gépen és találtam hoszonvalamennyi könyvet. Van játék programozás, szerver-kliens programozás, [link]-en keresztül webes fejlesztés, adatbázis kezelés stb...
Szóval a lehetőségek határa majdnem végtelen!
-
Xelo
addikt
Üdvözlet mindenkinek!
A témát azért nyitottam hogy a címben megnevezett programozási nyelvet kitárgyaljuk, illetve segítséget nyújtsunk azoknak akik kérnek (első vagyok e sorban).
A Python egy magas szintű objektum-orientált programozási nyelv, ami némileg hasonlít egyes szkriptnyelvekhez (Perlhez, Scheme-hez, TCL--hez), illetve más nyelvekhez is (Java, C). Fő előnye hogy "könnyen" (khm
) tanulható, komoly alkalmazások fejlesztésére is alkalmazható, sőt rendkívül hatékony.
Főbb előnyei:
hordozható, integrálható, viszonylag egyszerű, nagyteljesítményű, dinamikus, s nyílt a forráskódja.Python-ról magyarul:
[Wikipédia]
[Python.hu]
[Python oktatás]
-
[Python 2.5.2 Windows operációs rendszerre]Hogyan kezdjünk hozzá a tanulásához?
Nehéz lenne okosat mondanom, ugyanis én se vagyok a programozás nagyöregje, DE úgy látom jó úton haladok. Gérard Swinnen : Tanuljunk meg programozni Python nyelven c. könyvét nagyon ajánlom, ami ingyenesen letölthető a python.free-h.net oldalról. E mellé pedig érdemes beszerezni Brad Dayley: Python zsebköny c. csodáját, ami sok hasznos Python programrészletet foglal magában.[ Módosította: Viktor0610 ]
Új hozzászólás Aktív témák
- EA Sports WRC '23
- Magga: PLEX: multimédia az egész lakásban
- Okosóra és okoskiegészítő topik
- Hobby elektronika
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Tudományos Pandémia Klub
- Filmvilág
- Óvodások homokozója
- sziku69: Fűzzük össze a szavakat :)
- gban: Ingyen kellene, de tegnapra
- További aktív témák...
- AKCIÓ ÚJ Bontatlan Macbook Pro 16 M4 Pro 14CPU/20GPU 24GB/512GB SSD Magyar billent Azonnal átvehető.
- Lenovo ThinkPad P15 Tervező Vágó Laptop -50% 15,6" i7-10850H 64/512 QUADRO T1000 4GB
- Lenovo ThinkPad P15 Tervező Vágó Laptop -50% 15,6" i7-10850H 32/512 QUADRO T1000 4GB
- EJJ! Dell Latitude 7330 -65% "Kis Gamer" Üzleti Profi Ultrabook 13,3" i5-1245U 16/256 FHD IRIS Xe
- Wilbur Smith könyvek (15 db) egyben
- BESZÁMÍTÁS! MSI B550 R7 3700X 16GB DDR4 512GB SSD RTX 3060Ti 8GB Rampage SHIVA Seasonic 650W
- MacBook felváráslás!! MacBook, MacBook Air, MacBook Pro
- Honor X7a 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Intel Core i7 4790 4mag 8szál processzor garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest