-
2100 - 2001
4451 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
Új hozzászólás Aktív témák
-
kovisoft
őstag
Az nem jó, hogy valószínűségi alapon számolod ki, hogy csináljon-e valamit vagy sem? Pl. ha az esetek 70%-ában kell, akkor csak akkor csináljon valamit, ha egy 0-1 közötti random szám kisebb, mint 0.7.
Ha ez nem elég pontos, akkor azt is nyilván kellene tartani, hogy hányszor futott, ebből hányszor csinált valamit, és a randomban vizsgált százalékot módosítani ezzel az aránnyal (pl. ha 70%-ban kellene valamit csináljon, és eddig 50-ből 35 helyett csak 30-szor csinálta, akkor növelni a százalékot).
-
McSzaby
őstag
-
McSzaby
őstag
Sziasztok,
a következő a feladat:
Fut egy script, amely futtat egy functiont percenként. Az elvárás az lenne, hogy a functionon belül, egy bizonyos rész/command/hívás csak a teljes futási szám X%-ban fusson le.Tehát, ha 70% a megadott ráta, akkor 10 futásból csak 7x fusson le random alkalmakkor. A probléma az, hogy teljes futási szám teljesen változó, nem tudom leszámolni 1 napra, vagy 1 órára.
Mielőtt még szétfikáznánk az ötletet, - amit én is csak kaptam - higgyétek el kérlek nekem, hogy lenne értelme a mi esetünkben.
-
axioma
veterán
Elnézést
. Igazából élveztem utána olvasni a témának még jobban, mert pont a napokban kezdtem el ráugrani a hackerrank-es probléma megoldásokra, és akár hiszed akár nem elsősorban önmagam fejlesztése céljából tettem. Köszi a mini bemutatkozást, legalább már tudom, hogy kihez fordulhatok még, ha szeretném a fent ecsetelt témakört majd jobban elmélyíteni.[kieg: ajanlom Competitive Programming 3 (by Steven Halim) konyvet neked, neten megtalalhato elektronikusan, en csinaltattam belole konyvet de nem az a minoseg, nem erte meg... viszont tartalmilag erdekes, ilyenekkel is foglalkozik, ahol meg nagyon versenyspecifikus, azt at kell ugrani]
-
axioma
veterán
Elnézést
. Igazából élveztem utána olvasni a témának még jobban, mert pont a napokban kezdtem el ráugrani a hackerrank-es probléma megoldásokra, és akár hiszed akár nem elsősorban önmagam fejlesztése céljából tettem. Köszi a mini bemutatkozást, legalább már tudom, hogy kihez fordulhatok még, ha szeretném a fent ecsetelt témakört majd jobban elmélyíteni.No problem, a te idodet akartam megsporolni. Es nyugodtan kerdezz, hackerrank / hackerearth / codechef usereim nekem is vannak, bar cikkeket ritkan olvasok, inkabb a versenyek miatt. A legutobbi felvetelim resze is hackerrank teszt volt, amit a site stilusanak es mukodesenek ismereteben toredek ido alatt teljesitettem... szoval megeri.
-
Lacc
aktív tag
Nem tudhattad, de matkus, progmat diplomaval es 20ev fejlesztoi multtal a hatam mogott, benne ne'mi versenyprogramozas es annak szakirodalmaval, en ertem az ordo-t (kicsit, nagyot, matematikailag is nem csak szemlelteteskent). Meg a cimzest is nyilvan - azert amikor en vegeztem sokkal inkabb az alapmukodes reszleteit tanultuk.
Az nem volt vilagos, hogy milyen alapon jelent meg hogy dict-ben keresni O(1). Ha mar ott lett volna hogy majdnem, vagy adott meretben, meg se szolalok. Mar elozo valaszokban is volt ne'mi tulmagyarazas szamomra, de gondoltam nem szolok, ugyis lezarva, masnak meg igy is hasznos. De most szolok hogy feleslegesen - legalabbis nekem segiteskent - ne aldozz idot a tovabbi reszletezesre.Elnézést
. Igazából élveztem utána olvasni a témának még jobban, mert pont a napokban kezdtem el ráugrani a hackerrank-es probléma megoldásokra, és akár hiszed akár nem elsősorban önmagam fejlesztése céljából tettem. Köszi a mini bemutatkozást, legalább már tudom, hogy kihez fordulhatok még, ha szeretném a fent ecsetelt témakört majd jobban elmélyíteni. -
Janos46
tag
Köszönet mindenkinek a javaslatért és a megoldásért.

-
velizare
nagyúr
-
velizare
nagyúr
-
sztanozs
veterán
-
KEAN
tag
-
kovisoft
őstag
Sziasztok!
Elakdtam, tudnátokl segíteni?
Szeretnék egy szerkesztett ablakba kiíratni két szöveg közé egy számot. Lásd alant a példát. Egy egyszerű printnél működik, de ha már az ablakba kellene írnia, akkor nem megy. A harmadik write sor lenne a lényeg, az első kettő csak próbálkozás. Mi az amit nem tudok?
Valaki el tudná küldeni a megoldást?
Köszi. Jánosfrom turtle import *
import turtle
ablak=turtle.Screen()
ablak.bgcolor("lightgreen"),setup(width=400, height=400, startx=0, starty=0)
j=turtle.Turtle()
q=20
print ("Ez egy", q," szám")
j.write("Ez egy huszas szám", q, align="center", font=("Arial", 20, "normal")) # Első
j.write(q, "Ez egy huszas szám", align="center", font=("Arial", 20, "normal")) # Második
j.write("Ez egy", q, "szám", align="center", font=("Arial", 20, "normal")) # HarmadikAz zavarhatott meg, hogy a print-nek lehet adni több paramétert, ezeket mind ki fogja írni egymástól elválasztva. A write-nak viszont ennél kötöttebb a formátuma, csak egy stringet tud kiírni, tehát amit a print-nél vesszőkkel elválasztva írattál ki, azokból (ahogy a többiek előttem már javasolták) össze kell állítani egy db stringet, és azt átadni a write-nak.
-
KEAN
tag
Sziasztok!
Elakdtam, tudnátokl segíteni?
Szeretnék egy szerkesztett ablakba kiíratni két szöveg közé egy számot. Lásd alant a példát. Egy egyszerű printnél működik, de ha már az ablakba kellene írnia, akkor nem megy. A harmadik write sor lenne a lényeg, az első kettő csak próbálkozás. Mi az amit nem tudok?
Valaki el tudná küldeni a megoldást?
Köszi. Jánosfrom turtle import *
import turtle
ablak=turtle.Screen()
ablak.bgcolor("lightgreen"),setup(width=400, height=400, startx=0, starty=0)
j=turtle.Turtle()
q=20
print ("Ez egy", q," szám")
j.write("Ez egy huszas szám", q, align="center", font=("Arial", 20, "normal")) # Első
j.write(q, "Ez egy huszas szám", align="center", font=("Arial", 20, "normal")) # Második
j.write("Ez egy", q, "szám", align="center", font=("Arial", 20, "normal")) # HarmadikHi, hát mondjuk úgy, hogy eléggé összevissza paraméterezed azt a write függvényt.
https://docs.python.org/3.7/library/turtle.html#turtle.writej.write("Ez egy " + str(q) + " szám", align="center", font=("Arial", 20, "normal")) # Harmadik -
velizare
nagyúr
Sziasztok!
Elakdtam, tudnátokl segíteni?
Szeretnék egy szerkesztett ablakba kiíratni két szöveg közé egy számot. Lásd alant a példát. Egy egyszerű printnél működik, de ha már az ablakba kellene írnia, akkor nem megy. A harmadik write sor lenne a lényeg, az első kettő csak próbálkozás. Mi az amit nem tudok?
Valaki el tudná küldeni a megoldást?
Köszi. Jánosfrom turtle import *
import turtle
ablak=turtle.Screen()
ablak.bgcolor("lightgreen"),setup(width=400, height=400, startx=0, starty=0)
j=turtle.Turtle()
q=20
print ("Ez egy", q," szám")
j.write("Ez egy huszas szám", q, align="center", font=("Arial", 20, "normal")) # Első
j.write(q, "Ez egy huszas szám", align="center", font=("Arial", 20, "normal")) # Második
j.write("Ez egy", q, "szám", align="center", font=("Arial", 20, "normal")) # Harmadikpróbáltad már, hogy stringet csinálsz a q-ból str() függvénnyel? most így a turtle-t nem ismerem, nem tudom, hogy a write függvénye milyen argumentumokat vár.
-
Janos46
tag
Sziasztok!
Elakdtam, tudnátokl segíteni?
Szeretnék egy szerkesztett ablakba kiíratni két szöveg közé egy számot. Lásd alant a példát. Egy egyszerű printnél működik, de ha már az ablakba kellene írnia, akkor nem megy. A harmadik write sor lenne a lényeg, az első kettő csak próbálkozás. Mi az amit nem tudok?
Valaki el tudná küldeni a megoldást?
Köszi. Jánosfrom turtle import *
import turtle
ablak=turtle.Screen()
ablak.bgcolor("lightgreen"),setup(width=400, height=400, startx=0, starty=0)
j=turtle.Turtle()
q=20
print ("Ez egy", q," szám")
j.write("Ez egy huszas szám", q, align="center", font=("Arial", 20, "normal")) # Első
j.write(q, "Ez egy huszas szám", align="center", font=("Arial", 20, "normal")) # Második
j.write("Ez egy", q, "szám", align="center", font=("Arial", 20, "normal")) # Harmadik -
axioma
veterán
Igen, tökéletesen igazad van, lehet számlálni is, de nem egyetlen számlálót kell akkor sem nyilvántartani, hanem típusonként egyet, mivel az eredeti feladat szerint azt akarta tudni, hogy van-e adott típusú elem a dict-ben (a tuple csak egy példa volt). Tehát a módszereddel kell egy dict a típusokra, és abban nyilvántartani minden típusra az elemek számát. Amúgy Én is EQMontoya elegáns megoldását választanám, hacsak nem kell mindenáron ügyelni a performanciára.
+1

-
kovisoft
őstag
Persze, nem is arra reagaltam, hanem a dict-ben kereses O(1) vs. linearis-ra. Igazad van, rosszul linkeltem hogy mirol jutott eszembe (EQMontoya-ra kellett volna eggyel elotted), nem a te megoldasodrol. Btw arra azt irtam hogy az akkor is O(1) ha minden hozzaadas es kivetel eseten egy szamlalot update-elsz, nem kell kulon map-be is rakni. A vizsgalatok szama (marmint hogy az elem tuple-e) ugyanannyi.
Igen, tökéletesen igazad van, lehet számlálni is, de nem egyetlen számlálót kell akkor sem nyilvántartani, hanem típusonként egyet, mivel az eredeti feladat szerint azt akarta tudni, hogy van-e adott típusú elem a dict-ben (a tuple csak egy példa volt). Tehát a módszereddel kell egy dict a típusokra, és abban nyilvántartani minden típusra az elemek számát. Amúgy Én is EQMontoya elegáns megoldását választanám, hacsak nem kell mindenáron ügyelni a performanciára.
-
axioma
veterán
Persze, nem is arra reagaltam, hanem a dict-ben kereses O(1) vs. linearis-ra. Igazad van, rosszul linkeltem hogy mirol jutott eszembe (EQMontoya-ra kellett volna eggyel elotted), nem a te megoldasodrol. Btw arra azt irtam hogy az akkor is O(1) ha minden hozzaadas es kivetel eseten egy szamlalot update-elsz, nem kell kulon map-be is rakni. A vizsgalatok szama (marmint hogy az elem tuple-e) ugyanannyi.
-
kovisoft
őstag
Nem tudhattad, de matkus, progmat diplomaval es 20ev fejlesztoi multtal a hatam mogott, benne ne'mi versenyprogramozas es annak szakirodalmaval, en ertem az ordo-t (kicsit, nagyot, matematikailag is nem csak szemlelteteskent). Meg a cimzest is nyilvan - azert amikor en vegeztem sokkal inkabb az alapmukodes reszleteit tanultuk.
Az nem volt vilagos, hogy milyen alapon jelent meg hogy dict-ben keresni O(1). Ha mar ott lett volna hogy majdnem, vagy adott meretben, meg se szolalok. Mar elozo valaszokban is volt ne'mi tulmagyarazas szamomra, de gondoltam nem szolok, ugyis lezarva, masnak meg igy is hasznos. De most szolok hogy feleslegesen - legalabbis nekem segiteskent - ne aldozz idot a tovabbi reszletezesre.A "dict-ben keresni O(1)"-et te kezdted el emlegetni. Az O(1) eredetileg úgy jelent meg, hogy van-e elem egy dict-ben, ami nem dict-ben keresés, ezért nem "majdnem", hanem pont O(1).
-
axioma
veterán
Röviden O(1) az csak egy kategóra, amely azt jelöli, hogy nem függ a bemeneti elemek számától, n-től.
Megegyezés, hogy O(C) ---> O(1) kategóriának felel meg, ahol C egy konstans, ami > 0. (O(9) --> O(1) lesz)
Másképp, O(bármely konstans) kifejezést az O(1)-nek feleltetnek meg.Röviden O(g(x)) = C * g(x), ahol C egy konstans, ezért mondható, hogy bármely konstans --> O(1)-nek felelthető meg, és O(g(x)) = f(x) pedig csak egy felső becslés az f(x) függvényre az adott x helyen. x --> végtelen alatt. (egyenlőség jel csalóka, tudni kell a mögöttes matekot hozzá értelemezni)
Máshogy, O(1) azt jelöli, hogy a processzornak csak 1db műveletet kell elvégeznie, hogy teljesítsen egy feladatot. Az az, ha van n elemből álló bemeneti lista, akkor a dict-ből 1 elem kivétele csak 1 művelet, for-ral bejárni, már n művelet. Ilyenkor nem is kötelező, hogy a processzor műveletének lefutása független legyen n-től, az az f(x) függvény függhet n-től, de a rá adott felső becslésnek már O()-nak már függetlennek kell lennie.
Dict-ből az elem kivétele még a következkő fontos kategóriát sem éri el, ami az O(log log n), ami a prioritásos sornál tűnik fel
- igen van még kettő közte, de nem igazán találok arra infós példát, hogy hol számítana.Ha ismered a C pointerek műkődését az segít megérteni, hogy miért is O(1), egy
atömb 4-ik indexét így is eléred a C-bena[4], ha viszont ismered a C-t, akkor tudod jól, hogy emögött valójában milyen művelet van:*(a+4), ahol annyit jelent, hogy az tömb-öt jelöli pointer-hez hozzáadik 4-et akkor megkapot a 4-ik elemet a tömbből (A tömb pointer mindig a tömb első elemére mutat!)Nem tudhattad, de matkus, progmat diplomaval es 20ev fejlesztoi multtal a hatam mogott, benne ne'mi versenyprogramozas es annak szakirodalmaval, en ertem az ordo-t (kicsit, nagyot, matematikailag is nem csak szemlelteteskent). Meg a cimzest is nyilvan - azert amikor en vegeztem sokkal inkabb az alapmukodes reszleteit tanultuk.
Az nem volt vilagos, hogy milyen alapon jelent meg hogy dict-ben keresni O(1). Ha mar ott lett volna hogy majdnem, vagy adott meretben, meg se szolalok. Mar elozo valaszokban is volt ne'mi tulmagyarazas szamomra, de gondoltam nem szolok, ugyis lezarva, masnak meg igy is hasznos. De most szolok hogy feleslegesen - legalabbis nekem segiteskent - ne aldozz idot a tovabbi reszletezesre. -
Lacc
aktív tag
Röviden O(1) az csak egy kategóra, amely azt jelöli, hogy nem függ a bemeneti elemek számától, n-től.
Megegyezés, hogy O(C) ---> O(1) kategóriának felel meg, ahol C egy konstans, ami > 0. (O(9) --> O(1) lesz)
Másképp, O(bármely konstans) kifejezést az O(1)-nek feleltetnek meg.Röviden O(g(x)) = C * g(x), ahol C egy konstans, ezért mondható, hogy bármely konstans --> O(1)-nek felelthető meg, és O(g(x)) = f(x) pedig csak egy felső becslés az f(x) függvényre az adott x helyen. x --> végtelen alatt. (egyenlőség jel csalóka, tudni kell a mögöttes matekot hozzá értelemezni)
Máshogy, O(1) azt jelöli, hogy a processzornak csak 1db műveletet kell elvégeznie, hogy teljesítsen egy feladatot. Az az, ha van n elemből álló bemeneti lista, akkor a dict-ből 1 elem kivétele csak 1 művelet, for-ral bejárni, már n művelet. Ilyenkor nem is kötelező, hogy a processzor műveletének lefutása független legyen n-től, az az f(x) függvény függhet n-től, de a rá adott felső becslésnek már O()-nak már függetlennek kell lennie.
Dict-ből az elem kivétele még a következkő fontos kategóriát sem éri el, ami az O(log log n), ami a prioritásos sornál tűnik fel
- igen van még kettő közte, de nem igazán találok arra infós példát, hogy hol számítana.Ha ismered a C pointerek műkődését az segít megérteni, hogy miért is O(1), egy
atömb 4-ik indexét így is eléred a C-bena[4], ha viszont ismered a C-t, akkor tudod jól, hogy emögött valójában milyen művelet van:*(a+4), ahol annyit jelent, hogy az tömb-öt jelöli pointer-hez hozzáadik 4-et akkor megkapot a 4-ik elemet a tömbből (A tömb pointer mindig a tömb első elemére mutat!) -
alec.cs
tag
Nem olyan nagy vonalakban:
from datetime import datetime
import locale
# a szöveges adattartalom miatt megadod, milyen locale-ről van szó
locale.setlocale(locale.LC_TIME,('hu_HU', 'UTF-8'))
d = '2019. február'
#datetime-ra konvertálva:
dt_obj = datetime.strptime(d, '%Y. %B')
#ezután jöhet a tetszőleges formázás
ahogy_tetszik = datetime.strftime(dt_obj, '%Y-%m')
print(ahogy_tetszik)Formátumok:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior@s1999xx
Kíváncsiságból nyomtam egy getlocale LC_TIME-t, és None lett a végeredmény. A getdefaultlocale() helyesen adta vissza a környezeti változót. Mi ennek az oka? Lehet annak köze hozzá, hogy nálam az egyes kategóriák eltérőek?Köszönöm: @Siriusb, @s1999xx, @sztanozs
Köszönöm a válaszokat!
Én is így gondoltam, csak a setlocal lemaradt.Még egy kérdés ezzel kapcsolatban:
- Ha ezeket a kódokat beteszem egy def-be, akkor az ott kiadott setlocal csak arra a def-re lesz érvényes. Jól gondolom, ugye?
- Ha meg meg a program elejére rakom, akkor az pedig az egész programra lesz érvényes (míg egy másik setlocal nincs kiadva)?
-
Siriusb
veterán
Gondolom azért ignorálja, hogy pont a környezeti változókból eredő problémákat kiszűrje (az alkalmazás működése ne függjön attól, milyen környezetben használják, hanem attól, hogy a fejlesztő mit állítottz be). A Locale sok esetben több gondot jerlent mint hasznot...
Python module helpből:
Initially, when a program is started, the locale is the C locale, no matter what the user’s preferred locale is. There is one exception: the LC_CTYPE category is changed at startup to set the current locale encoding to the user’s preferred locale encoding. The program must explicitly say that it wants the user’s preferred locale settings for other categories by calling setlocale(LC_ALL, '').Köszi!
Végül is teljesen logikus a magyarázat. -
sztanozs
veterán
Gondolom azért ignorálja, hogy pont a környezeti változókból eredő problémákat kiszűrje (az alkalmazás működése ne függjön attól, milyen környezetben használják, hanem attól, hogy a fejlesztő mit állítottz be). A Locale sok esetben több gondot jerlent mint hasznot...
Python module helpből:
Initially, when a program is started, the locale is the C locale, no matter what the user’s preferred locale is. There is one exception: the LC_CTYPE category is changed at startup to set the current locale encoding to the user’s preferred locale encoding. The program must explicitly say that it wants the user’s preferred locale settings for other categories by calling setlocale(LC_ALL, ''). -
Siriusb
veterán
Nem olyan nagy vonalakban:
from datetime import datetime
import locale
# a szöveges adattartalom miatt megadod, milyen locale-ről van szó
locale.setlocale(locale.LC_TIME,('hu_HU', 'UTF-8'))
d = '2019. február'
#datetime-ra konvertálva:
dt_obj = datetime.strptime(d, '%Y. %B')
#ezután jöhet a tetszőleges formázás
ahogy_tetszik = datetime.strftime(dt_obj, '%Y-%m')
print(ahogy_tetszik)Formátumok:
https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior@s1999xx
Kíváncsiságból nyomtam egy getlocale LC_TIME-t, és None lett a végeredmény. A getdefaultlocale() helyesen adta vissza a környezeti változót. Mi ennek az oka? Lehet annak köze hozzá, hogy nálam az egyes kategóriák eltérőek? -
axioma
veterán
Igen, Ordo(1) közelínek tekinthető. Python-ban ez kifejzetten Ordo(1) közelinek tekinthető (átlag).
Hash Table-ben (amire épül):
Legjobb esetben Ordo(1+lambda/2)
Legrosszabb esetben Ordo(lambda)
Lambda a kihasználási tényező (angolul load factor), lambda = elemek száma / hash tábla memória méreteBővebben link.
Eléggé függ, hogy hogyan van mögötte megvalósítva a hash-elés, ettől is függ a memória mérete.Tipp: Pythonban a dictionary létrehozása literállal:
d={}kétszer gyorsabb, mint konstruktorrald = dict()Koszi a kimerito valaszt, a tipp erdekes de lusta programozo vagyok, mindig csak kapcsos zarojeleket irtam

Egyebkent pont erre gondoltam, hogy egy meret folott mar nem konstans. De fura a linken hogy a vodrot mar linearis keresessel feltetelezi. -
Janos46
tag
Koszia tippet, van pip, de:
Could not find a version that statisfies the requirement thonny (from version).
No matching distribution found for thonny.Akkor most egy altalanos kerdesem lenne, hogy a Raspberry-ben van egy - mu - nevu python program, amit kulun meg lehet talalni valahol?
-
alec.cs
tag
Sziasztok!
Hogy tudom átalakítani az alábbit az alábbi módon: '2019. február' -> '2019-02'
Tehát, '2019. február' stringből legyen '2019-02' string.
-
Janos46
tag
Sziasztok!
Van egy ASUS tinker board-om de abban levo pyhon-nal sokkal attekinthetobb a Pi3 thonny phyton-ja. Le lehet azt kulon tolteni valahonnan?
Koszi es Udv. Janos -
Lacc
aktív tag
Igen, Ordo(1) közelínek tekinthető. Python-ban ez kifejzetten Ordo(1) közelinek tekinthető (átlag).
Hash Table-ben (amire épül):
Legjobb esetben Ordo(1+lambda/2)
Legrosszabb esetben Ordo(lambda)
Lambda a kihasználási tényező (angolul load factor), lambda = elemek száma / hash tábla memória méreteBővebben link.
Eléggé függ, hogy hogyan van mögötte megvalósítva a hash-elés, ettől is függ a memória mérete.Tipp: Pythonban a dictionary létrehozása literállal:
d={}kétszer gyorsabb, mint konstruktorrald = dict() -
sonar
addikt
így hívunk függvényt argumentum nélkül:
foo()
amit te csinálsz, azzal nem a függvényt hívod meg, hanem a függvény objektumát. ha def-fel vagy lambdával készítesz függvényt, akkor ezt a python megcsinálja neked.>>> def foo(): pass
...
>>> foo
<function foo at 0x106aafd70>hívd csak meg a five függvényed objektumát natúr, és valami hasonlót fogsz kapni. és persze a külső föggvényeid is erre az értékre futnak ilyenkor, nem pedig arra, amit a five() helyesen meghívva visszaadna.
és persze hibaüzenetet is azért nem kapsz az egyébként hibás five hívásodra, csak legfeljebb a külső függvényeidre, mert hiába van neki megadva, hogy mivel kell meghívni, nem a függvényt hívod meg, hanem az objektumát.
Kösz, még értelmeznem kell a javaslatokat. Egyéként codewars-os feladat, de asszem ma inkább nem kellett volna ezen matekozni.
-
velizare
nagyúr
így hívunk függvényt argumentum nélkül:
foo()
amit te csinálsz, azzal nem a függvényt hívod meg, hanem a függvény objektumát. ha def-fel vagy lambdával készítesz függvényt, akkor ezt a python megcsinálja neked.>>> def foo(): pass
...
>>> foo
<function foo at 0x106aafd70>hívd csak meg a five függvényed objektumát natúr, és valami hasonlót fogsz kapni. és persze a külső föggvényeid is erre az értékre futnak ilyenkor, nem pedig arra, amit a five() helyesen meghívva visszaadna.
és persze hibaüzenetet is azért nem kapsz az egyébként hibás five hívásodra, csak legfeljebb a külső függvényeidre, mert hiába van neki megadva, hogy mivel kell meghívni, nem a függvényt hívod meg, hanem az objektumát.
-
sztanozs
veterán
így próbáld:
def five(op=''):
if op != '': return eval(op)
return str(5)
def seven(op=''):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param))
print(seven(times(five())))mod illetve még némi synthetic sugar:
def five(op=''):
if op != '': return eval(op)
return str(5)
def seven(op=''):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param() if callable(param) else param))
print(seven(times(five())))
print(seven(times(five))) -
kovisoft
őstag
Egyrészt nem hívhatod meg argumentum nélkül, mert a definícióban fixen ott van az op argumentum. Másrészt az argumentum nélküli meghívásnál is kellenének a zárójelek, de az is hiányzik, ezért ez így nem függvényhívás, hanem a függvény objektum lekérése:
> five('')
'5'
> five
<function five at 0x7f3901b8ae18>
> five()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: five() missing 1 required positional argument: 'op' -
sonar
addikt
-
kovisoft
őstag
A five() egy függvény, de ezt argumentum nélkül hívod meg. Ha így hívnád meg, akkor működne:
print(seven(times(five('')))) -
sonar
addikt
Hi,
Nagyon péntek van. Van vkinek ötlete, hogy miért nem kezdődhet *-gal a visszatérő string?def five(op):
if op != '': return eval(op)
return str(5)
def seven(op):
if op != '': return eval(str(7) + op)
return str(7)
def times(param):
return str('*' + str(param))
print(seven(times(five))) -
axioma
veterán
Ja bocs, en mar ugy altalaban tartottam ott, hogy tekintheto-e a dict eleres alapbol O(1)-nek.
(Az hogy van-e benne tuple azt siman, mondjuk nem is kell ket dict csak szamolni hogy hanyat rakott bele es hanyat torolt...) -
kovisoft
őstag
Márpedig ez O(1), mert az eredeti probléma szerint nem key lookupról van szó, hanem pusztán annyit kell vizsgálni, hogy a tuple típushoz használt dict üres-e.
-
axioma
veterán
Hat addig OK, ha egy egyezest kell vizsgalni. De mi van ha tobb hash egybeesik es meg kell keresni kozule hogy melyik a mienk, ott mar minimum valami logaritmikus tag bejon. En inkabb erre gondoltam. Ill. pl. ha stringrol beszelunk, akkor linearis a hosszaval az egyezes-vizsgalat.
De ez azert az itt felmerulo peldaknal nyilvan irrelevans. -
EQMontoya
veterán
A key comparison operatoratol fugg, mert hash egyezes eseten meg kell vizsgalni, hogy tenyleg egyforma-e a ket elem.
-
axioma
veterán
Errol nekem az a kerdes jut eszembe, meddig tekintheto O(1)-nek, mert azert egy bizonyos elemszam utan mar nem feltetlen. Sot bonyolultabb key eseten mire a key-n vegigmegy az se feltetlen konstans.
-
Siriusb
veterán
Ez nagyon tetszik, köszönöm! Neked mindig olyan szép megoldásaid vannak!
(#2043) kovisoft
Habár igazad vagyon, nekem mégis jólesik ránézni a megoldására.
Ráadásul még tanultam is valami újat.
Kösz a Te megoldásod is!
-
kovisoft
őstag
-
EQMontoya
veterán
De hát ugye ez is egy ciklus, hiszen végigmegy a filter a kulcsokon.
Ha nagyon fontos, hogy O(1) lépésben meglegyen, akkor típus szerint külön dict-ben célszerű tárolni az elemeket. Ekkor viszont az összes dict-ben egyszerre történő keresés lesz macerásabb, amire lehet írni egy függvényt, ami típus szerint a megfelelő dict-ből olvas. Vagy lehet használni az unpacking operatort (**) a dict-ek összefűzésére, pl:
> dtuple={(1,2,3):1, (4,5,6):2}
> dint={7:3, 8:4}
> {**dtuple, **dint}
{(1, 2, 3): 1, (4, 5, 6): 2, 7: 3, 8: 4}Hat igen, igy viszont az O(1) kereses helyett kapsz egy linearisat, ami eleg painful.
-
kovisoft
őstag
De hát ugye ez is egy ciklus, hiszen végigmegy a filter a kulcsokon.
Ha nagyon fontos, hogy O(1) lépésben meglegyen, akkor típus szerint külön dict-ben célszerű tárolni az elemeket. Ekkor viszont az összes dict-ben egyszerre történő keresés lesz macerásabb, amire lehet írni egy függvényt, ami típus szerint a megfelelő dict-ből olvas. Vagy lehet használni az unpacking operatort (**) a dict-ek összefűzésére, pl:
> dtuple={(1,2,3):1, (4,5,6):2}
> dint={7:3, 8:4}
> {**dtuple, **dint}
{(1, 2, 3): 1, (4, 5, 6): 2, 7: 3, 8: 4} -
EQMontoya
veterán
Hat a dict.keys visszaad egy listat, amit tudsz filterezni.
Tehat pl. igy:
tuple_keys = list(filter(lambda x: isinstance(x, tuple), d.keys()))Fejbol irtam, nem probaltam ki, lehet benne typo.

-
Siriusb
veterán
Ismét egy fejtörő:
Egy dict-ben tudom egyszerűen vizsgálni, hogy van-e benne olyan key, ami pl. tuple típusú? Vagy csak ciklusban tudom megnézni? -
Siriusb
veterán
De azzal kezdted a mondandódat, hogy "Adott 3 osztály:", majd felsoroltad őket örökléssel együtt. Vagy örököl, vagy nem, de ezzel ne "érzékeltess" semmit, mert az félrevezető...

Ebben az esetben valóban a classmethod tűnik jó megoldásnak (esetleg a staticmethod), mindazonáltal az örökléssel is megoldható, hogy akár a saját
f1()függvényt, akár a szülő osztályokf1()függvényét használd tetszés szerint.A fenti példa így az alábbiak szerint módosulhat:
class A:
def f1(self):
print('f1 in Class A')
class B(A):
@classmethod
def f1(cls):
print('f1 in Class B')
class C(A):
def f1(self):
print('f1 in Class C')
def f2(self):
B.f1()
c = C()
c.f2()f1 in Class B
Eredetileg így írtam le: ClassC(
ClassB, ClassA), csak valahogy az áthúzás eltűnt, én meg nem vettem észre.
Szóval így valóban félrevezető lett, elnézést. -
cousin333
addikt
Nem örököl feleslegesen, mert mindegyik alosztályt a ClassA-ból származtatom le. Pl. nem szeretném megörökölni ClassB.f1()-t, mert az eredetire van szükségem ClassC-ben, nem az itt felülírottra. Valamint emellett bizonyos körülmények esetén szükséges meghívni a ClassB.f1()-t ClassC-ből.
ClassC-nél csak azért írtam be a felmenők közé ClassB-t is, mert érzékelteteni szerettem volna, hogy annak egyik metódusára is szükségem van.De azzal kezdted a mondandódat, hogy "Adott 3 osztály:", majd felsoroltad őket örökléssel együtt. Vagy örököl, vagy nem, de ezzel ne "érzékeltess" semmit, mert az félrevezető...

Ebben az esetben valóban a classmethod tűnik jó megoldásnak (esetleg a staticmethod), mindazonáltal az örökléssel is megoldható, hogy akár a saját
f1()függvényt, akár a szülő osztályokf1()függvényét használd tetszés szerint.A fenti példa így az alábbiak szerint módosulhat:
class A:
def f1(self):
print('f1 in Class A')
class B(A):
@classmethod
def f1(cls):
print('f1 in Class B')
class C(A):
def f1(self):
print('f1 in Class C')
def f2(self):
B.f1()
c = C()
c.f2()f1 in Class B
-
Siriusb
veterán
Először is: a ClassC feleslegesen örököl a ClassA-tól, hiszen a ClassB már megörökölt tőle mindent.
"Szeretném ClassC-ben végrehajtatni a ClassB.f1()-et anélkül, hogy bármi mást örökölne ClassB-ből"
Erről már lekéstél, tekintve, hogy a ClassC a ClassB-ből örököl...

Feltételezve, hogy a ClassC-t úgyis példányosítod, a
super()lesz a megoldásclass A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super().f1()
c = C()
c.f2()f1 in Class B
Ha pedig konkrétan a ClassA
f1()függvényét akarod elérni, akkor:class A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super(B, self).f1()
c = C()
c.f2()f1 in Class A
A
classmethodis mehet, de akkor nem kell a ClassC-nek a ClassB-ből örökölnie.Nem örököl feleslegesen, mert mindegyik alosztályt a ClassA-ból származtatom le. Pl. nem szeretném megörökölni ClassB.f1()-t, mert az eredetire van szükségem ClassC-ben, nem az itt felülírottra. Valamint emellett bizonyos körülmények esetén szükséges meghívni a ClassB.f1()-t ClassC-ből.
ClassC-nél csak azért írtam be a felmenők közé ClassB-t is, mert érzékelteteni szerettem volna, hogy annak egyik metódusára is szükségem van. -
cousin333
addikt
Először is: a ClassC feleslegesen örököl a ClassA-tól, hiszen a ClassB már megörökölt tőle mindent.
"Szeretném ClassC-ben végrehajtatni a ClassB.f1()-et anélkül, hogy bármi mást örökölne ClassB-ből"
Erről már lekéstél, tekintve, hogy a ClassC a ClassB-ből örököl...

Feltételezve, hogy a ClassC-t úgyis példányosítod, a
super()lesz a megoldásclass A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super().f1()
c = C()
c.f2()f1 in Class B
Ha pedig konkrétan a ClassA
f1()függvényét akarod elérni, akkor:class A:
def f1(self):
print('f1 in Class A')
class B(A):
def f1(self):
print('f1 in Class B')
class C(B):
def f1(self):
print('f1 in Class C')
def f2(self):
super(B, self).f1()
c = C()
c.f2()f1 in Class A
A
classmethodis mehet, de akkor nem kell a ClassC-nek a ClassB-ből örökölnie. -
Siriusb
veterán
Gtk kérdés, linux+primary selection(középső egérgombbal másolás):
Label, entry esetén működik, hogy az itt kijelölt szöveget középső gomb nyomásával beillesszem más alkalmazásba, viszont CellRendererText (editable=true) használatakor nem.
Mi ennek az oka, és mi a gyógyír rája? A barátom és én nem tudtunk megoldást találni.
-
Siriusb
veterán
-
Siriusb
veterán
Adott 3 osztály:
ClassA()
def f1()
ClassB(ClassA)
def f1()
ClassC(ClassB, ClassA)
def f1()Szeretém ClassC-ben végrehajtatni a ClassB.f1()-et anélkül, hogy bármi mást örökölne ClassB-ből vagy ClassB-nek testet kéne öltenie, illetve C.f1()-re bármiféle hatása lenne. Lehetséges ez?
-
Janos46
tag
Sziasztok!
Kezdő vagyok. Hogyan kell megírni, hogy ne egymás alá, hanem egymás mellé sorba írja ki az eredményt?
Gondolom egyszerű dolog (de nem nekem).Köszi a segítséget.def sorba10():
a=1
while a<11:
print (a*5)
a=a+1
sorba10() -
velizare
nagyúr
-
Lacc
aktív tag
EQMontoya megoldása talán a legegyszerűbb, legelegánsabb és leggyorsabb, viszont nem tartja meg az eredeti elemek sorrendjét. Nem tudom, hogy ez szempont volt-e, mindenesetre ha igen, és list comprehensiont akarsz használni, akkor itt egy olyan verzió, ami megtartja az elemek sorrendjét:
newArr = []
[newArr.append(i) for i in arr if i not in newArr]
print(newArr)Köszi, szuper, így már értem, hogy hol hibáztam. Azt hittem, hogy a list comprehension a "map-elésnek" felel meg.
(neked is kösz EQMontoya) -
kovisoft
őstag
Hali, ezt hogyan lehet átalakitani egysorosá?
A lényeg, hogy ne másolja át a duplikált elemeket a másik tömbbe
Ez műkődiknewArr = []
for i in arr:
if i not in newArr:
newArr.append(i)De ez már nem, ez az "egysoros" változat, bocsánat nem tudom a nevét.
newArr = []
newArr = [i for i in arr if i not in newArr]Ugyanis ez a változat ugyanúgy beleteszi a duplikált elemeket is.
EQMontoya megoldása talán a legegyszerűbb, legelegánsabb és leggyorsabb, viszont nem tartja meg az eredeti elemek sorrendjét. Nem tudom, hogy ez szempont volt-e, mindenesetre ha igen, és list comprehensiont akarsz használni, akkor itt egy olyan verzió, ami megtartja az elemek sorrendjét:
newArr = []
[newArr.append(i) for i in arr if i not in newArr]
print(newArr) -
EQMontoya
veterán
Hali, ezt hogyan lehet átalakitani egysorosá?
A lényeg, hogy ne másolja át a duplikált elemeket a másik tömbbe
Ez műkődiknewArr = []
for i in arr:
if i not in newArr:
newArr.append(i)De ez már nem, ez az "egysoros" változat, bocsánat nem tudom a nevét.
newArr = []
newArr = [i for i in arr if i not in newArr]Ugyanis ez a változat ugyanúgy beleteszi a duplikált elemeket is.
newArr = list(set(arr))
-
Lacc
aktív tag
Hali, ezt hogyan lehet átalakitani egysorosá?
A lényeg, hogy ne másolja át a duplikált elemeket a másik tömbbe
Ez műkődiknewArr = []
for i in arr:
if i not in newArr:
newArr.append(i)De ez már nem, ez az "egysoros" változat, bocsánat nem tudom a nevét.
newArr = []
newArr = [i for i in arr if i not in newArr]Ugyanis ez a változat ugyanúgy beleteszi a duplikált elemeket is.
-
n00n
őstag
-
kovisoft
őstag
Most nem tudom kipróbálni, de arra tudok még gondolni, hogy esetleg a recv üres stringet vagy None-t ad vissza ilyenkor. Mi történik, ha beleteszel egy ilyen else ágat?
message = conn.recv(1024)
if message:
...
else:
break -
n00n
őstag
-
kovisoft
őstag
-
n00n
őstag
Igen, viszont nem kapok socket error-t valamiért.
-
kovisoft
őstag
Két exception-ről van most szó. Az egyiket a szerverben szeretné elkapni, a KeyboardInterrupt viszont a kliensben jön be. Amit írsz tehát, annak a kliensbe kellene mennie, a szerverben akár elég lenne a socket.error-t elkapni.
-
sztanozs
veterán
beraktam egy ilyet:
except Exception as e:
logging.error("Error receiving data: " + e)De valamiét ha megszakítom a klienst ctrl+c-vel, az nem küld semmilyen exception-t, próbáltam Exception helyet socket.error-ral is.
Kliens: az csak tesztelési célzattal készült, a szerveren lenne a fő hangsúly.

Sima
Exceptionhelyett ezzel próbáld meg:except (KeyboardInterrupt, SystemExit): -
kovisoft
őstag
beraktam egy ilyet:
except Exception as e:
logging.error("Error receiving data: " + e)De valamiét ha megszakítom a klienst ctrl+c-vel, az nem küld semmilyen exception-t, próbáltam Exception helyet socket.error-ral is.
Kliens: az csak tesztelési célzattal készült, a szerveren lenne a fő hangsúly.

Esetleg azt tudod csinálni, hogy a kliensben kezeled azt, hogy bármilyen okból kilép a kliens, mindenképpen zárja le a socketet. Pl. az egész mehetne egy try blokkba, aminek a finally ágában van a server.close().
-
n00n
őstag
beraktam egy ilyet:
except Exception as e:
logging.error("Error receiving data: " + e)De valamiét ha megszakítom a klienst ctrl+c-vel, az nem küld semmilyen exception-t, próbáltam Exception helyet socket.error-ral is.
Kliens: az csak tesztelési célzattal készült, a szerveren lenne a fő hangsúly.

-
kovisoft
őstag
Másik megjegyzésem a kliensre vonatkozik: a kliens egy cikluson belül olvassa a szervertől jövő választ, ill. küldi az új üzenetet. Viszont ha a szerver valamiért sokáig nem válaszol, akkor a recv blokkol, és ezért addig új üzenetet sem fog tudni küldeni. Ez nem feltétlen baj, hogy nincsenek egymásra eresztve az üzenetek, de innen hiányzik nekem minimum valami hibakezelés. Pl. mi történjen socket.error esetén? Lépjen ki a kliens? Vagy próbáljon nyitni egy új kapcsolatot a szerver felé? Ki kell-e timeout-olni, ha valamiért nem érkezik meg a válasz egy üzenetre? Heartbeat küldést most nem látok, de ha lenne, akkor gondolom fontos lenne, hogy egy beragadt üzenet ne blokkolja a heartbeat-et.
-
kovisoft
őstag
Szerintem ha a recv dob egy socket.error-t, akkor ki lehet lépni a végtelen ciklusból, és befejezni a thread futását.
-
n00n
őstag
Nekem a thread kezelés nem teljesen kerek. Ha jól látom, minden egyes kliens csatlakozásánál létrejön egy szerver thread, ami végtelen ciklusban fut, és akkor sem lép ki, amikor a kliens lezárta a kapcsolatot (minden exception le van nyelve a ciklusban). Tehát ha sokszor csatlakoznak a kliensek, akkor ezek a thread-ek mind megmaradnak. Vagy rosszul látom?
Alap esetben az az elképzelés, hogy nincs lezárva a kapcsolat soha, de jogos, amit mondasz, mert hiba miatt ilyenkor valóban megmarad a thread. Hol kellene elkapnom?
-
kovisoft
őstag
Nekem a thread kezelés nem teljesen kerek. Ha jól látom, minden egyes kliens csatlakozásánál létrejön egy szerver thread, ami végtelen ciklusban fut, és akkor sem lép ki, amikor a kliens lezárta a kapcsolatot (minden exception le van nyelve a ciklusban). Tehát ha sokszor csatlakoznak a kliensek, akkor ezek a thread-ek mind megmaradnak. Vagy rosszul látom?
-
n00n
őstag
Egyébként a recv-n kívül láttok még valamit a kódban, amit egyáltalán nem így kellene megvalósítani vagy lehetne jobban is, stb?
-
Siriusb
veterán
Az adatbázis alapvetően egy lekérdező (tároló) rendszer - nem fog a lekérdezők felé eseményket generálni, hogy megváltozott valami.
Annyit tudsz csinálni, hogy a változtatásokra triggert írsz, ami egy táblában rögzíti az utolsó módosítás idejét. Azt a táblát lekérdezve meg tudod állapítani, hogy történt-e változás, és kell-e frissíteni a felületet. Amúgy az SQLite nem kifejezetten multiuser környezetbe lett tervezve, nem tudom egyáltalán rendelkezik-e megfelelő konkurencia-kezeléssel...és cain69, justmemory,
Köszönöm a válaszokat!
Tudom, hogy az sqlite meglehetősen behatárolt az eltérő működésű adatbázisokhoz képest, s bizonyos feladatokra optimálisabb mást választani, sőt ez nem is lehet alternatíva. Próbálom kitapasztalni, meddig lehet benne elmenni, nem volt vele eddig tapasztalatom.
Bújtam a netet, olvasgattam a leírásokat, de igazán jó megoldást nem találtam, ezért dobtam be ide a kérdést, hátha... Marad, hogy nem az adatbázis felől kezelem le a dolgot.Nagyon köszönöm, hogy mindig kifejtitek a véleményeteket, nem egy-két szóval intézitek el a választ!
-
sztanozs
veterán
-
n00n
őstag
-
sztanozs
veterán
Utánaolvastam és nem vár 1024 byte-ra. A send() elküldi a küldött byte-ok számát is, így a recv azt is megkapja. Szóval ha kevesebb az nem baj,, de 1024 lehet maximum nálam. Aminél több nem is jöhet nálam.
socket.recv(bufsize[, flags])
Receive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by bufsize.Egyébként működik:
Server:
test@test-machine:~/pyproject python3 server.py
2019-02-27 13:38:47,062 - 192.168.0.2:39620 - Connected
2019-02-27 13:38:52,597 - 192.168.0.2:39620 - Message received: b'Hi\n'
2019-02-27 13:38:53,603 - 192.168.0.2:39620 - Message sent: b'Welcome\n'Client:
test@test-machine:~/pyproject python3 client.py
Hi
Response: b'Welcome\n'És mi történik akkor, ha mégis többet küld, mint 1024 byte?
-
n00n
őstag
Utánaolvastam és nem vár 1024 byte-ra. A send() elküldi a küldött byte-ok számát is, így a recv azt is megkapja. Szóval ha kevesebb az nem baj,, de 1024 lehet maximum nálam. Aminél több nem is jöhet nálam.
socket.recv(bufsize[, flags])
Receive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by bufsize.Egyébként működik:
Server:
test@test-machine:~/pyproject python3 server.py
2019-02-27 13:38:47,062 - 192.168.0.2:39620 - Connected
2019-02-27 13:38:52,597 - 192.168.0.2:39620 - Message received: b'Hi\n'
2019-02-27 13:38:53,603 - 192.168.0.2:39620 - Message sent: b'Welcome\n'Client:
test@test-machine:~/pyproject python3 client.py
Hi
Response: b'Welcome\n' -
kovisoft
őstag
Sziasztok!
Ismerkedek a Pythonnal még csak, de írtam egy egyszerű TCP szervert/klienset. Ránéznétek és elmondanátok, hogy mi a véleményetek róla? Mit csinálnátok másképp? A cél az volt, hogy a szerver folyamatosan figyel a 9999-es porton, a kliens csatlakozik hozzá és onnantól kezdve folyamatos beszélgetés megy, szóval nincs a socket lezárva. Két fajta üzenet jöhet a klienstől:
id|name|message\n
id|name|HEARTBEAT\npl.:
001|client|test_message\n
001|client|HEARTBEAT\nHa az első akkor meghív egy localhostos php szervert a python server, ami visszaad egy választ, egyelőre mindig ugyanazt adja vissza, később a message alapján más lesz.
pl:
001|server|test_response\n
vagy ha HEARTBEAT jön, akkor a server visszaválaszol az id-val:
001|server|HEARTBEAT\n
remélem érthető

Kódok:
server.py:
https://pastebin.com/nBB578TVclient.py:
https://pastebin.com/m52wjz7RA conn.recv(1024) blokkol, amíg nem kapta meg mind az 1024 byte-ot, nem? Működik ez így neked, ha csak egyetlen rövid üzenet jön a klienstől?
-
n00n
őstag
-
n00n
őstag
Sziasztok!
Ismerkedek a Pythonnal még csak, de írtam egy egyszerű TCP szervert/klienset. Ránéznétek és elmondanátok, hogy mi a véleményetek róla? Mit csinálnátok másképp? A cél az volt, hogy a szerver folyamatosan figyel a 9999-es porton, a kliens csatlakozik hozzá és onnantól kezdve folyamatos beszélgetés megy, szóval nincs a socket lezárva. Két fajta üzenet jöhet a klienstől:
id|name|message\n
id|name|HEARTBEAT\npl.:
001|client|test_message\n
001|client|HEARTBEAT\nHa az első akkor meghív egy localhostos php szervert a python server, ami visszaad egy választ, egyelőre mindig ugyanazt adja vissza, később a message alapján más lesz.
pl:
001|server|test_response\n
vagy ha HEARTBEAT jön, akkor a server visszaválaszol az id-val:
001|server|HEARTBEAT\n
remélem érthető

Kódok:
server.py:
https://pastebin.com/nBB578TVclient.py:
https://pastebin.com/m52wjz7R -
justmemory
senior tag
Ismét némi útmutatásra lenne szükség: adott A osztály, amiben @property-vel és setter-rel létrehoztam egy attribútumot. Amennyiben ennek az értéke változik, miként tudom értesíteni az eseményről a B osztályba tartozó objektumomat?
Kicsit konkrétabban: jelen pillanatban azt szeretném megoldani, hogy az sqlite táblában történt változás esetén a táblából dolgozó, más ablakokban megjelenített Gtk.ListStore modellek adatai frissüljenek.
Szia,
én ezt találtam a témában - C-ben elvileg van rá megoldás, de pythonból az sajnos kimaradt...
Új hozzászólás Aktív témák
-
2100 - 2001
4451 - 4001 4000 - 3901 3900 - 3801 3800 - 3701 3700 - 3601 3600 - 3501 3500 - 3401 3400 - 3301 3300 - 3201 3200 - 3101 3100 - 3001 3000 - 2901 2900 - 2801 2800 - 2701 2700 - 2601 2600 - 2501 2500 - 2401 2400 - 2301 2300 - 2201 2200 - 2101 2100 - 2001 2000 - 1901 1900 - 1801 1800 - 1701 1700 - 1601 1600 - 1501 1500 - 1401 1400 - 1301 1300 - 1201 1200 - 1101 1100 - 1001 1000 - 901 900 - 801 800 - 701 700 - 601 600 - 501 500 - 401 400 - 301 300 - 201 200 - 101 100 - 1
-
Fórumok
PROHARDVER! - hardver fórumok
Notebookok TV & Audió Digitális fényképezés Alaplapok, chipsetek, memóriák Processzorok, tuning Hűtés, házak, tápok, modding Videokártyák Monitorok Adattárolás Multimédia, életmód, 3D nyomtatás Nyomtatók, szkennerek Tabletek, E-bookok PC, mini PC, barebone, szerver Beviteli eszközök Egyéb hardverek PROHARDVER! BlogokMobilarena - mobil fórumok
Okostelefonok Mobiltelefonok Okosórák Autó+mobil Üzlet és Szolgáltatások Mobilalkalmazások Tartozékok, egyebek Mobilarena blogokIT café - infotech fórumok
Infotech Hálózat, szolgáltatók OS, alkalmazások SzoftverfejlesztésGAMEPOD - játék fórumok
PC játékok Konzol játékok MobiljátékokLOGOUT - lépj ki, lépj be!
LOGOUT reakciók Monologoszféra FototrendFÁRADT GŐZ - közösségi tér szinte bármiről
Tudomány, oktatás Sport, életmód, utazás, egészség Kultúra, művészet, média Gazdaság, jog Technika, hobbi, otthon Társadalom, közélet Egyéb Lokál PROHARDVER! interaktív
- playseat evolution black actifit
- Precision 3560 27% 15.6" FHD IPS i7-1165G7 T500 16GB 512GB NVMe magyar vbill IR kam gar
- Gamer Gép - MSI H610, Intel I5 13600, 16GB DDR4, RTX 3070 Ti, 1TB M.2 SSD, 750W 80+ Gold
- Asztali PC i7 6700 1650 16GB DDR4 512GB SSD
- ASUS TUF Gaming A17 Gamer laptop , R7 6800H , 16GB DDR5 , RTX 3050 Ti
- LG UltraGear 34GS95QE OLED Monitor! 3440x1440 / 0.03ms / 240Hz / FreeSync / G-Sync! BeszámítOK!
- GYÖNYÖRŰ iPhone 14 Pro Max 512GB Deep Purple -2 ÉV GARANCIA - Kártyafüggetlen, MS5374, 99% AKKSI
- Apple iPad Air 7th gen. 13' 128GB (2029.02.09-ig Garancia) Csak kibontva volt, Aktiválatlan!
- BESZÁMÍTÁS! 1TB KINGSTON FURY Renegade SSD meghajtó garanciával hibátlan működéssel
- iPhone SE 2020 128GB Black -2 ÉV GARANCIA - Kártyafüggetlen, MS4594, 100% AKKSI
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

. Igazából élveztem utána olvasni a témának még jobban, mert pont a napokban kezdtem el ráugrani a hackerrank-es probléma megoldásokra, és akár hiszed akár nem elsősorban önmagam fejlesztése céljából tettem. Köszi a mini bemutatkozást, legalább már tudom, hogy kihez fordulhatok még, ha szeretném a fent ecsetelt témakört majd jobban elmélyíteni.
a format rövid, az str() rövidebb, az 
Valaki el tudná küldeni a megoldást?





