Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Hozzászólások

(#1201) cadtamas válasza EQMontoya (#1198) üzenetére


cadtamas
tag

Nem olvastam el figyelmesen amit írtál.
Te is ugyanazt mondod, csak kielemezted, hogy abban az esetben mi történik.
:R

(#1202) cousin333 válasza EQMontoya (#1198) üzenetére


cousin333
addikt

"Akkor látszik, hogy a relációsjel precedenciája nagyobb az összeadásénál."

A helyzet az, hogy fordítva kell olvasni a listát, tehát pont az összeadás prioritása nagyobb. :)
"The following table summarizes the operator precedences in Python, from lowest precedence (least binding) to highest precedence (most binding)"

A Pythonban lehet olyan feltételt írni, amitől a C egy hátast dobna, pl:

if 5 < x <= 14:
print('Közötte van')

A fenti példában:
a < b+c == True

Ez így értékelődik ki:
(a < (b + c)) and ((b + c) == True)

Ebből a második tag False lesz, aminek az oka:
"The default behavior for equality comparison (== and !=) is based on the identity of the objects. Hence, equality comparison of instances with the same identity results in equality, and equality comparison of instances with different identities results in inequality."

Az a+b egy számot ad eredményül, ami nem azonos a True-val. De a c< a+b eredménye már egy boolean, ami lehet True meg lehet False.

[ Szerkesztve ]

"We spared no expense"

(#1203) EQMontoya válasza cousin333 (#1202) üzenetére


EQMontoya
veterán

Az első fele jogos. :)

Viszont Az a+b egy számot ad eredményül, ami nem azonos a True-val..

A True is egy szám!

Pythonban a boolean az intből származik, tehát ha leírjuk, hogy isinstance(True, int), az bizony True-t ad vissza.
Hovatovább, teljesen valid kifejezés az, hogy 5 + True, és minden bizonnyal 6 lesz a végeredménye.

Same rules apply!

(#1204) kezdosql


kezdosql
tag

Adatbevitelre nem talalok megoldast egy jo hete.:-(

Azt kellene megoldani, hogy a kepernyon megjelenjen egy legfeljebb 10 elemu lista, es ezekbol lehessen valasztani legfeljebb 3 elemet, es azt elmenteni uj listaba.

Talan egy kulon grafikus alkalmazast kellene erre telepiteni, amivel egerrel lehetne kattintani ikonokra, vagy van ilyen megoldas, de nem latok a szememtol?

(#1205) sztanozs válasza kezdosql (#1204) üzenetére


sztanozs
veterán

Pythonbol is tudsz gui alkalmazast fejleszteni. Python+listbox kifejezesre keress (TKinter az altalanos pythonos gui megoldas)

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...

(#1206) cadtamas válasza kezdosql (#1204) üzenetére


cadtamas
tag

Nem látom a konkrét feladatot, de ilyenkor jellemzően azt várják el, hogy simán ki iratod (for ciklus, print metódus) egyenként a 10 elemű lista elemeit sorszámokkal, utána pedig sima inputtal bekérsz 3 sorszámot ami segítségével feltöltesz (append) egy üres listát.
Lista indexelésnek olvass utána.

[ Szerkesztve ]

(#1207) kezdosql válasza sztanozs (#1205) üzenetére


kezdosql
tag

Azt megtalaltam, de a leirasa szerint csak OK vagy Cancel a visszateresi erteke, itt viszont csoportos megoldas kellene.

(#1208) kezdosql válasza cadtamas (#1206) üzenetére


kezdosql
tag

Most mar megtudtam az eddig szupertitkos feladatot:
fagylaltokat kell osszeallitani, amibol tolcserenkent legfeljebb 3 gomboc lehet, es a gyakorlatban egyszerre csak negy szemelynek vesznek fagyit.

Azt akarjak, hogy legyen egy 10 soros es 4 oszlopos tablazat, es x-elgetni lehessen, hogy soronkent milyen oszlopokat jelolnek be.
En inkabb egyesevel oldanam meg, de a probak alapjan ugy lattam, valoban jobb lenne x-elgetes, mint gepeles.vagy szamok beirasa, valamiert a szamokat idonkent osszekeverik.

(#1209) cadtamas válasza kezdosql (#1208) üzenetére


cadtamas
tag

A grafikus interface egy kicsit keményebb dió lesz.

Tkinter, vagy itt van néhány modernebb változat.
Annyira nem vagyok otthon ebben a témában. Biztos van itt olyan, akinek jobb rálátása van.

[ Szerkesztve ]

(#1210) kezdosql válasza cadtamas (#1209) üzenetére


kezdosql
tag

Koszonom, akkor megprobalom atragni magma rajta, hatha...

(#1212) cadtamas


cadtamas
tag

Codewars-on kaptam egy olyan feladatot, amibe beletört a bicskám.

3 működő megoldásom volt, de sajnos egyik sem elég gyors.
A feladat:
Sum of Pairs

Given a list of integers and a single sum value, return the first two values (parse from the left please) in order of appearance that add up to form the sum.

sum_pairs([11, 3, 7, 5], 10)
# ^--^ 3 + 7 = 10
== [3, 7]

sum_pairs([4, 3, 2, 3, 4], 6)
# ^-----^ 4 + 2 = 6, indices: 0, 2 *
# ^-----^ 3 + 3 = 6, indices: 1, 3
# ^-----^ 2 + 4 = 6, indices: 2, 4
# * entire pair is earlier, and therefore is the correct answer
== [4, 2]

sum_pairs([0, 0, -2, 3], 2)
# there are no pairs of values that can be added to produce 2.
== None/nil/undefined (Based on the language)

sum_pairs([10, 5, 2, 3, 7, 5], 10)
# ^-----------^ 5 + 5 = 10, indices: 1, 5
# ^--^ 3 + 7 = 10, indices: 3, 4 *
# * entire pair is earlier, and therefore is the correct answer
== [3, 7]

Negative numbers and duplicate numbers can and will appear.

NOTE: There will also be lists tested of lengths upwards of 10,000,000 elements. Be sure your code doesn't time out.

A megoldásom működik, de nem elég gyors.
Lenne valakinek ötlete, hogy mivel tehetném gyorsabbá?
Csak egy iteráció van benne, hogy O(n) legyen a működés.

def sum_pairs(ints, s):
list=[]
i=0
for pair1 in ints:
pair2=s-pair1
x=ints.index(pair1)
try:
y=ints[x:].index(pair2)+i
if x!=y:
list.append([x,y])
i+=1
except:
i+=1
if len(list)==0:
return None
list.sort(key=lambda x: x[1])
return [ints[list[0][0]], ints[list[0][1]]]

(#1213) axioma válasza cadtamas (#1212) üzenetére


axioma
veterán

Ez az amikor jol megszivod azzal, hogy az ints ertekein ugy mesz vegig, hogy "elveszted" az indexet, es mikor ujra lekerdezed, akkor tok jol emeled a nagyordodat feleslegesen. Mert az index kikeresese nem konstans ideju muvelet - es ez a muvelet eleve 2x is szerepel benne.

A tobbi reszet nem nezve elsore csak a feleslegeset kiveve:
for x in xrange(len(ints)-1):
pair1=ints[x]
pair2=s-pair1
x=ints.index(pair1)
try:
y=ints[x+1:].index(pair2)+i

egybol nem kell az x!=y sem (mert x+1.-tol keresed csak)

Ja egyebkent latom, hogy vegulis az i-t is arra hasznaltad, hogy tudd hogy hol jarsz, de ket dolog miatt nem vetted eszre:
1. elnevezes (pl. fst_idx eseten egybol latszana)
2. bar a try teljes lefutasa es exception eseten is noveled, de kulonvetted - az egesz utan ha 1x lenne, latszana, hogy pont szamolod a koroket

Mar csak didaktikailag probald ki. De egyebkent nagyon nem ertem, miert is gyujtogetsz lehetseges indexeket... eleg a legelso. Ha jol ertem, az eloszor befejezodo kell. Tehat en igy mennek vegig rajta:

prevs=set(ints[:1])
for val in ints[1:]:
if s-val in prevs:
return [s-val,val]
prevs.add(val)
return None

disclaimer: nem probaltam ki...

[ Szerkesztve ]

(#1214) axioma válasza axioma (#1213) üzenetére


axioma
veterán

Bocs, ketszer olvastam ujra at es nem tunt fel, az elsoben az x= kezdetu sor ertelemszeruen nem kell, elfelejtettem kitorolni, most meg mar nem szerkeszthetem.

(#1215) cadtamas válasza axioma (#1213) üzenetére


cadtamas
tag

Köszönöm! :)
Azért kell a pár második tagjának indexe, mert az a pár kell aminek mindkét tagja előrébb van.

(5,1,3,2,7,4) (5) nél az eredménynek (3,2)-nek kell lennie, hiába kezdődik az (1,4) hamarabb

Még valami ilyesmin gondolkodom:
for num, pair1 in enumerate(ints):
pair2=s-pair1

Csak nem tudom a pair2 indexét hogyan tudnám kikönyörögni...

(#1216) axioma válasza cadtamas (#1215) üzenetére


axioma
veterán

Nem erted akkor.
En aszerint megyek rajta vegig, hogy ki a lehetseges _masodik_ elem.
Es tok mind1, hogy hol van az elso, csak hogy van-e. Az indexek abszolute nem kellenek a megoldashoz. Ez mondjuk inkabb az algoritmus es nem a python resze a dolognak.
Probald lekovetni ezen a kicsi peldan amit en irtam le kodot.

[ Szerkesztve ]

(#1217) cadtamas válasza axioma (#1216) üzenetére


cadtamas
tag

Tényleg!

Annyira ráfókuszáltam az indexekre, hogy erre nem is gondoltam.
:R

(#1218) Aureal


Aureal
senior tag

Sziasztok!

A GitHub-ról hogy lehet letölteni? (Nem csak pythonra gondolok, hanem általában mindenre.)
Mindenféle mappákba be lehet lépni, ahol forrás fájlok stb. találhatók, de rákattintva akár egy example HTML fájlra is, az nem nyílik meg közvetlen a böngiben, hanem a kód részét hozza fel az oldal. Nem látom a lényegét ezeknek. :F

[ Szerkesztve ]

(#1219) Pulsar válasza Aureal (#1218) üzenetére


Pulsar
veterán

neked nem így jelenik meg?

(#1220) Rimuru válasza Aureal (#1218) üzenetére


Rimuru
veterán

git clone?

Vigyázat, csalok!

(#1221) Aureal válasza Pulsar (#1219) üzenetére


Aureal
senior tag

De igen.

(#1222) boneyard


boneyard
tag

Helló!
Beautifulsouppal szeretném kinyerni egy div-en belüli div-ben lévő szöveget:
<div class="proddatafile">
<div><strong>REFERENCE</strong></div>
<div>9P-60510-1-13</div>
<div class="separador"></div>
</div>

Csak a félkövér szövegre lenne szükségem. Elég kezdő vagyok a témában, autodidakta módon tanulgatom. Ha valaminek van class-a vagy id-ja, akkor az abban lévő részt ki tudom íratni, de erre nem találtam googleben megoldást.

(#1223) boneyard


boneyard
tag

Már nem tudom szerkeszteni, de sikerült.
Itt hagyom, hátha vkinek hasznos lesz:

prodata = soup.find_all('div', class_="proddatafile")[1]
divy = prodata.find_all('div')[1]
print(divy.string)

A prodatanál azért kell az index, mert az a class is többször szerepel.
divynél fura, h miért 1 az index 2 helyett, mert az a második div a listában, de vmiért 0-tól indul az indexelés.

[ Szerkesztve ]

(#1224) sztanozs válasza boneyard (#1223) üzenetére


sztanozs
veterán

Az, hogy 0-ról indul az indexelés gondolom csak azért lep meg, mert korábban legfeljebb csak VBA (vagy XSLT/XPath) programozói tapasztalatod volt.

[ 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...

(#1225) sonar válasza Aureal (#1218) üzenetére


sonar
addikt

Ahogy colomb2 is irta.
git clone https://.....
Hogy mi a git? Egy verziókezelő progi, van minden platformra.
A git clone parancsra meg lejön minden neked úgy ahogy látod, te is tudod szerkeszteni, lefordítani, használni... akár még visszatölteni is.

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1226) sh4d0w


sh4d0w
nagyúr
LOGOUT blog

Van valakinek ötlete, hogyan lehetne gyorsítani egy pythonban készült syn scant? 1 mp-es timeouttal 18 óra az összes port scannelése...

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1227) EQMontoya válasza sh4d0w (#1226) üzenetére


EQMontoya
veterán

Szétdobod port range-ekre, és tolod több szálon.

Illetve attól függően, hogy mondjuk helyi hálón scannelsz-e, lehet csökkenteni a timeoutot, 1s azért elég sok.

Same rules apply!

(#1228) sztanozs válasza sh4d0w (#1226) üzenetére


sztanozs
veterán

Ha gyorsan kiszámolod a 65535 port másodpercenként szkennelve pontosan 18.2 órát vesz igénybe...
Ez nem a python hibája, hanem a matematikáé :DDD

Joke aside: [link]

[ 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...

(#1229) sh4d0w válasza sztanozs (#1228) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Én is ezt írtam... :) Próbáltam multithreaddel, de nem hozott számottevő gyorsulást... aztán rájöttem, hogy a GIL lehet a ludas... Megnézem, hogy multiprocessinggel mi az ábra.

EQMontoya: próbáltam a timeout csökkentést, de szignifikáns változást nem láttam. Valószínűleg a képernyőkezelés is ludas benne (egyelőre muszáj benne hagynom debug okokból).

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1230) sh4d0w válasza sztanozs (#1228) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Nah, a 18 órás futásidőt sikerült 11 percre redukálni... de egy nyamvadt mobil négymagos i7-est még mindig nem tudtam értelmesen leterhelni (értsd: max 60% körül). 0.1s-es timeout, 16 process. Arra kíváncsi lennék, mennyi idő megy el a processek kezelésére (32 v. 64 processel sem kaptam jobb eredményt, sőt, az alsó 1024 portos scan 64 processel 20 mp-es időt hozott a 16 process 12 mp-ével szemben).

https://www.coreinfinity.tech

(#1231) sonar válasza sh4d0w (#1230) üzenetére


sonar
addikt

Hányas Pythonnal dolgozol?

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1232) sh4d0w válasza sonar (#1231) üzenetére


sh4d0w
nagyúr
LOGOUT blog

2.7

A legrövidebb időt a privilegizált portok scannelésére 28 processel kaptam, 9 mp. Persze még mindig messze van az nmap teljesítményétől, de gyanús, hogy az nem pythonban készült.

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1233) sonar válasza sh4d0w (#1232) üzenetére


sonar
addikt

2.x szériáknak nem az igazi a Multi thread kezelése.
Ha ilyet szeretnél akkor azt javasolnám, hogy 3.5 -tel kisérletezzél (vagy az utolsó verzióval 3.6)

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#1234) velizare válasza sh4d0w (#1232) üzenetére


velizare
nagyúr

azóta a python addonjai elég sokat fejlődtek (mármint amelyiket fejlesztik). érdemes átírni 3.6ra.

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.

(#1235) sh4d0w


sh4d0w
nagyúr
LOGOUT blog

Köszönöm a tanácsokat.

https://www.coreinfinity.tech

(#1238) sh4d0w


sh4d0w
nagyúr
LOGOUT blog

python3-ban mi a fenéért nem működik a scapy?

ImportError: No module named 'scapy'

2-es alatt fent van, 3-as alá felraktam, de mégsem...

MOD: megvan, nem rootként raktam fel...

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1239) sh4d0w


sh4d0w
nagyúr
LOGOUT blog

Újabb segítségkérés: adott egy python3-as multithreades portscanner. Próbálom a nyitott portok service-eit azonosítani vele, de elég nagy marhaságokat kapok vissza, mitől lehet? Mutatom:

Enter target address: metasploitable.home

Open port 22 fsp
Open port 25 ftp
Open port 21 ftp
Open port 23 ftp
Open port 53 domain
Open port 80 http
Open port 111 sunrpc
Open port 139 netbios-ssn
Open port 445 microsoft-ds
Open port 513 shell
Open port 514 shell
Open port 512 shell
Open port 1099 rmiregistry
Open port 1524 ingreslock
Open port 2049 nfs
Open port 2121 iprop
Open port 3306 mysql
Open port 3632 distcc
Open port 5432 postgresql
Open port 5900 ?
Open port 6000 x11
Open port 6667 ircd
Open port 6697 ircs-u
Open port 8009 ?
Open port 8180 ?
Open port 8787 ?
Open port 38881 ?
Open port 42318 ?
Open port 54571 ?
Open port 58211 ?

Ugyan a nyitott portok megtalálása helyes, de mindig vmi hasonló marhaságot kapok, ráadásul nem kapom 2x ugyanazt az eredményt.

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1240) velizare válasza sh4d0w (#1239) üzenetére


velizare
nagyúr

mi alapján azonosítod a service-eket?

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.

(#1241) sh4d0w válasza velizare (#1240) üzenetére


sh4d0w
nagyúr
LOGOUT blog

socket.getservbyport

https://www.coreinfinity.tech

(#1242) velizare válasza sh4d0w (#1241) üzenetére


velizare
nagyúr

ahogy olvasom, ez egy wrapper a windoze getservbyport függvénye fölött. ez nem csekkolja, hogy ténylegesen milyen szervíz fut azon a porton (azt sem, hogy fut-e egyáltalán), hanem megkérdezi a win service db-jétől, hogy ott milyen név van rámappelve erre a portra. megpróbálhatod ezt közvetlenül hívogatni, hogy az állandó eredményt ad-e, vagy már ott is hasonlókat kapsz.

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.

(#1243) sh4d0w válasza velizare (#1242) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Ez éppen Linuxon fut. Ahogy tesztelgettem, mintha összekeverednének a nyitott portok számai a service nevekkel, ha multithreadben futtatom. Multithread nélkül meg idétlen időkig fut...

https://www.coreinfinity.tech

(#1244) sztanozs válasza sh4d0w (#1239) üzenetére


sztanozs
veterán

Mondjuk elsőre nekem a nevek megfelelőnek tűnnek a portokhoz

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...

(#1245) sh4d0w válasza sztanozs (#1244) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Többnyire igen, de pl. itt nem:

Open port 22 fsp - ez mi ssh helyett?
Open port 25 ftp - smtp
Open port 21 ftp - ez jó
Open port 23 ftp - telnet

https://www.coreinfinity.tech

(#1246) velizare válasza sh4d0w (#1243) üzenetére


velizare
nagyúr

single threadben futtasd egy korlátozott portcím-tartományra, és nézd meg, hogy konzisztens-e az eredmény, amit kapsz.

egyébként meg igazából ssh-zhatok meg ftp-zhetek én akárhányas porton, ez a hívás egy dictionary-t használ, amit akár te is megírhatsz. egy listában intként eltárolod a portszámot, mellette pedig stringként hogy mi az a default szervíznév, ami általában használja, és ebből fordítgatsz.

[ 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.

(#1247) sh4d0w válasza velizare (#1246) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Köszi a segítséget, közben találtam egy jobb megoldást, ami elég gyors és a service-ek neveinél sem hibázik.

https://www.coreinfinity.tech

(#1248) velizare válasza sh4d0w (#1247) üzenetére


velizare
nagyúr

oszd meg kérlek velünk is, legalább mi is tanulunk belőle!

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.

(#1249) sh4d0w válasza velizare (#1248) üzenetére


sh4d0w
nagyúr
LOGOUT blog

[link]

Figyelem: default python environmentben fut, tehát ha 3-asban kell, akkor bele kell nyúlni.

Elsőre jókat szívtam vele :) A try a for cikluson kívül volt, így aztán nem értettem, miért döglik le indítás után azonnal... aztán persze rájöttem, hogy a service azonosítás már az első portnál socket errort generál.

[ Szerkesztve ]

https://www.coreinfinity.tech

(#1250) #82595328


#82595328
törölt tag

Egy kis segítséget kérnék python öröklés, alosztály témában:
Próbáltam írni, egy kisebb programot, amivel az öröklést tesztelném.
A cél az lenne, hogy bekérek 2 számot, amit értéket adna egy osztálynak, majd az egyiket felülírnám az alosztállyal. De sehogy se működik.

class Egy():
def __init__(self,egyik=1,masik=2):
self.egyik = egyik
self.masik = masik
def szorzat(self,egyik,masik):
return self.egyik * self.masik

class Ketto(Egy):
def __init__(self,egyik,masik):
self.masik = masik
def szorzat(self,egyik,masik):
return self.egyik * self.masik
a = int(input('Adj egy számot!'))
b = int(input('Adj még egy számot'))
egyke = Ketto(b,a)
print ('Egyik = %s' % egyke.egyik)
print ('Masik = %s' % egyke.masik)
print ('Szorzat = %s' % egyke.szorzat())

Copyright © 2000-2024 PROHARDVER Informatikai Kft.