Új hozzászólás Aktív témák
-
n00n
őstag
Én is pár hónapja kezdtem el Pythont tanulni. Lényegében az első (sulis Turbo Pascalozást inkább nem sorolom ide ) programozási nyelvem lesz. Könyvnek Gérard Swinnen : Tanuljunk meg programozni Python nyelvét (magyar fordítás) választottam [link]
Viszont itt grafikus felületnek a Tkintert használja, ami valljuk be nem éppen a legpraktikusabb grafikus könyvtár.
(A hozzászólásom egy rejtett subscribe lenne. )
-
n00n
őstag
Kellene írnom egy kisebb python programot, aminél célszerű lenne adatbázisban tárolni az adatokat. Milyen offline adatbázist javasoltok hozzá? (Lehetőleg multiplatform legyen).
-
n00n
őstag
Van egy GtkComboBoxText-em és nem tudok az istenért se rájönni, hogy hogyan tudnék belőle minden elemet törölni. Ötlet?
-
n00n
őstag
A combox.get_text() függvény nem kezeli az ékezetes karaktereket. Próbálkoztam unicode()-al, utf8-cal, de semmi. Valakinek ötlet?
-
n00n
őstag
Kis segítség kellene. A Main Window-n van egy gomb (addButton). Arra rákattintva megjelenik az AddDialog, ahol van kettő gomb (btn_ok és btn_cancel) és egy entry.
Ha az ok-ra kattintok ellenőrzi, hogy ki van-e töltve a mező. Ha nincs hibát ír. Viszont itt van egy kis gubanc. Ugye, ha úgy okézom le az ablakot, hogy nem adok meg a mezőben semmit, akkor hibát dob és nem zárja be az ablakot, így újabb lehetőség van megadni valamit. Viszont ilyenkor is lefut az AddDialog.run() alatti print. Aminek csak akkor kellene lefutnia, ha eltűnik az ablak, tehát van a mezőnek tartalm.Az alábbi kódban, ha úgy kattintok az OK-ra, hogy nem töltöttem ki mindent, akkor mégis miért jelenik meg a terminálban az „Ez az üzenet miért jelenik meg?” üzenet?
Main Window kódrészlet:
def on_addButton_clicked(self, widget, data=None):
AddDialog = AddDialog()
AddDialog.run()
print "Ez az üzenet miért jelenik meg?"AddDialog kódrészlet:
def on_btn_ok_clicked(self, widget, data=None):
#Minden ki van töltve:
if entry.get_text() != "":
name = self.entry.get_text()
self.destroy()
else:
self.hibaCimke.set_text(_("Nincs minden kitöltve!"))
def on_btn_cancel_clicked(self, widget, data=None):
self.destroy() -
n00n
őstag
Miképpen oldanátok meg ezt a feladatot?
Van n darab emberünk, egy fájlból olvassuk be a nevüket, akik köszönnek egymásnak. Írjon egy programot, ami az alábbihoz hasonló kimenetet generál:
Béla köszönt Tamás nevű ismerősének
Eszter köszönt Béla nevű ismerősének
Béla köszönt Eszter nevű ismerősének
Tamás köszönt Eszter nevű ismerősének
Eszter köszönt Tamás nevű ismerősének
Tamás köszönt Béla nevű ismerőségnekA fájlbeolvasást nem kell megírnia. Tegyük fel, hogy az már csak kész van. Viszont úgy írja meg a programot, hogy a beolvasott adatok változhatnak (egyszer csak két ember, egyszer 10). Mindenki köszönjön mindenkinek, viszont véletlenszerűen.
Adjatok kérlek tanácsot merre álljak neki.
-
n00n
őstag
válasz cousin333 #123 üzenetére
Köszi szépen. Nagyon egyszerű megoldás.
Viszont ennek a továbbgondolt feladatánál már elakadok.
Szöveg: Van négy (a példa miatt négy, lehet több is, tehát célszerű n db-ra megírni) darab focicsapat, hozzon létre egy tömböt/listát a lehetséges összes meccsről véletlen sorrendben, mely tartalmazza a visszavágókat is.
Eddig úgy meg vagyok.
A példaként vett 4 csapat tehát összesen 12 meccset játszik 6 forduló alatt, fordulónként kettőt. Generáljon egy új listát az elkészült összes meccs listából, mely a fordulókban lejátszott meccseket tartalmazza, fordulónként ; (pontosvesszővel) elválasztva egymástól. Értelemszerűen egy fordulóban egy csapat csak egyszer játszhat. A megértést segítve itt egy példa listarészlet:
fordulok = ([1,3], [4:2], ; , [3,2], [4:1], ; , [1,2], [3,4], ; , ... stb.)
Fogalmam nincs merre induljak. Ötlet?
-
n00n
őstag
válasz Jester01 #125 üzenetére
De n db csapatra kell megírni, nem pedig csak négyre sajnos.
Próbáltam írni rá egy módszert, de nem akar összejönni.
Az all_match-ben már benne vannak a meccsek. A teams-ben pedig a csapatokmeccs_per_fordulo = len(teams)/2
fordulok = []
while len(all_match) != 0:
fordulo = []
torlendo = []
for meccsek in all_match:
if meccsek[0] not in fordulo and meccsek[1] not in fordulo:
fordulo.insert(0, ";")
fordulo.insert(0, meccsek[1])
fordulo.insert(0, meccsek[0])
torlendo.insert(0, meccsek)
if len(fordulo) == meccs_per_fordulo * 3:
fordulok.append(fordulo)
#Törlés ciklus:
for delmatch in torlendo:
all_match.remove(delmatch)[ Szerkesztve ]
-
n00n
őstag
válasz Jester01 #127 üzenetére
Kiegészítettem egy break-kel (illetve egy print-el, hogy lássam még mennyi csapat van vissza). Négy csapat esetén gyönyörűen elboldogul, többnél már viszont kiakad. Ötlet?
meccs_per_fordulo = len(teams)/2
fordulok = []
while len(all_match) != 0:
fordulo = []
torlendo = []
for meccsek in all_match:
if meccsek[0] not in fordulo and meccsek[1] not in fordulo:
fordulo.insert(0, ";")
fordulo.insert(0, meccsek[1])
fordulo.insert(0, meccsek[0])
torlendo.insert(0, meccsek)
if len(fordulo) == meccs_per_fordulo * 3:
fordulok.append(fordulo)
#Törlés ciklus:
for delmatch in torlendo:
all_match.remove(delmatch)
print("\n" + str(all_match))
break[ Szerkesztve ]
-
n00n
őstag
Nem jó így a ciklus. Most, hogy kiíratom a még az all_match-ben maradt meccseket, már látom, hogy azért áll meg, mert nem tud olyan annyi olyan párosítást választani a fordulóhoz, hogy különböző csapatok legyenek.
Pedig annyira nem lehet bonyolult, ez az oldal:
http://www.fixturelist.com/createalist1.phpEgy-két szóból legenerálja a listát. Kár, hogy nem lehet megnézni a forrását. ..
[ Szerkesztve ]
-
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[ Szerkesztve ]
-
n00n
őstag
válasz kovisoft #2005 üzenetére
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'[ Szerkesztve ]
-
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?
[ Szerkesztve ]
-
n00n
őstag
válasz kovisoft #2014 üzenetére
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.
Új hozzászólás Aktív témák
- Autós kamerák
- Android alkalmazások - szoftver kibeszélő topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Ukrajnai háború
- Videó stream letöltése
- Gaming notebook topik
- Motorola Moto G24 Power - hol van az erő?
- Milyen videókártyát?
- Helldivers 2 (PC, PS5)
- Xbox Series X|S
- További aktív témák...