- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- Két Zen 5-ös dizájnjának mintáit is szállítja már az AMD
- A Colorful "fagyosan kompakt" alkatrészekkel megy elébe a nyárnak
- A Keychron ismét egy űr betöltését vállalta magára az egerek szegmensében
- Az átlagnál vaskosabb ventilátorok kandikáltak ki a Corsair vitorlája mögül
- NVIDIA GeForce RTX 3080 / 3090 / Ti (GA102)
- Sony MILC fényképezőgépcsalád
- ThinkPad (NEM IdeaPad)
- Dell notebook topic
- Modern monitorokra köthető 3dfx Voodoo kártya a fészerből
- Milyen billentyűzetet vegyek?
- Fujifilm X
- Azonnali informatikai kérdések órája
- Gaming notebook topik
- Nvidia GPU-k jövője - amit tudni vélünk
Hirdetés
-
A legtöbb amerikai szerint a TikTok egy őket befolyásoló eszköz
it Egy felmérés szerint a legtöbb amerikai osztja azon véleményt, hogy a TikTok egy őket befolyásoló eszköz.
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Premier előzetest kapott a V Rising
gp Napokon belül befut a teljes PC-s kiadás, az év során pedig megkapjuk a PlayStation 5 változatot.
Új hozzászólás Aktív témák
-
ha az ember munkát szeretne vállalni, ahol a python is követelmény, egy ilyen papírnak tulajdonítanak jelentőséget? pl akkor, ha az ember alapból nem infós/progmatos, hanem "kétkezi" mérnök.
30€ Meta store bónusz Quest headset aktiváláshoz, keress priviben :)
-
válasz t72killer #1801 üzenetére
Lehet, hogy jó pontként szolgál a CV-dben, de úgyis azt fogják tudakolni, mit tudsz valósan. A Humblebundle-ön most van olcsó könyvcsomag, mind python mindenféle témakörben. Ha pedig most kezdenéd tanulni, irány a Coursea Programming for everyone kurzusa.
https://www.coreinfinity.tech
-
pigster
senior tag
Sziasztok!
Kezdek ismerkedni a Pythonnal, de folyton gondom van a __str__ metódussal.
Egy Black Jack programot készítek.
Van egyclass Kartya():
ezen belül
pedig:def __str__(self):
return str(self.szin.capitalize() + ' ' + self.figura.capitalize())
Jól gondolom, hogy ennek az lenne az értelme, hogy ha sztringként akarom kezelni, pl. egy print utasításban, akkor ezt adja vissza?A gondom a következő:
Létezik egy pakli is, meg egy játékos osztály is. Van pl. egy kartyak lista
Hiába akarnám kiíratni ennek csak egyetlen elemét, ami ugye egy Kartya objektum, és annak pedig van egy __str__ metódusa pont ilyen esetekre:tmp =str(self.kartyak[0:1])
Akárhogy is próbálkkozok vagy kiíírja:[<kartya.Kartya object at 0x000002AE6652D860>]
vagy hibát ír:tmp = ''.join(self.kartyak[0:1])
TypeError: sequence item 0: expected str instance, Kartya found
Mit kellene csinálni, hogy jó legyen?
FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
kovisoft
őstag
válasz pigster #1803 üzenetére
Ha a kartyak tömb 0. elemére akarsz hivatkozni, akkor így hivatkozz rá: kartyak[0], mert ha kartyak[0:1] -et írsz, akkor ez nem egy elem, hanem egy rész-tömb lesz, ami csak a 0. elemet tartalmazza. Ez látszik is abból, hogy ha kiíratod, akkor szögletes zárójelek közé teszi.
-
KEAN
tag
válasz pigster #1803 üzenetére
Szia!
Ez az __str__ függvény többek közt akkor hívódik, amikor a print utasítással (vagy függvénnyel, ha python3.x-ről beszélünk) "hajtod" meg a dolgokat. Tehát a
print self.kartyak[0]
működne a dolog.
A másik, hogy mindenhol a "slicingot", [0:1] használod, ami egy listát ad vissza, nem pedig magát az objektumot.
Ha mindenképpen szükséged van valami hasonló funkcionalitásra, ami "print nélkül" is visszaadja a "string értéket", akkor írj valami get_string_value() függvényt, ami pont azt csinálja, mint az __str__ és hívd azt amikor szükség van rá."Persze, hogy tudtam, csak nem sejtettem!"
-
KEAN
tag
... meg pl az str() függvényél is... a lényeg, hogy az előző hozzászólásom egy jó része félrevezető lett sajnos (és szerkeszteni már nem tudok)
Csak a "slicing"-ról szóló részt vedd figyelembe.
Ahogyan azt a fórumtárs is írta előttem.[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
pigster
senior tag
Köszi a gyors válaszokat.
Túl pythonos módon akartam megoldani. A [0] megoldással működik.
Ugyanakkor a join nem azt csinálná, hogy a paraméterként megadott listán végigmegy, veszi az egyes elemeket (ezek már nem lista-részek, hanem külön-külön elemek) és azokat összefűzi? Ekkor nem kellene a __str__ metódusnak működésbe lépnie minden egyes elemen, mivel egy sztringre lenne "igény" az egyes elemek esetében?FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
-
cousin333
addikt
válasz kovisoft #1811 üzenetére
A történelmi hűség kedvéért: ennek a hivatalos neve generator expression.
mod: Nézem a PEP dátumát: nem is tudtam, hogy ez ilyen régi feature.
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz pigster #1814 üzenetére
Ezzel már én is megjártam, és szerintem is jobb lenne, ha így működne, de a Zen of Python szerint:
"Explicit is better than implicit."
[ Szerkesztve ]
"We spared no expense"
-
-
kovisoft
őstag
válasz pigster #1819 üzenetére
Igen, az x objektum stringgé konvertálásakor (pl. str(x), print("%s" % x), stb) az __str__ metódus hívódik meg, ezt kell felülírnod, ha saját olvasható formázást akarsz. Ha az __str__ nincs definiálva, akkor a __repr__ hívódik meg. Ha ez sincs definiálva, akkor is van egy alapértelmezett reprezentáció, amit már te is láttál ebben a példádban:
<kartya.Kartya object at 0x000002AE6652D860>
-
pigster
senior tag
Újabb kérdésem lenne decorator témakörben:
def func_needs_decorator():
print("I want to be decorated!")
def decorator_func(original_func):
def wrap_func():
print('Code before')
original_func()
print('Code after')
return wrap_func
decorated_func = decorator_func(func_needs_decorator)
decorated_func()Eredménye:
Code before
I want to be decorated!
Code after
Ez tiszta sor.A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag). De mégsem:
@decorator_func
def func_needs_decorator_2():
print('Want to be decorated twooo!')
func_needs_decorator_2()Ha a @-cal használom, akkor az eredeti def már nem lesz elérhető, csak a dekorált. Ez pont szembemegy azzal, amire jó lenne az egész, hogy bizonyos körülmények között az eredeti függvényt használom, máskor pedig a dekorátorral módosítottat. Ez pont csak akkor lehetséges, ha nem a @ megoldást választom, hanem ezt: decorated_func = decorator_func(func_needs_decorator)
Vagy rosszul látok valamit?
[ Szerkesztve ]
FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
cousin333
addikt
válasz pigster #1822 üzenetére
Alapvetően jól látod.
"A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag)"
Nem egészen. A
@decorator_func
az tudtommal afunc_needs_decorator = decorator_func(func_needs_decorator)
sorral egyenértékű, tehát nem véletlen, hogy "felülírja" az eredeti függvényedet (legalábbis az aktuális alkalmazásban), de ez az írásmód eleve csak egy "syntactic sugar" a fent említett lépésre. Különösen akkor jön jól, ha mondjuk több dekorátort is használni kéne egyszerre.A dekorátorokról, működésükről, használatukról itt van egy alapos cikk: [link]. Azért linkeltem, mert a hozzászólások között konkrétan felteszik ugyanazt a kérdést, amit te. A választ idézve:
"The whole point of decorators is to modify the behavior of the function through a wrapper so we don't have to actually modify the function. The function is not permanently modified; the behavior changes only when it's decorated."
Gyakorlatilag egy mások által készített függvényt ki tudsz egészíteni anélkül, hogy hozzá kéne nyúlnod. Vagy az alap függvényedet általánosabban írhatod meg, és az aktuális felhasználás során dekorátorokkal specifikálhatod. Mindezt egy átlátható szintaxissal. Ha meg mindkettő funkcionalitására szükséged van, még mindig ott az első módszer.
[ Szerkesztve ]
"We spared no expense"
-
pigster
senior tag
válasz cousin333 #1823 üzenetére
nem véletlen, hogy "felülírja" az eredeti függvényedet
Igaz, pont ezért nem kellene dekorátornak hívni. Akkor lenne így, ha működne azoriginal_func()
és pl. (tudom, hogy nem így van):@decorator_func (original_func)
vagy@decorator_func original_func
is.FIGYELEM! A többszázezres Samsung okostévék kéretlen reklámokat tolnak az arcodba.
-
cousin333
addikt
válasz pigster #1824 üzenetére
"There's been a number of complaints about the choice of the name 'decorator' for this feature. The major one is that the name is not consistent with its use in the GoF book [11]. The name 'decorator' probably owes more to its use in the compiler area -- a syntax tree is walked and annotated. It's quite possible that a better name may turn up." [link]
Ilyen az élet...
[ Szerkesztve ]
"We spared no expense"
-
McSzaby
őstag
hali,
újacska vagyko pythonban.
test="str"
test1=1
for i in (test, test1):
if type(i) != int :
i = 0Azt akarom elérni, hogy ha a változó string, akkor csak rakjon be int 0-t helyette. Ezt hogy tudom megoldani pythonban? A linkelt for ciklusban nem a változó nevét hozza magával, hanem csak az értékét, így csak az "i" értéke fog változni. Tuti én vagyok a béna, de segítsetek, plsl
[ Szerkesztve ]
#ThankYouSirAlex #ThankYouLouis
-
McSzaby
őstag
válasz kovisoft #1830 üzenetére
Gondolkoztam a te megoldásodon is, de ebben az esetben nem tudom, hogy a sorrend megmarad-e pythonban. Dict-nél tudtommal nem kőbevésett a kulcsok sorrendje. Listánál nem változhat a sorrend? Mert akkor berakom listába, átnézem, kiveszem listából, berakom változókba, ez működhet, de elég overkillnek tűnik.
>>> for x in range(2):
if type(a[x]) != int:
a[x] = 0
>>> print (a)
[0, 1]#ThankYouSirAlex #ThankYouLouis
-
KEAN
tag
válasz McSzaby #1831 üzenetére
Listánál nem változik a sorrend.
Amúgy az eredeti elképzelésed is megvalósítható így:
test='str'
test1=0
for i in ('test', 'test1'):
if type(locals()[i]) != int:
locals()[i] = 0... de ez olyan szinte favágó megoldás, hogy tekintsd inkább úgy, hogy le se írtam.
"Persze, hogy tudtam, csak nem sejtettem!"
-
EQMontoya
veterán
Azert ezt elegansabban map fuggveny vagy list comprehension hasznalataval szoktak megoldani, illetve typecheck-re isinstance inkabb, hogy oroklodes eseten ne szopassuk be magunkat. Pl. a bool az intbol szarmazik. Szoval valahogy igy:
new_items = [x if isinstance(x, int) else 0 for x in items]
[ Szerkesztve ]
Same rules apply!
-
KEAN
tag
válasz EQMontoya #1834 üzenetére
Persze-persze, tudom. Azonban itt a items és a new_items is lista. (az items lehet tuple is) Csak azt akartam megmutatni, hogy a locals() használatával lehet egy kicsit "trükközni" és az eredeti elképzelés mentén is megvalósítható a dolog.
Bármilyen valós helyzetben én sem javasolnám a megoldásomat.
Ráadásul előttem már leírták az egyik helyes megoldást.[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
kovisoft
őstag
válasz McSzaby #1836 üzenetére
Nem biztos, hogy értem a problémát. Mi a gond azzal, hogy szimplán átadod paraméterként? Példa:
def myfunc1(d):
print(repr(d))
def myfunc2(d):
myfunc1(d)
d['a']=3
myfunc1(d)
mydict={}
mydict['a']=1
mydict['b']=2
myfunc2(mydict)output:
{'a': 1, 'b': 2}
{'a': 3, 'b': 2}[ Szerkesztve ]
-
EQMontoya
veterán
válasz kovisoft #1837 üzenetére
Amit erdemes tudni ezzel kapcsolatban, hogy a dict mutable, tehat itt nem egy masolatot adsz at belole, hanem egy referenciat az eredetire. Azaz a fuggvenyen beluli modositas latszani fog ott is, ahonnan hivtad.
Nyilvan ez McSzaby-nak szol elsosorban.
Same rules apply!
-
Janos46
tag
Sziasztok!
Jobbára csak kezdőknek szólok. de bárki másnak is. Vettem egy Raspberry Pi Starter Kit V2-őt, amihez adtak egy CD-t is. A CD tartalmaz a készlet használatához 21 leckét is, amit ha nincs készleted akkor is jól lehet használni tanulás képen. Ha valakit érdekel, akkor akár az egész CD tartalmát (iso), vagy csak a leckéket el tudom küldeni. Ha valakinek van hasonló CD-je, szívesen venném, ha megosztaná velem. Ha még ismeretlen lenne, akkor a kezdőknek van egy nagyon jó oktató oldal:
https://projects.raspberrypi.org/en/Ez pedig a CD tartalma.
1. rész: A készletről
Kit leírás
Kit csomagolási lista2. rész: Oktatási leckék
1. lecke: Kezdje a Raspberry Pi-t
2. lecke: A Raspberry Pi GPIO bemutatása
3. lecke: Készítse elő a GPIO Tool-WiringPi segédprogramot
4. lecke: Python Light LED
5. lecke: Áramló LED
6. lecke: Légzés LED
7. lecke: Raspberry Pi Button Control LED
8. lecke: Raspberry Pi Drive aktív hangjelző
9. lecke: Relé vezérlése LED-re
10. lecke: Raspberry Pi SPI portok
11. lecke: Raspberry Pi A LED fényerejének vezérlése
12. lecke: Raspberry Pi Drive SG90 Servo
13. lecke: I2C 1602 LCD
14. lecke: SW520D billenőkapcsoló Raspberry Pi-vel
15. lecke: Raspberry Pi, Potenciométer és LCD
16. lecke: Raspberry Pi és PIR mozgásérzékelő
17. lecke: A Raspberry Pi DHT11 hőmérséklet és páratartalom modullal működik
18. lecke: BMP180 digitális nyomásérzékelő a Raspberry Pi-val
19. lecke: IR távirányító a Raspberry Pi-val
20. lecke: Használja a Raspberry Pi + IR távirányítót más eszközök vezérléséhez
21. lecke: Az IOT otthoni riasztórendszer készítése Pi-velÜdv. János.
Artillery, lelkes újonc vagyok, tanulni akarok!
-
Janos46
tag
Még valami, talán ez is segítség lehet (bocsi ha ismerős).
Látom a hozzászólásoknál, hogy akár kezdő, akár nem, gondok néha akadnak. Találtam egy jó kis oldalt, ami
akár segítség is lehet.
Python 3 a hét modulja
A PyMOTW-3 egy olyan cikksorozat, amelyet Doug Hellmann írt, hogy bemutassa, hogyan kell használni a Python 3 standard könyvtár moduljait . Az eredeti PyMOTW sorozaton alapul, amely a 2.7. A Python modulról a Python-ról és a használt eszközökről bővebben lásd a Python modul .
https://pymotw.com/3/
Üdv. JánosArtillery, lelkes újonc vagyok, tanulni akarok!
-
Vesporigo
aktív tag
Egy kis segítséget szeretnék kérni. Python3 alatt szeretnék kinyerni pár adatot egy oldalról BeautifulSoup használatával.
import requests
from bs4 import BeautifulSoup
page = requests.get("http://py4e-data.dr-chuck.net/comments_42.html")
soup = BeautifulSoup(page.content, "html.parser")
html = list(soup.children)[0]
body = list(html.children)[3]
p = list(body.children)[3]
mylist = p.get_text()
print(mylist)Valami hasonló felsorolást kapok eredményül (str a típus):
...
Carys21
Skye19
Atiya18
Rohan18
Nuala4
Maram1
...Itt lenne szükségem némi útmutatásra ahhoz, hogyan szedjem ki a listából a számokat. Próbáltam for ciklussal + reguláris kifejezésekkel, de utóbbi még nagyon nem megy, meg azért bízom benne, hogy van más megoldás is. Azért gondoltam a reguláris kifejezésekre, mert változó hosszúságú számok vannak a szavak végén, így egy egyszerű slice-ot nem tartom célravezetőnek, bár lehet, hogy ebben is tévedek. Ha tudnátok benne segíteni, azt nagyon megköszönném.
-
KEAN
tag
válasz Vesporigo #1843 üzenetére
Hali, több megoldás is lehetséges:
Reguláris kifejezéssel:re.sub("[0-9]", '', "Carys21")
... vagy akár így is.''.join([i for i in "Carys21" if not i.isdigit()])
for
ciklus természetesen kell mindkettő köré.Mondjuk ez esetben a reguláris kifejezésnél talán először célszerűbb re.compile()-lal "beforgatni" a kifejezést.
[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
Vesporigo
aktív tag
KEAN és axioma: nagyon köszönöm mindkettőtöknek a segítséget!
Közben találtam megoldást egy stackoverflow bejegyzésben, a mylist sorom után még ezt írtam be:
tags = soup('span')
for tag in tags:
print(tag.text)Így már kilistázta csak a számokat.
Azt hiszem, kicsit beleásom magam a BeautifulSoup-ba, mert ez még nekem picit magas, az oktatóanyag sem volt túl egyértelmű.Még1x köszönöm!
[ Szerkesztve ]
-
maser
tag
válasz pigster #1803 üzenetére
Mint ahogy már feljebb is írták:
tmp =str(self.kartyak[0:1])
Ez egy 1 elemű tömböt hoz létre, és nem csak egy elemet ad vissza.Amikor pedig egy tömböt sztringgé alakítasz, akkor a tömb elemeit próbálja reprezentálni.
Ilyenkor az objektum__repr__
függvényét hívja meg.Írd felül a
__repr__
függvényt, és akkor menni fog!Foredene @ Ragnaros | maser#2802
-
Neoteric
addikt
Hali
Szükségem lenne egy hozzáértő emberre, aki otthon van pythonban. Van egy kapott kódom ami működött ~másfél éve, és most életre szeretném kelteni: debugolni illetve aktualizálni kéne. Dióhéjban arról van szó, hogy egy előfizetéses online aukciós adatbázisból szeretnék több ezer oldalt megnyitni és az oldalakon szereplő meghatározott elemeket lementeni egy CSV fájlba, hogy aztán fel tudjam őket dolgozni. Mivel ez egy nyilvános fórum és bárki látja, nem szívesen rakom ki ide a kódot, aki tudna segíteni légyszi privátban jelezze.
PSN: ne0teric_sAN
-
Új hozzászólás Aktív témák
- Újszerű - ASROCK B450 Fatal1ty Gaming K4 AMD AM4 alaplap + Windows 10/11 HOME digitális licensz
- Újszerű - ASROCK B450 Pro4 AMD AM4 dobozos alaplap
- HP Elitedesk 800 G4 DM I5-8500T 16GB 256GB SSD (1 USB sérült, de működik)
- Dell 7060 Micro I5-8500T 8GB 500 GB SSD WIFI
- DELL LATITUDE 7390 I5-8250U/8GB/256GB SSD/1920X1080