Új hozzászólás Aktív témák
-
cousin333
addikt
válasz
cousin333
#797
üzenetére
Ha már a végén a térképet emlegettem: ez azért fontos, mert a "teljes Pythont" úgysem fogod megtanulni, csak azt a részét, amit használni fogsz. Ezért kell azt is látni, hogy milyen globálisan használható funkciók és trükkök vannak, amiket te is felhasználhatsz a saját kódodhoz, programodhoz.
Szerencsére a Python egy jól összerakott nyelv és az efféle alapelvek szépen összekapcsolódnak egy egésszé: Pl. vannak az iterálható elemek (iterable) mint pl. a lista, a set vagy a sztring, meg vannak az iterátorokat "fogyasztó" funkciók, mint a for ciklus a zip, a min... stb. Ezért van az, hogy egy listában végigmehetsz az elemeken, vagy kiírathatod a legnagyobb elemet, és ezért van az is, hogy a for ciklus végigmegy a listán (az elemeken) meg használható a sztringre is (ott a karaktereken megy végig).
Ami még kimaradt az előző felsorolásomból, az az objektum-orientáltság, azon belül is az öröklés (Super considered super!), illetve mondjuk az osztályoknál a "dunder" metódusok:
__init__, __add__, __next__stb. De a @property dekorátor is nagy királyság, egy Java-s ember biztos értékelné őket. Ehhez kapcsolódva még egy zseniális videó az osztályokról: Python's Class Development Toolkit
. Ez sokat segíthet kezdőknek is, hogy jobban megértsenek olyan fogalmakat, mint a staticmethod. -
cousin333
addikt
Igen, a Python3-ban egyféle int típus van, ami gyakorlatilag tetszőleges méretű számot képes kezelni. Ha pedig szükség van a hosszakra - például egy 16 bájtos összetett struktúrát kell értelmezni -, akkor ott a beépített struct vagy a nagyszerű bitstring modul, amivel használhatsz 23 bites előjel nélküli egész számokat is, ha éppen az kell neked, vagy igazi, egy bites boolean-t (vagy többet). Mindezt kicsi indiánnal vagy naggyal (endianness).
-
axioma
veterán
válasz
cousin333
#797
üzenetére
+1.
Egyebkent en pl. a prog.versenyek miatt, az egyik csapatversenyes tarsam hatasara pythont hasznalni, 10+ ev java(SE) ipari tapasztalat utan, mert az hala'l korulmenyes volt a netto algoritmusok de altalaban jol osszetett adatstrukturak kezeleseben... es most forditott irany kovetkezik, lehet hogy a ceghez fog beszivarogni a python a fejlesztesbe - igaz, ahhoz sokat kell me'g megismernem belole, mert most pl. me'g ebben nem irtam kulon osztalyt, se grafikus feluletet. De tudom hogy van es tuti vagyok benne, hogy erdemes megvizsgalni minimum, hogy mi a csere egyenlege.
A peldad tok jok
Errol van szo! Nem kell az adminisztracioval bajlodni. Masik kedvencem ezugyben (mondjuk az iparban mar velemenyesebb, de ott meg nem fog ilyen igeny elofordulni) az hogy nem kell az int-ek bithosszaval foglalkozni... -
cousin333
addikt
A programozási nyelvek (pl. Python) tanulásának egyik nehézsége, hogy már a legelején kompromisszumokat kell kötni: hiszen "minden mindennel összefügg", nem lineáris a folyamat, így nehéz eldönteni, hogy egy adott ismeret megtanulása túl korai-e. Például a típusoknál van egész meg lebegőpontos szám, sztring meg lista. De igazából mindegyik egy osztály, aminek vannak pl. metódusai, amiket szintén nem árt ismerni. A kérdés, hogy mennyire mélyen kell belemenni ennek a magyarázatába mindjárt a legelején.
Véleményem szerint a tanulás során az a fontos, hogy meglegyenek a stabil alapok és fogalmak:
- Python telepítése
- interaktív mód, "fájl-mód" használata
- típusok ismerete, néhány metódussal
- hasznos gyári függvények megismerése (print, type, int, input, range, len, zip)
- utasításszervezés: ciklusok (while, for) és feltételes elágazások (if, else)A fenti ismeretekkel már el lehet boldogulni és hasznos programok készíthetők. Ezek tanulásakor viszont kiemelten fontosnak tartom - különösen a Python esetén -, hogy a helyes használatot sajátítsuk el, mert jobb, ha az elején az ragad meg bennünk. Például korábban linkeltétek ezt a Python programozást tanító oldalt. Már az elejétől egy kicsit ide-oda kapkodónak tűnik, de a fentebb említett okok miatt ez még belefér. Az viszont már nem, hogy pl. a 8. részben - aminek a teljes léte vitatható ebben a formában, mert olyan dolgokat ecsetel, amiket Pythonban nem kell "kézzel" megcsinálni - képes ilyen példaprogramot írni:
def kereses (L, e):
for i in range (len(L)):
if L[i] == e:
return True
return FalseKicsit szégyenlem is, hogy idemásoltam, de mindemellett szeretném hangsúlyozni, hogy a Python nem C! A kód második sora ennek megfelelően egy Python elleni merénylet. A
forciklus ebben a nyelvben az elemeken lépked végig, nem az indexeken. A fenti megoldás rondább - és lassabb! - mint a helyes változat:def kereses(L, e):
for i in L:
if i == e:
return True
return FalseAmi még mindig nem az igazi, hiszen máshogy kell lekódolni azt, hogy egy lista tartalmaz-e egy bizonyos elemet:
e in LJól látható, hogy a fenti kód "némileg" egyszerűbb, mint az eredeti... Aki tehát az alapokat rendesen szeretné elsajátítani, (ismételten) ajánlom neki Raymond Hettinger (Python core-developer) videóját. Angol, de elég a kódot nézni. Felül a rossz, alul a jó.
A másik fontos feladatnak a globális szemlélet elsajátítását tartom. Ez kicsit olyan, mintha távolról néznél egy térképet, hogy lásd, hol vagy körülbelül a térképen. Ezek pl: a "tor"-ok: iterator, generátor, dekorátor, vagy például list comprehension.
-
gratzner
tag
válasz
justmemory
#795
üzenetére
Azt hiszem ez a kis szösszenet sokat lendített azon, hogy ne unjam meg a dolgot mielőtt még valamelyest megismerhetnem...
köszi szépen -
justmemory
senior tag
válasz
gratzner
#794
üzenetére
Igen, ez a jó kérdés, és számomra is ez volt az elején a legfontosabb kérdés, és nagyon idegesített, hogy nem láttam át, nem találtam erre a választ.
Idővel aztán úgy álltam hozzá, hogy adott egy probléma, és akkor lássuk, hogy azt pythonban miként lehet megoldani. Mondok egy saját példát: a telefonomon fut az mplayer. Van hozzá frontend, de azok nem mutatják a fáljrendszer rejtett mappáit, így ha nekem a videóim (linux alatt) egy .videos nevű mappában vannak, akkor nem fogom tudni őket megnyitni. Két választásom van: vagy átírom a már létező frontendek forráskódját (sajnos a C-t annyira azért nem ismerem, plusz mások által már összerakott programokat nem olyan könnyű átírni; nekem legalábbis), vagy írok saját, grafikus felülettel megspékelt frontendet, ami látja a rejtett mappákat is. S lőn... Szóval ez ennyi. De akár idle környezetben is lehet használni a dolgokat; én most éppen pont hexadecimális forrásból próbálok adatokat visszanyerni sikeres adatbázis törlés után... Merthogy az
intfunkció ilyet is tud. Tehát nem is feltétlenül kell folyton mindent fájlba menteni, egy gyors scriptet összerakva akár idle környezetben is roppant praktikus tud lenni (akár úgy is, hogy ha az ember nem ismeri a bash nyelvet, és mondjuk 23 telepített appot szeretne törölni, akkor azosmodullal és egyforciklussal az is megoldható egyszerűen, nem kell egyesével törölgetni (itt most arra gondolok, hogy pl.dpkg --purge app_neve)).Valójában szinte mindent meg lehet vele oldani; nekem n900-as telefonom van, és gyakorlatilag értesítések küldésétől kezdve adatbázisokkal történő kommunikációig, információk kiíratásától kezdve hívásindításon át szinte mindenre lehet használni... De ez csak egy, saját tapasztalatokon alapuló példa, nyilván az életben is rengeteg helyen használják; pl. pont a telefonomra van egy nagyon szuper térkép alkalmazás, ami full pythonban van megírva.
-
gratzner
tag
válasz
justmemory
#793
üzenetére
Gondoltan a napok leírása után, hogy kiegészítem egy "heteket, hónapokat"-tal

Az is érdekes kérdés számomra, hogy mikorra derül ki majd a gyakorlatban, hogy valójában milyen típusú és kaliberű konkrét dolgokat is lehet megoldani ezzel a nyelvvel. Ez a pont remélem nem években mérendő idő múlva fog eljönni
-
gratzner
tag
válasz
justmemory
#791
üzenetére
Veszélyes dolog nálam az alapokkal kezdeni, mert jellemzően ha azzal kezdek, azt veszem észre általában, hogy többet gondolok bele a magyarázatokba és napokig el tudok pepecselni valamivel, ami már rég kész, de hihetetlennek tűnik, hogy csak ennyit akart vele a pl. 2-3 oldalnyi leírás

Alapvetően pedig én is ezt favorizálnám. Erős alap, aztán jöhet egy Hello World!
Na jó túlzok, de érted...
Majd meglátjuk mit hoz a gyakorlat, általában van egy pont minden tanulnivalónál, amikor átkattan valami az emberben, hogy "Áhháá, most már világos, hogy honnan indultam és most hol tartok, hogyan tovább." Ehhez szerintem minimum napokat kell foglalkozni az adott dologgal, hogy a különböző megfogalmazású, előismereteket és releváns dolgokat feltételező oktatóanyagok közt kitisztuljon a lényeg. Onnantól kezdve gyorsul a folyamat, mert ilyenkor érted meg, fogod fel a rész- és a végcélt.
Most ajánlotta egy jó barátom az Atom nevű progit a későbbiekre. Megnéztem, hosszú távon szerintem nagyon jó lesz, de egyelőre szinte biztos, hogy elég az IDLE. -
justmemory
senior tag
válasz
gratzner
#784
üzenetére
Az idle is jó megoldás, de igazából simán ha futtatod terminálban, hogy
python, akkor is egy idle jön föl... Én egyébként inkább az IPython-t használom; informatív, illetve hasznos akkor, ha majd sympy, numpy és egyéb hasonlókkal is szeretnél foglalkozni (teszem hozzá, hogy nálam a telefonos környezet miatt nyilván a programok robosztussága elsődleges szempont a telepítéskor...).Az jutott még eszembe, hogy ha ennyire az elején vagy a python programozás tanulásának, akkor lehet, hogy célszerűbb először az alapokat jól megtanulni, és nem rögtön a hogyan-importáljak-saját-modult típusú dolgokkal kezdeni, mert még olyasmikről nem is esett szó, hogy
classpéldául. Ettől függetlenül nyilván lehet a lecsóba belecsapni, én is hasonlóan kezdtem, de nyilván jobb, ha az ember már az elején szépen sorban halad, mert érteni fogja a miérteket
-
gratzner
tag
-
cousin333
addikt
válasz
gratzner
#782
üzenetére
Nem olyan szörnyű, mint ahogy elsőre hangzik. A Python telepítésen belül a lib mappában vannak az alap Python részét képező modulok py fájlok formájában. Ha ide bemásolod a tiédet, akkor azt is látni fogja. Egy saját modul készítése és "szakszerű" telepítése sem lehet bonyolult, de ilyet még sosem csináltam

-
gratzner
tag
válasz
cousin333
#783
üzenetére
Ez tényleg megy
Mármint nálam is. De kissé megtört, hogy ekkora balek vagyok, hogy ezen agyalok másfél napja, hogy miért nem futtatja azt a rohadék függvényt nekem, mikor állítólag kellene
Itt rendesen megmutatkozott most, hogy épp áttérőben vagyok Linuxra, mert pár hét használat után még nem volt evidens, hogy ez most az OS vagy a terminálban való python használatának a hibája.
Na de már ezt is tudom.
Köszi még egyszer az energy-t
és a türelmet.
Még szerintem jövök majd... -
gratzner
tag
válasz
cousin333
#781
üzenetére
Jesszusom...
OK
Majd átláthatóbb lesz az egész pár hét nyalóka után...
Most ki kell derítenem, hogy a Phyton honnan fogja tudni, hogy hol találja az importálandó függvénykönyvtáramat.
De nem akarok mindent Tőletek megtudni, mármint nem várom el a válaszokat, viszont nagyon köszönöm a segítséget, azért ezzel így a végére elég sok minden megmagyarázódott a témával kapcsolatban. Lehet hogy nem is annyira az én gondolkodásmódomon íródott az a blog, amit követni akartam...
Eléggé félrevezettem magam.
Nade közben lejött az idle. Ismerkedem vele kicsit. -
cousin333
addikt
válasz
#93284608
#778
üzenetére
Az is működik, csak nem így. Akkor előbb importálni kell a függvénykönyvtáradat (py fájlodat) a parancssorból, de ehhez a Pythonnak is tudnia kell, hol találja. Pl.:
import enfajlomutána lehet használni a benne levő függvényeket:
x = enfajlom.terulet(6,4)Legegyszerűbb talán úgy elindulni, hogy csinálsz egy fájlt a függvényeidnek, majd ugyanabba a mappába egy másikat, amiből emezt hívogatod és a végén az utóbbi fájlt indítod el.
#780: Amit írsz az csak egy konkrét környezetre (az IDLE-re) igaz. Te meg nem azt használod éppen. Tedd fel:
sudo apt-get install idlemajd ha települt, akkor egyszerűen:
idleAz IDLE az alapértelmezett környezet pl. a Python windowsos telepítése után. Egyszerű, mint a bot, de kezdésnek megfelel.
-
#93284608
törölt tag
válasz
cousin333
#779
üzenetére
Ez megy...
Csak ezt olvastam:
"Hogy újra és újra használhassuk a programjainkat, mentsük el őket egy fájlba. Ezt a következőképpen tehetjük meg. File -> New Window. Beírjuk a kódunkat, majd File -> Save. Itt megadjuk a kívánt fájlnevet, majd a kiterjesztést is: .py. Ahhoz hogy ezekben a fájlokban lévő függvényeket használhassuk a shellben, szükséges az előzetes futtatásuk: Run -> Run Module."
Ebből a fentebb írt elképzelésem született... -
cousin333
addikt
válasz
#93284608
#777
üzenetére
A hozzászólásoknál használd a programkód kapcsolót a forráskód-részletekhez.
Értem én, hogy mit csinálsz, de mondom, hogy nem jó. Olyan, mintha írnál egy füzetbe, majd félreteszed, előveszel egy másik füzetet és csodálkozol, hogy nincs benne amit addig írtál.
Hagyd a fájlt, mindjárt nyisd meg a promptot, és oda írd be (soronként, enterrel):
>>> def terulet (alap, magassag):
... return alap * magassag / 2
...
>>> terulet(6,4)
12
>>>A return kulcsszót ne felejtsd el behúzni (pl. 4 szóközzel), mert azzal kapcsolatos lesz a következő kérdésed.
-
#93284608
törölt tag
válasz
cousin333
#776
üzenetére
Jaa, akkor félreértettem valamit az oktató anyagban. Azt gondoltam, hogy én készítek magamnak egy csomó függvényt, idővel egyre többet ugyebár. Majd mindig amikor szeretnék készíteni egy teljes "programot", akkor a nekem ahhoz kellő függvényeket meghívom és kiegészítem a megfelelő kiegészítésekkel a meglévő függvényeket. De ezek szerint ez nem így megy.
-
#93284608
törölt tag
válasz
cousin333
#776
üzenetére
Bocs, azt tudom. A terulet.py le van mentve a megadott mappában. Tartalma:
def terulet (alap, magassag):
return alap*magassag/2Ekkor terminál nyit, mappába ugrik, python terulet.py, majd python, ekkor bejön a prompt, ekkor "terulet(4,6), erre ki kellene írnia, hogy 12. De nem...
-
cousin333
addikt
válasz
#93284608
#775
üzenetére
előbb kell a terulet függvény definiálása, csak után hívhatod meg. Tehát:
def terulet (alap, magassag):
return alap * magassag
eredmeny = terulet(4,6)
print eredmenyIlletve most nézem csak, hogy rossz nyomon jársz. Az enter után lefut a kódod, definiálja a terulet függvényt, ... és ennyi. A következő sorban nyitsz egy Python interpretert, ami a nulláról indít, semmit nem tud a fájlról, amit korábban futtattál, így a terulet függvény sem mond neki semmit. Vagy mindkettőt az fájlba írod, vagy mindkettőt az interpreterben. Vegyesen nem megy. A Spyderrel mondjuk mehetne...

-
#93284608
törölt tag
válasz
cousin333
#772
üzenetére
Nah a def télleg lemaradt (ehh). De most meg az van, hogy:
~/Dokumentumok/python$ python terulet.py (enter)
~/Dokumentumok/python$ python
Python 2.7.12 (default, Jul 1 2016, 15:12:24)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> terulet (4,6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'terulet' is not defined -
cousin333
addikt
válasz
justmemory
#773
üzenetére
Érdekes teszt lenne pedig, hogy a megadott sor elé (elnevezés, paraméterek zárójelben és kettőspont) miket lehet beírni, hogy helyes Python kódot kapjunk.
Pl.:def
class
whileMind helyes, de persze az első a legvalószínűbb...
-
justmemory
senior tag
válasz
#93284608
#770
üzenetére
Szia,
szerintem a hiba - ahogyan az üzenet is mondja - szintaxis hiba, magyarul valami hiba van a kódolásban. Ha nem találná a fájlt, akkor azt írná.
Én egyébként vim-et használok és terminált. Egyébként a futtatáshoz az is megoldás ha a python környezetet adod hozzá: #!/usr/bin/python vagy #!/usr/bin/env python. Mint bash/sh programozáskor; futtatni is elvileg úgy kell. Pl.: ./valamilyenprogram.py(Okítsatok ki, ha tévednék!)
Szerk. cousin, megelôztél
Elôször én is a def-re gondoltam, de nem ismerem a teljes kódot. -
-
cousin333
addikt
válasz
#93284608
#769
üzenetére
Ezek közül szvsz az utolsó még ér is valamit (bár régóta nem fejlesztik), a többi inkább csak bohóckodásnak tűnik. Akkor inkább már egy szimpla szövegszerkesztő. A komolyabb cuccokhoz persze kell némi ismeretség, de az alapok hamar elsajátíthatók.
Kísérletezni (vagy mondjuk adatelemzésre) jó lehet még az IPython (vagy ahogy most nevezik: Jupyter) Notebook. Böngészőben akár össze-vissza sorrendben futtatható kóddarabokkal. Az általam említett Anacondában ez is benne van. Itt egy kis bemutató video Ubuntuval.
Angollal hogy állsz? Met ha rosszul, akkor nem linkelek angol nyelvű Youtube oktató videókat. Bár néha a puszta kód is magáért beszél....
-
Noddy
senior tag
válasz
#93284608
#764
üzenetére
Szia!
A programot megírod egy szimpla szövegszerkesztőben (pl. gedit) és ott van is olyan beállítás, hogy megfelelően színezi a kifejezéseket.
Majd a megírt programot mented akárhhova (én Dokumentumok mappában csináltam egy könyvtárat a programoknak) .py kiterjesztéssel és terminálban tudod is futtatni:python program.pyvagypython3 program.pyparanccsal, persze miután oda navigáltál terminálban. -
cousin333
addikt
válasz
#93284608
#764
üzenetére
Elvileg szimplán ez kell a parancssorba abban a mappában, ahol a py fájl van:
python haromszogterulet.py
Mondjuk nem tudom, másnak mennyi kedve van parancssorban küzdeni, én feltennék egy IDE-t, igaz, nem olyan kicsik, de van integrált szerkesztőjük, debuggerük, "parancssoruk". A jelöltjeim:
- Spyder (sudo apt-get install spyder), mondjuk sok mindent fel akar tenni
- PyCharm Community Edition - ez se kicsi
- Anaconda: ez egy teljes környezet, sok plusz csomaggal, all-in-one, a Spyder is benne van (vagy csupasz haverja, a Miniconda)Egy pár soros programocskához nyilván mindegyik overkill, de az integrált segítő funkciók (súgó, kiegészítési javaslatok, változók pillanatnyi értékei) miatt nagyon hasznosak. Ráadásul már nem érnek újdonságként, ha egyszer komolyabban elkezdesz Python-ozni...
![;]](//cdn.rios.hu/dl/s/v1.gif)
Persze még mindig ott az IDLE...
-
Imy
veterán
válasz
#93284608
#764
üzenetére
Én ezt a könyvet olvasgatom.

-
#93284608
törölt tag
Sziasztok!
Több sebből vérzek... Szeretnék tanácsot, segítséget kérni.
HTML, PHP és némi c++ ismeretem van, de elég régiek. Szeretnék nekiugrani néhány programnyelvnek a közeljövőben, - jó ötlet vagy nem - gondoltam a Python-nal kezdem. DE! A Windows-al is szakítottam néhűny hete, most Ubuntu 16.04 LTS rendszert használok és szeretnék is ennél maradni.
Találtam egy nagyon jónak tűnő anyagot Python témában (http://blog.molnardenes.hu/python-programozas-kezdoknek), viszont ezt Windows-os környezetben szemléltetik.
Namost, Linux alatt terminálban tökéletesen lehet kódolni, de ha akarok készíteni egy később a terminálban futtatható fájlt (pl. haromszogterulet.py), ezt hogy a viharban tudom én futtatni? Illetve lényeges talán, hogy hova mentem le?
A kritikát is elfogadom, csak építsen!
Köszönöm előre is! -
sonar
addikt
Egyébként én azt javasolnám ha egyenlőre csak tanulsz akkor nyomd végig a könyvet a 2.7-tel és utána válts 3-ra. Nem kevés szopektől mented meg magad. V kifejezetten 3-as tutoriálokat nézegess.
Kezdőként két lecsóba belecsapni... nehogy a túl sok kudarc elvegye a kedved ettől a remek nyelvtől. -
Imy
veterán
A régi 2.xx-es python verziókban volr egy "type" függvény, amivel kilehetett íratni, hogy milyen típusú a változó.
print type(pelda)A 3-asba ezt hogyan lehet?

-
cousin333
addikt
Igazi fejlődésre már csak a 3-as esetében számíthatsz, így a 3.5-ös verziónál már eléggé kiforrott, szinte minden értelmes modulból van kompatibilis verzió. Szerintem hacsak nincs nyomós indokod a 2.7 mellett (pl. nagy mennyiségű régi kódot kell karbantartani, kiegészíteni), akkor én a 3-ast javasolnám. Pár dolgot pl. rendbe tettek benne (lásd raw_input). Az új print függvény is jobb, bár elsőre kényelmetlenebbnek tűnhet.
Ha az angol a barátod, akkor a könyvekkel sem lesz bajod. Magyarul már neccesebb, de ez szerintem nem lehet valós ok.
-
Imy
veterán
Köszönöm, sikerült megcsinálni, amit akartam.

bemenet = raw_input('kerem adja meg a szavakat vesszovel elvalasztva: ')
lista = bemenet.split(',')
print(lista)
lista = [i.strip() for i in lista]
elemszam = len(lista)
print "A szavak szama: ", elemszam
ujelem = raw_input ('kerem adjon meg egy ujabb szot!')
lista.append(ujelem)
print(lista)
ElemtorlesString = raw_input('kerem adja meg a sorszamot, hogy melyik szot szeretne torolni!')
print type(ElemtorlesString)
ElemtorlesInt = int(ElemtorlesString)
print type(ElemtorlesInt)
del(lista[ElemtorlesInt])
print(lista) -
Froclee
őstag
Most esik le, ha jól látom Python2-ben a raw_input() ami string-et fogad, az input() pedig Python kifejezéseket. Tehát input() esetén a helyes bement ['egy','ketto'], raw_input() esetén pedig a stringet kell átalakítanod egy listába.
(#750) cousin333: yup, annak segítenie kell.

-
Imy
veterán
Sajnos így sem.

Traceback (most recent call last):
File "C:\Users\xxx\Desktop\python\012_list_hozzafuzes_torles.py", line 12, in <module>
bemenet = input('kerem adja meg a szavakat vesszovel elvalasztva: ')
File "<string>", line 1, in <module>
NameError: name 'alma' is not defined -
Imy
veterán
válasz
cousin333
#742
üzenetére
Ez nem működik sajnos.

Traceback (most recent call last):
File "C:\Users\xxx\Desktop\python\012_list_hozzafuzes_torles.py", line 12, in <module>
bemenet = input('kerem adja meg a szavakat vesszovel elvalasztva: ')
File "<string>", line 1, in <module>
NameError: name 'alma' is not definedPython 2.7.11-em van.
-
cousin333
addikt
bemenet = input('kerem adja meg a szavakat vesszovel elvalasztva: ')
lista = bemenet.split(',')
print(lista)A split függvény szétbontja a beérkező sztringet a vesszők mentén, az eredmény meg egy lista lesz. Még esetleg kiegészíthető ezzel:
lista = [i.strip() for i in lista]Ez meg leszedi a lista elemeiről a kezdő és záró szóközöket.
A print nálam miért lett lila

-
Imy
veterán
Hogyan tudok listát bekérni, hogy a felhasználó vigye fel?
print 'kerem adja meg a szavakat vesszovel elvalasztva: '
lista = list(input())
#print lista
#lista = [ 'alma', 'korte', 'barack']
print listaKommentelve van, hogy mire gondoltam, azaz ez legyen a végeredmény:
#lista = [ 'alma', 'korte', 'barack'] -
sonar
addikt
válasz
DrojDtroll
#735
üzenetére
Nekem simán megy firefox alatt
(linux mint 17.3 + FF 47.0) -
EQMontoya
veterán
válasz
DrojDtroll
#736
üzenetére
Popen nevű hívást nézd meg!
-
DrojDtroll
veterán
Jó estét mindenkinek!
Egy függvényben használok rendszerhívást. A rendszerhívás kimenetével szeretnék Pythonban dolgozni. Mi erre a legegyszerűbb mód?
-
DrojDtroll
veterán
válasz
DrojDtroll
#734
üzenetére
Chrome alatt szépen muzsikál

kicsit belefeledkeztem már várom mikor lesz benne valami kihívást jelentő dolog.
egyébként jó koncepció
-
sonar
addikt
Ha vki szórakozni is akar akkor ajánlom figyelmébe a codecombat oldalt
-
Mr Dini
addikt
Sajnos a dict típust nem én választottam, a dialógus így tölti fel a változót. Gondolom azért, mert van olyan dialógus, ahol egyszerre többet is kijelölhetek. De ez most nem ilyen. Ha meg sztringbe konvertálom, akkor sem érek vele sokat. De megoldottam már!

Valahogy így:
try:
if response['item'] == 1:
print('1')
elif response['item'] == 0:
print('0')
except KeyError:
print('Kilépés...')
exit(0)Először én is erre a stacked if-re gondoltam, de a try elvileg gyorsabb is. És így nem csak akkor lép vissza, ha canceled kulcs van a változóban, hanem nem várt, egyéb eseteknél is (persze csak KeyError-nál).
Azért köszi!

De a karakterkódolós hiba még mindig fennáll... Ahogy észrevettem, ha a
droid.dialogGetInput(név,szöveg)-en keresztül kérem be a usertől a linket/szöveget, akkor az más kódolással érkezik, és ezért hal meg a kód a fentebb bemásolt ascii hibával. Hogy lehetne kideríteni a kódolást és megoldani azt, hogy kódolja át UTF-8-ba? -
axioma
veterán
De minek ehhez dict??
response={'item':0}helyett ha azt irod, hogyresponse='item0', ugyanazt tudod rola, ha utana csak a kombinaciokat egyben nezed.
Masreszt szerintem amit keresel:if 'item' in response:
if response['item']==0:
print '0'
else: # vagy elhiszed vagy itt is vizsgalsz
print '1'
else: # vagy elhiszed vagy itt is vizsgalsz
exit(0) -
Mr Dini
addikt
válasz
cousin333
#728
üzenetére
Van egy dialógusom két választási lehetőséggel. Ha az illető az elsőt választja, akkor
{'item' : 0}kerül a response változóba dictként. Ha a másodikat választ, akkor ugyanez, csak egyessel lesz a változó.Ha pedig elutasítja (kilép), akkor
{'canceled' : True}lesz a változóban. Na, én ezekrr szeretnék ifeket gyártani. -
cousin333
addikt
Máskor szerintem használd a Programkód formázást. Köszi!
Bevallom nem teljesen világos számomra, hogy mit is szeretnél csinálni. Az egy elemű szótár mondjuk nem néz ki túl jól. Az if-es példádnál az megvan, hogy a szótár értékei függvények is lehetnek? Pl:
def nyomtat(valami):
print(valami)
def osszead(a,b):
print(a+b)
def semmi():
pass
d = {'a': nyomtat, 'b': osszead, 'c': semmi}Ezt futtatva és használva:
>>> d['c']()
>>> d['a']('Minden')
Minden
>>> d['b'](3,6)
9
>>>Lehet persze, hogy esetedben teljesen rossz nyomon járok, de ez az infó még jól jöhet másoknak is

-
Mr Dini
addikt
Sziasztok!
Egy újabb noob kérdésem lenne, megint az iffel kapcsolatban.
Tehát van egy dict globális változóm, ami 3 különböző értékpárt vehet fel, a user integrációjától függően.
Az integráció pedig egy dialógussal történik. Első eset, amikor a dict printelve így néz ki:
{'item':0}
2. eset:
{'item':1}
3. eset:
{'canceled':True}
Namost, próbáltam egy teszt ifet/elifet csinálni mindhárom esetre, de nem akar összejönni... Íme:
if response['item'] == 1:
print('1')
elif response['item'] == 0:
print('0')
else:
print('Kilépés...')
exit(0)Természetesen a print helyett functionokat hívok meg, de így egyszerűbb szemléltetni/kipróbálni Nektek.
Azt értem, hogy mi a gond, tehát, h ha canceled:1 van benne, akkor nincs item:1, vagy item:0 kulcs és ezért hal meg hibával... Csak azt nem tudom, hogy hogy lehetne helyesbíteni... Segítenétek?
Arra gondoltam, kevésbé szép megoldás alatt, hogy megnézem "stacked" iffel, hogy van-e a locals()-ban response['item'] és ha van, akkor fusson az a rész le, ami most if és elif, majd egy másik stacked ifben, ami response['canceled'] is in locals() lenne, berakom a mostani else-t.
Köszi!

-
Noddy
senior tag
válasz
DrojDtroll
#724
üzenetére
-
DrojDtroll
veterán
Sziasztok.
Az lenne a kérdésem, hogy van-e olyan modul amelynek ha megadok egy szint, egy hibaturest és egy képet vissza adja hogy az adott szín hol helyezkedik el a képen?
-
Mr Dini
addikt
válasz
justmemory
#722
üzenetére
Köszönöm a választ, de sajnos így is hasonló hibát dob...
-
Mr Dini
addikt
Nah, sikerült befejeznem a "kódot"!

Megy rendesen, de például a hosszú 'ö' (tehát ő)-vel nem tud mit kezdeni és ezt dobja:
UnicodeDecodeError: 'ascii' codec can't decode byte 0
xc5 in position 31: ordinal not in range(128)Olvasgattam, hogy hogyan lehetne megoldani a dolgot, de mindenhol csak azvan, hogy az "ő"-t adjam meg unicode szerű kódként. Itt viszont ez nem játszik, mivel user interakcióval töltödik fel a változó adattal...
Van rá más megoldás?
Köszi!

-
cousin333
addikt
válasz
DrojDtroll
#719
üzenetére
-
DrojDtroll
veterán
Sziasztok!
Tegyük fel, hogy van két változóm: a_valtozo és b_valtozo.
A c_valtozonak mindig pl.: a_valtozo(a_valtozo+b_valtozo) értéket kell felvenni. Nem lehet valahogyan megoldani(függvény nélkül) azt, hogy ha a c_valtozot használni akarom akkor mindig frissüljön az értéke?
-
cousin333
addikt
Nem tudom, miféle feladat ez, de így biztos nem fog működni. Az első
forciklus végigiterál a külső szótár kulcsain: "key1" és "key2". Eddig OK. A második ciklus végigmegy a kulcsok által mutatott szótárak értékek"internal_key1" kulcs alatti elemén, ami itt most csak egy 1 elemű lista ("value1"), ez lesz avalue. A baj ott van, hogy, a "key2" szótárában nincs "internal_key1" elem. Ennek úgy lenne értelme
, ha mindkettő helyen csak "internal_key" szerepelne, szám nélkül.A
selfmár csak hab a tortán, ennek alapján ez a kód egy osztály része, magában le se fut. Viszont ha egy osztály metódusában van benne, akkor is problematikus, mert a sample_map egy lokális változó lesz, a self.sample_map pedig egy példányváltozó. Tehát ha korábban nem jött létre egy self.sample_map, akkor a program megint csak nem csinál semmit. Illetve de: hibát dob. -
sonar
addikt
Asszem megőrülők
Már szét barmoltam totálisan ezt a funkciót, ennél több debug lépést nem tudnék belerakni, de egyszerüen kilép a rutinból úgy, hogy nem hajtja végre az exception ágat.
ezután a lépés után ugrik vissza a főágba
strTMP2=strTMP.replace('\x08','')
jah és 10-ből 1-szer jól lefutdef tnREADMORE(tn,read,write,read2):
try:
timeout = 3
print tn.read_until(read,timeout)
except Exception,e:
print str(e)
raw_input('error1')
try:
write = write + '\n'
print write
tn.write(write)
time.sleep(2)
timeout = 3
print '---------'
strTMP = tn.read_until(read2,timeout)
print 'type strTMP:',type(strTMP)
print strTMP
print '---- str ----'
strTMP2=strTMP.replace('\x08','')
print 'mi a csocs:',strTMP2
except Exception,e:
print '--- Error ---'
print str(e)
# print strTMP.splitlines()
raw_input('error')
return
return strTMP2ötlet?
-
bundli
tag
Sziasztok!
Kis segítséget kérnék az alábbi kódrészlet megértéséhez. A változók elnevezéseit én írtam át aszerint, ahogy jelenleg értelmezem a szerepüket. Van a sample_map adatstruktúra(JSON?!), amely tartalmaz kulcsokat és azon belül is tartalmaz még kulcs-érték párokat. Ezután egy For ciklussal iterálnék rajta végig, de nem teljesen értem, hogy miért így kell, illetve, hogyan lehetne ezt másképp, "inernal_key1" nélkül megcsinálni.
Előre is köszönök minden segítséget!
sample_map = {'key1': {'inernal_key1': ['value1']},
'key2': {'internal_key2': ['value2']},
}
for key in self.sample_map.keys():
for value in self.sample_map[key]["inernal_key1"]:
#do something with 'value' variable -
cousin333
addikt
Szebben? Először is úgy, hogy használd a Programkód kapcsolót a hozzászólás szerkesztésénél...

Egyébként pedig azt kell tudni, hogy egy sztring szorzása a sztring ismétlését jelenti:
for i in range(1,8):
print("*" * i)Ha a fentit nem tudod, akkor még mindig jobban jársz egy dupla for ciklussal:
for i in range(1,8):
for j in range(i):
print("*", end="")
print("", end="\n")Természetesen az első módszer a preferált.
-
Imy
veterán
Kellene írnom egy programot, ami ezt írja ki:
*
**
***
****
*****
******
*******Én így csináltam. De hogyan lehetne ezt szebben megvalósítani?
a="*"
b=0
while b<7:
b=b+1
if b==1:
print a
elif b==2:
print a,a
elif b==3:
print a,a,a
elif b==4:
print a,a,a,a
elif b==5:
print a,a,a,a,a
elif b==6:
print a,a,a,a,a,a
else:
print a,a,a,a,a,a,a -
Mr Dini
addikt
Üdv!
Próbálkozom egy s4la-s python (3.4) szkriptet összedobni. Eddig minden ment, viszont szégyenszemre pont az ifet nem sikerül rendesen beállítanom...

if next and url is None:
droid.makeToast('Exit...')
if url is not None:
name = droid.dialogCreateInput('Link neve','Mi legyen a megjelenő név): ')
droid.dialogShow()Tehát ha van next változó és az url változó nem kap értéket, akkor kill, ha pedig kap az url értéket, akkor menjen tovább a dialógussal. A gond az, hogy bármit teszek, feljön a dialógus...
Mi lehet a gond?
Köszi!

-
justmemory
senior tag
Sziasztok!
Gtk kapcsán szeretnék segítséget kérni, mert nem találtam ezidáig választ. A fô kérdés az, hogy ha gtk.RELIEF_NONE van beállítva a gtk.Button-nak, akkor hogyan lehet a színét módosítani?
Bôvebben:
button = gtk.Button()
colormap = button.get_colormap()
color = colormap.alloc_color('#3d0c02')
style = button.get_style().copy()
style.bg[gtk.STATE_NORMAL] = color
button.set_style(style)
button.set_relief(gtk.RELIEF_NONE)Ha a button.set_relief be van állítva, akkor nem lesz színes a gomb, ha nincs beállítva, akkor színes lesz a gomb. Amit el szeretnék érni: button.set_relief beállításával is színes a gomb (ha lehet ilyet...).
Köszönöm elôre is.
jm
-
D.R.O.
tag
Szevasztok!
Nemrég találtam egy összefoglaló oldalt(?) pythonhoz:
[The Hitchhiker’s Guide to Python]Le is tölthető pdf-ben ha valaki úgy szereti.
Nekem sokat segített, szóval gondoltam bedobom.
-
Vasinger!
nagyúr
Sziasztok!
Azt meg lehet valahogy oldani PyCharm-nál, hogy ha egy Windowsról SSH-zok be Linux szerverre és ott kéne fejlesztenem Pythonban, az ott található könyvtárakkal stb. azt PyCharmba tegyem Windowsról? Van erre valamilyen lehetőség? Vagy marad a felmásolgatás és debugolás kizárva?
-
cousin333
addikt
Én pont fordítva szoktam. Ha szembesülök egy problémával, eszembe jut, hogy hátha van rá beépített vagy 3rd party modul. És általában van is.

Ez mondjuk nem rossz gondolat: ide (vagy akár az 1. hsz-be) ki lehetne posztolni érdekes cikkeket, videókat honlapokat, ahol hasznos tudással lehet bővíteni az ismereteinket. Tehát nem kell minden Python cikk, csak ami tényleg jó és tartalmas. Ugyanezt kiegészíthetnénk modul-ajánlóval is.
-
cousin333
addikt
Én Mercurial-t használok. Folyamatosan fejlesztik, gyors, stabil megbízható és könnyen megtanulható. Van hozzá rendes GUI és Windows támogatás. Ez is elosztott rendszer, a BitBucket kínál hozzá is online repókat, de azt nem használom. A git-et nem ismerem, de kétlem, hogy egyszerűbben használható lenne.
Dokumentálni általában ott a Doxygen, bár Pythonhoz elvileg a Sphinx dukálna, de azt még sosem használtam.
Python tippeket meg a Youtube-on is találsz, van jónéhány PyCon rendezvény, amiben egy-egy modult mutatnak be. A részletekért meg úgyis a dokumentációt kell bújni.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
. Ez sokat segíthet kezdőknek is, hogy jobban megértsenek olyan fogalmakat, mint a staticmethod.
Errol van szo! Nem kell az adminisztracioval bajlodni. Masik kedvencem ezugyben (mondjuk az iparban mar velemenyesebb, de ott meg nem fog ilyen igeny elofordulni) az hogy nem kell az int-ek bithosszaval foglalkozni...

És persze folyamatosan tanulni lehet az újdonságokat...

![;]](http://cdn.rios.hu/dl/s/v1.gif)



"



