Új hozzászólás Aktív témák
-
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)))A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
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' -
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)))[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
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.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
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()
[ Szerkesztve ]
-
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. JanosArtillery, lelkes újonc vagyok, tanulni akarok!
-
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
válasz s1999xx #2062 üzenetére
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?
[ Szerkesztve ]
Artillery, lelkes újonc vagyok, tanulni akarok!
-
Siriusb
veterán
válasz alec.cs #2063 üzenetére
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? -
sztanozs
veterán
válasz s1999xx #2069 üzenetére
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, '').JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
alec.cs
tag
válasz Siriusb #2068 üzenetére
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)?
-
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
a
tö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!) -
axioma
veterán
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.[ Szerkesztve ]
-
axioma
veterán
válasz kovisoft #2076 üzenetére
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.
[ Szerkesztve ]
-
kovisoft
őstag
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.
-
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")) # HarmadikArtillery, lelkes újonc vagyok, tanulni akarok!
-
nagyúr
válasz Janos46 #2080 üzenetére
pró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.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
KEAN
tag
válasz Janos46 #2080 üzenetére
Hi, 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
"Persze, hogy tudtam, csak nem sejtettem!"
-
kovisoft
őstag
válasz Janos46 #2080 üzenetére
Az 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.
-
nagyúr
válasz sztanozs #2086 üzenetére
a format rövid, az str() rövidebb, az
f"{q}"
a legrövidebb!@s1999xx: nála azért, mert ránézésre, googlizás nélkül is látja, mi történik.
[ Szerkesztve ]
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
Janos46
tag
Köszönet mindenkinek a javaslatért és a megoldásért.
[ Szerkesztve ]
Artillery, lelkes újonc vagyok, tanulni akarok!
-
Lacc
aktív tag
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.
-
axioma
veterán
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.
-
axioma
veterán
[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]
[ Szerkesztve ]
-
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.
#ThankYouSirAlex #ThankYouLouis
-
kovisoft
őstag
válasz McSzaby #2098 üzenetére
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).
Új hozzászólás Aktív témák
- Creative Hybrid Pro Classic (Egyszer kipróbált, garanciális)
- iPhone 15 Pro 128gb Natúr Titanium, bontatlan, független
- ÚJ Apple Watch Ultra 2 GPS + Cellular 49mm - titántok, alpesi szíj
- 8/16GB memoriák
- APPLE MacBook Air 2020 13" Retina - M1 / 8GB / 256 GB SSD / MAGYAR / 96% akku, 81 ciklus / Garancia