Hirdetés
- Ezek a OnePlus 12 és 12R európai árai
- Ez lehet az Apple hajlítható telefonjának formája, mérete
- Xiaomi Mi 8 - így csinálunk csúcsmodellt Mi
- OnePlus 15 - van plusz energia
- One mobilszolgáltatások
- Örömkönnyek és üres kezek a TriFold startjánál
- Külföldi prepaid SIM-ek itthon
- Jövő héten mutatkozik be a OnePlus új szériája
- Milyen okostelefont vegyek?
- Xiaomi Mi 9T Pro - tizenegyes!
Új hozzászólás Aktív témák
-
cousin333
addikt
válasz
XP NINJA
#498
üzenetére
Természetesen nem baj, ha tisztában vagy a kétdimenziós listákkal is, sok feladatnál kellhet ilyesmi. Arra emlékeztetnélek, hogy a Python nyelvben a sztring maga is iterable, azaz indexelhető, kereshető, mintha egy lista lenne. Pl.
>>> a = "Valami"
>>> a[2]
'l'
>>> a[-1]
'i'
>>> a.find('m')
4A lényeg, hogy gyakran feleslegesen bonyolult a sztringet karakterek listájává vagdosni. Ilyen értelemben a fenti példához első ránézésre nem kétdimenziós lista, hanem sztringek egyszerű (soronkénti) listája kell. Valami hasonlóra példa #453-as hozzászólásomban lévő megoldás.
-
cousin333
addikt
válasz
olivera88
#495
üzenetére
Akkor meg. Említettem az URL parser könyvtárat. SZerintem az a legelegánsabb megoldás, de kicsit macerás. A favágó módszer, hogy az URL-t sztringként kezeled és a time modullal állítod elő a mai dátumot. Azaz:
link = "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__&model=ARPEGE&grid=0.1&package=SP1&time=61H72H&referencetime=2016-01-26T12:00:00Z"
Majd ezzel kell kiegészíteni a korábbi kódot:
import time
links = link.split("=")
t = time.localtime()
fmt = "%Y-%M-%dT12:00:00Z"
links[-1] = time.strftime(fmt, t)
link = "=".join(links)Vagy valami ilyesmi. Ez értelemszerűen csak a dátumot írja át, az órát perce nem.
-
cousin333
addikt
válasz
XP NINJA
#496
üzenetére
Amikor a split-tel felosztottad a sort, és kaptál egy listát, azt ne append-del add hozzá a már meglévő listádhoz, hanem extend-del. Példa a különbségre:
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.append(b)
>>> a
[1, 2, 3, [4, 5, 6]]
>>> a = [1,2,3]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6] -
XP NINJA
őstag
Ha van egy olyan szöveges fájlom, amiben lottószámok szerepelnek ilyen formában (egy hét egy sor), akkor azt hogyan tudnám beolvasni egy darab listába? Csak úgy sikerült eddig, hogy soronként strip és split, majd hozzáadás a listához. De igy lesz egy listán belül annyi lista ahány sor
.Előre is köszönöm!

-
-
olivera88
veterán
Tud valaki valami letöltő scriptet írni pythonnal? Olyan kellene ami át is nevezi a letöltött fájlt egy adott névre.
-
cousin333
addikt
válasz
DrojDtroll
#487
üzenetére
Bevallom, ezen a téren nem vagyok képben, de számomra akkor a fájl alapú megosztás tűnik kézenfekvőnek. Nem használtam ugyan, de én a pickle modul körül nézelődnék.
-
cousin333
addikt
válasz
DrojDtroll
#484
üzenetére
Mit csinálnak a szkriptek? Az egyik szkript (vagy egy harmadik) importálja be a másikat. Esetleg egy fájlba összevonni a kettőt.
Vagy valami fájl objektumon keresztül tegye közzé a kérdéses változókat.
-
Mr Dini
addikt
Üdv!
Szerettem volna őt lefordítani, gond nélkül felment. Viszont nem tudom mik a parancsok, illetve a __main__.py sincs benne, így nem tudok vele mit kezdeni. Pippel is próbáltam feltenni, ott sem működött pl az adb devices parancs... Doksit nem találtam hozzá. Honnan lehetne megtudni, h működőképes-e?
Köszi!

-
DrojDtroll
veterán
Sziasztok!
Van két szkriptem és azt szeretném hogy az egyik folyamatosan tudja olvasni a másik néhány változóját. A folyamat visszafele nem szükséges. MI lenne erre a legegyszerűbb megoldás?
-
olivera88
veterán
Ha beteszem a python elérési útját #!/usr/bin/python a kód elejére, akkor nem nyit terminál ablakot enteres lefuttatás után. Van erre vmi megoldás?
-
sonar
addikt
válasz
#82595328
#478
üzenetére
Nem törvényszerű, hogy új sor legyen. Nyugodtan irhatod utána is csak akkor ugye egy sor lehet, Csak a kódot teszi áttekinthetőbbé. Egész pontosan több "sor" is lehet de akkor ; -vel kell elválasztani őket.
Tehát
if n == 1: parancs1 ; parancs2
vmi ilyesmi
if n==1: x=x*x; print x -
#82595328
törölt tag
Újabb kérdés. Rátaláltam a python példaprogramokra, és ezt a függvényt nem értem teljesen.
def bottle(n):
if n == 0: return "no more bottles of beer"
if n == 1: return "one bottle of beer"
return str(n) + " bottles of beer"Vagyis az a része már világos, hogy ha n==0 vagy 1, akkor a " return str(n) + " bottles of beer"" már nem hajtódik végre, mert az első return után kilép a függvényből a program. Az is többé kevésbé világos, hogy azért nem elif és else, mert akkor nem lépne ki a függvényből a return után. Bár ezt még kipróbálom. Ami nem világos az ez a formátum:
if n == 0: return "no more bottles of beer"
Ez így miért helyes?Mert szerintem így kellene kinéznie:
if n == 0:
return "no more bottles of beer"Persze így egyszerűbb és olvashatóbb a kód. Csak ugye ":" után új sornak kellene következnie, és behúzásnak.
-
Dolphine
addikt
Sziasztok!
A segítségeteket kérném!
Adott egy KODI PC lejátszó, egy vezeték nélkül egér + légegér. A légegér jelen esetben távirányítóként funkcionál. A légegérben giroszkóp van, amit nem lehet kikapcsolni, így állandóan megjelenik a kurzor
Egy skript készült már, viszont az teljesen eltünteti az egér kurzort, így normál egér sem használható.
Na, ezt kellene valahogy kapcsolhatóvá tenni. Ha kell az egér akkor legyen kurzor, ha nem kell egér (pl. filmnézés), akkor meg kikapcsolni kellene a kurzort.
Szerintetek ez megoldható? -
válasz
#82595328
#474
üzenetére
Ok, a lényeg az az, hogy ha nem interpreter módban dolgozol (futó program), akkor mindig egy függvényben vagy. EZeket úgy kell elképzelni, mint egy hagyma, ahogy mész a héjától befelé. ha meghívsz egy függvényt, akkor egy réteggel beljebb mész, return esetén meg eggyel kintebb. Ha a legkülső függvényben return-t adsz ki, akkor kilép a program.
Ha a függvény ad vissza értéket, akkor ezt a returnban tudod megtenni. Ezt az értéket természetesen célszerű felhasználni, pl kiiratni, vagy egy másik változónak átadni.>>> def osszead(a, b):
... return a+b;
>>> c = osszead(1,2)
>>> print(c)
3 -
#82595328
törölt tag
válasz
sztanozs
#473
üzenetére
"Szerintem olvasgass egy kicsit programozás / programtervezés alapokról, ha a return utasítást, vagy a függvények működését (sem) érted."
Szerinted éppen mit csinálok?
Most ismerkedem a return paranccsal és a függvény készítéssel. Mivel az már ment, ilyenkor a következő lépés a kísérletezés. Azaz a tanultak eltérő módon való használata, és itt akadtam fel. Mert nem volt egyértelmű, hogy a return csak függvényen belül lehet.
Ez volt a kérdésem lényege, hogy a return csak függvényen belül használható? Mert a hibaüzenet alapján, amit kaptam ezt találtam a neten, de nem volt teljesen egyértelmű. -
válasz
#82595328
#472
üzenetére
Szerintem olvasgass egy kicsit programozás / programtervezés alapokról, ha a return utasítást, vagy a függvények működését (sem) érted.
Nem fogsz tudni új elkezdeni értelmesen prograomozni, úgy, hogy nem is érted, hogy egy program hogy működik, milyen vezérlési szerkezetek vannak és mire valók az alapvező vezérlési utasítások, vagy pl. mi a különbség egy változó és egy konstans között.
Ahogy kérdeztem, azt meg tudod mondani, hogy egyáltalán mire szeretnéd használni a return utasítást? Biztos vagyok benne, hogy nem azt csinálja, amit te elképzelsz hogy csinálnia kellene.
-
cousin333
addikt
válasz
#82595328
#468
üzenetére
A return - mint a neve is mutatja - egy függvényhívásból tér vissza egy értékkel. Ahhoz, hogy visszatérhess, előbb értelemszerűen "el kell menni", tehát egy függvényt kell hívni. Abban lehet a return. Az első példádban egy függvényt hoztál létre a def utasítással (vagy mi ennek a szabatos neve) ami visszatér a beírt számmal. Ha meghívod, pontosan ez történik.
A többi példádban nincs függvény, csak egyedi utasítások. Egyszerűen nincs miből visszatérni, így a return értelmetlenné válik és hibát dob.
A return tehát a függvény kimeneti értékével tér vissza, nem pedig egy változó értékével, mint az utolsó példádban. Az az alábbi módon lenne helyes, mert a print függvény maga is visszatér egy konzolra írt üzenettel, ami itt maga az x:
>>> x=1
>>> print (x)
1Mivel ez a konzol, még a print sem kell, ez is működik:
>>> x=1
>>> x
1 -
#82595328
törölt tag
válasz
cousin333
#467
üzenetére
De nem működik, vagy én csinálok valamit rosszul. Azt értem, hogy mire való. Viszont próbáltam shell-ben pár parancsot, és nem megy egyik sem.
De azt hiszem így egyszerűbb, ha mutatok példákat:Ez működik:
>>> def xecs(x):
return x>>> print (xecs(2))
2Ezek meg nem. De miért nem?
>>> x=1
>>> return x
SyntaxError: 'return' outside function>>> x=1
>>> a= return x
SyntaxError: invalid syntax>>> x=1
>>> print (return x)
SyntaxError: invalid syntax -
cousin333
addikt
válasz
#82595328
#466
üzenetére
Nem kell beletenni, működik úgy is, ahogy mondod. De ha változóba rakod, akkor az elveszik, amint kilépsz a függvényből. Kivéve, ha globális változóba teszed, de az meg nem túl elegáns (kivéve talán a mikrokontrollereket). Biztos van itt nálam ideológiailag képzettebb, aki jobban elmagyarázza.
Szóval használnod nem kell, de pont azért találták ki, hogy az értéket visszaadja. Innentől kezdve nincs sok ok, hogy ne használd.
-
#82595328
törölt tag
Valaki elmagyarázná nekem, hogy a return parancsot miért kell mindenképpen függvénybe rakni?
Miért ne lehetne belerakni az értékét pl: egy változóba, vagy egyéb módon használni? Ez valahogy nem világos. -
cousin333
addikt
válasz
cousin333
#462
üzenetére
Folytatás: a 25-26-os sort meg le kell cserélni erre, és elvileg már működik is:
self.ser = serial.Serial(self.combobox_port.get_active_text())LógaGéza: Korábban amúgy nekem sem ment a listázás, pedig jó lett volna, de akkor nem így próbáltam. Talán ezzel már menni fog.
-
cousin333
addikt
válasz
LógaGéza
#458
üzenetére
Itt a PySerial dokumentációja a kérdéses modullal: [link]
Ezek alapján a kód a következő (létezik az, hogy nekem nincs egyetlen COM portom sem? Az Eszközkezelő sem említi őket
Majd holnap én is kipróbálom):# Valahol a kód elején a többi importtal
import serial.tools.list_portsA port lista létrehozása a comports() függvénnyel. Ez egy generátor objektumot hoz létre, amiből a portok így adódnak:
ports = list(serial.tools.list_ports.comports())Ennek a listának az elemei a dokumentáció szerint 3 elemű tuple-k. Ebből nekünk az elsőre van szükségünk (ami igazából a nulladik), azt adjuk be a serial.Serial() objektumnak. Ha csak az első elemek kellenek, akkor a fenti helyett egyszerűen írjuk ezt:
ports = [p[0] for p in serial.tools.list_ports.comports()]Ez elvileg működik, mint írtam, COM port hiányában nem tudom most kipróbálni... De holnap biztos megteszem, mert a téma engem is érdekel.
A kérdéses kódban pedig a 85-87-es sort kell módosítani, imigyen:
for p in serial.tools.list_ports.comports():
print(p)
self.combobox_port.append_text(p[0]) -
cousin333
addikt
válasz
XP NINJA
#459
üzenetére
sonar megoldása jó, de mivel a Pythonban a sztring iterable, egy sima for ciklussal végig lehet menni rajta. Ezért nem hiszem, hogy mindenáron listát kell csinálni belőle.
Ha pedig sztring, akkor a függvények a Python string metódusok.

Pl. sonar példájával élve ez is működik:
>>> s = "python"
>>> s[3]
'h' -
XP NINJA
őstag
(#453) cousin333 :

Egy bekért szó karakterenkénti feldarabolására mi a függvény? Vagy tudna valaki linkelni egy beépitett függvénygyűjteményt?

-
LógaGéza
veterán
Igazából adtál ezzel egy ötletet, kipróbáltam, és bejött - annyi a hátránya, hogy nem működik a Combo Box, és hardcoded a COM port, de működik.
26. sort írtam át erre:
self.ser.port = 'COM3'
Ez külön kóddal kilistázza az elérhető COM portokat, de sajnos arra nem jöttem rá hogy lehetne integrálni.
-
LógaGéza
veterán
Üdv!
Van egy ilyen elkészített progi, amit aki megírta, az Ubuntun tesztelte, ott elvileg működik is. Viszont nekem Windowson kéne. Felraktam a Python 2.7.11-et, hozzá a pyGTK 2.24.2 all ion one-t és a pyserial 3.0-t.
Elindul a program, feljön a GUI, és egy olyan üzenetet kapok vissza, hogy:AttributeError: 'Serial' object has no attribute 'setPort'
Ubuntu alatt lenyíló menüben felismeri a csatlakozott COM portos eszközt, ki tudom választani, és tud csatlakozni, Windows alatt üres, és ki is van szürkítve a lenyíló. Jól gondolom, hogy a serial kiegészítéssel van a gond? Mit tudok vele tenni, hogy jó legyen?
-
snyz
tag
Sziasztok,
egy weboldalból szeretnék infót kinyerni, amihez bejelentkezés szükséges, tud ebben valaki segíteni?
Köszi!
-
cousin333
addikt
válasz
XP NINJA
#452
üzenetére
"Nem törekszem a legeslegegyszerűbb módra, annak szerintem még nincs itt az ideje, de ezt én is túlzásnak érzem."
Szerintem a Python nyelv egyik legjobb tulajdonsága, hogy alapból egyszerű és logikus szerkezeteket használ. Teljesen felesleges elbonyolítani a dolgokat, érdemes egyből az egyszerűre rámenni.
Ami a megoldásodat illeti, az első feladatban két fájlt is be kéne olvasni, nem csak a foglaltsag.txt-t. A 4. feladat sem jó, mert nem az a kérdés, hogy melyik kategóriájú székből van a legtöbb, hanem hogy melyikből adták el a legtöbbet. Ehhez viszont valahol fel kéne használni a lista nevű listádat, ami sehol nem szerepel.
Az én megoldásom alább látható. Nem ellenőriztem le valós adatokkal és azt sem állítom, hogy nem létezik szebb vagy egyszerűbb megoldás a problémákra. Most ennyire tellett:
print("1. feladat")
def fajl_beolvasas(fajlnev):
with open(fajlnev, 'r') as f:
adat = [sor.strip('\n') for sor in f]
return adat
fog_lista = fajl_beolvasas("foglaltsag.txt")
kat_lista = fajl_beolvasas("kategoria.txt")
print("2. feladat")
def foglaltsag_ellenorzes(lista, sor, szek):
if lista[sor][szek] == "x":
return True
else:
return False
sor = int(input("A sor szama? "))
szek = int(input("A szek szama? "))
if foglaltsag_ellenorzes(fog_lista, sor, szek):
print("A szek mar foglalt")
else:
print("A szek meg ures")
print("3. feladat")
# Összefűzzük a foglaltságokat egyetlen sztringbe, hogy egyszerűbb legyen számolni
fog_sztring = "".join(fog_lista)
# Az alábbi formázás automatikusan egész százalékokat ír ki
uzenet = "Eddig {} jegyet adtak el, ami a nezoter {:.0%}-a"
foglalt_db = fog_sztring.count("x")
print(uzenet.format(foglalt_db, foglalt_db/len(fog_sztring)))
print("4. feladat")
# Összefűzzük a kategóriákat is egyetlen sztringbe, hogy egyszerűbb legyen számolni
kat_sztring = "".join(kat_lista)
# A kategorizált ülőhelyeket egy szótárba (dictionary) tesszük. Elsőre mind üres.
kategorizalt = {"1": 0, "2": 0, "3": 0, "4": 0, "5": 0}
# Végigmegyünk a foglaltsági fájlon, és megszámoljuk a foglalt kategorizált üléseket
for i, fogl in enumerate(fog_sztring):
if fogl == "x":
kateg = kat_sztring[i] # A kategória neve, ami a kategoria.txt fájlban volt
kategorizalt[kateg] += 1
legtobb = max(kategorizalt, key=kategorizalt.get)
print("A legtobb jegyet a {} kategoriaban adtak el".format(legtobb))
print("5. feladat")
arak = {"1": 5000, "2": 4000, "3": 3000, "4": 2000, "5": 1500}
bevetel = 0
for kat in kategorizalt:
bevetel += kategorizalt[kat] * arak[kat]
print("A pillanatnyi bevetel: {}Ft".format(bevetel))
print("6. feladat")
egyedul = 0
for sor in fog_lista:
# Ha a sor elején van egy egyedülálló üres hely
if sor.startswith("ox"):
egyedul += 1
# Ha a sor végén van egy egyedülálló üres hely
if sor.endswith("xo"):
egyedul += 1
# Ha a soron belül vannak egyedülálló üres helyek
egyedul += sor.count("xox")
print("A nezoteren jelenleg {} egyedulallo ures hely van".format(egyedul))
print("7. feladat")
sum_lista = []
for i, sor in enumerate(fog_lista):
sum_sor = []
for j, szek in enumerate(sor):
if szek == "x":
sum_sor.append("x")
else:
sum_sor.append(kat_lista[i][j])
sum_lista.append(sum_sor)
with open("szabad.txt", "w") as f:
[f.write(line + '\n') for line in sum_lista] -
XP NINJA
őstag
válasz
cousin333
#449
üzenetére
Köszönöm a részletes választ.

Az általad javasolt módhoz még nem jutottam el, az utolsó két feladaton kivül működik a program, de gyanitom nem a legegyszerűbb módon. Nem törekszem a legeslegegyszerűbb módra, annak szerintem még nincs itt az ideje, de ezt én is túlzásnak érzem.
def feladat_1():
lista=[]
f=open("foglaltsag.txt")
for sor in f:
sor=sor.strip()
soronként=list(sor)
lista.append(soronként)
f.close()
return lista
lista=feladat_1()
print("2. feladat")
def feladat_2():
sorszam=int(input("Adja meg a sor számát: "))
szekszam=int(input("Adja meg a szék számát: "))
sor=lista[sorszam-1]
if sor[szekszam-1]==('x'):
print("A hely foglalt")
else:
print("A hely szabad")
feladat_2()
print("3. feladat")
def feladat_3():
f=open("foglaltsag.txt")
jegyek=0
for sor in f:
list(sor)
sorcnt=sor.count("x")
jegyek=jegyek+sorcnt
szazalekban=int((jegyek/300)*100)
print("Az előadásra eddig {0} jegyet adtak el, ez a nézőtér {1}%-a.".format(jegyek, szazalekban))
f.close()
feladat_3()A 4. for ciklusra gondoltam, de nem sikerült, viszont működik.
print("4. feladat")
def feladat_4():
f=open("kategoria.txt")
kat1=0
kat2=0
kat3=0
kat4=0
kat5=0
for sor in f:
list(sor)
cnt1=sor.count("1")
cnt2=sor.count("2")
cnt3=sor.count("3")
cnt4=sor.count("4")
cnt5=sor.count("5")
kat1=kat1+cnt1
kat2=kat2+cnt2
kat3=kat3+cnt3
kat4=kat4+cnt4
kat5=kat5+cnt5
kategoriak=[kat1,kat2,kat3,kat4,kat5]
legtobb=(kategoriak.index(max(kategoriak))+1)
print("A legtöbb jegyet a(z) {0}. árkategóriában értékesítették.".format(legtobb) )
f.close()
feladat_4()Az 5. feladat az előző leve alapján működik, de ez is hosszú.
print("5. feladat")
def feladat_5():
f=open("kategoria.txt")
kat1=0
kat2=0
kat3=0
kat4=0
kat5=0
for sor in f:
list(sor)
cnt1=sor.count("1")
cnt2=sor.count("2")
cnt3=sor.count("3")
cnt4=sor.count("4")
cnt5=sor.count("5")
kat1=kat1+cnt1
kat2=kat2+cnt2
kat3=kat3+cnt3
kat4=kat4+cnt4
kat5=kat5+cnt5
ar1=kat1*5000
ar2=kat2*4000
ar3=kat3*3000
ar4=kat4*2000
ar5=kat5*1500
print("A bevétel pillanatnyilag {0}Ft".format(ar1+ar2+ar3+ar4+ar5))
f.close()
feladat_5()A 6. és 7. feladat nem sikerült, de bemásolom mivel próbálkoztam.
def feladat_6():
f=open("foglaltsag.txt")
#lista=[]
rossz1=0
rossz2=0
rossz3=0
for sor in f:
list(sor)
#sor=sor.strip()
#soronként=list(sor)
#lista.append(soronként)
#print(sor)
#print(soronként)
#lista.append(sor)
cnt1=lista.count("x")
cnt2=lista.count("xox")
cnt3=lista.count("xo")
rossz1=rossz1+cnt1
rossz2=rossz2+cnt2
rossz3=rossz3+cnt3
print(rossz1)
print(rossz1)
print(rossz1)
f.close()
feladat_6()
def feladat_7():
f=open('szabad.txt','w')
for i in range(300):
if lista[i]=="x":
f.close()
feladat_7()Összegzésben eddig ez a legjobb munkám, eddig még egyik érettségivel sem jutottam el.
A megoldókulcsból ha jól értelmezem 4 pontot veszithetek a program terjedelme miatt?
Illetve a saját függvények készitése viszonylag megy, csak még hasznositani nem nagyon próbáltam. -
cousin333
addikt
válasz
cousin333
#449
üzenetére
Így belegondolva az általam megadott példában talán célravezetőbb lenne, ha elrejtenénk a felhasználó elől a tényt, hogy a lista számozása nullától indul. Továbbá nem kellene a függvénynek többet csinálnia, mint amennyi szükséges, majd a program írója eldönti mihez kezd az információval. Tehát talán inkább ezt írnám:
def foglaltsag_ellenorzes(lista, sor, szek):
# Ennek az eredménye igaz vagy hamis (True/False)
return lista[sor-1][szek-1] == "x"
# 2. feladat
sorszam = int(input("Adja meg a sor szamat: "))
szekszam = int(input("Adja meg a szek szamat: "))
# Az if a visszatérési értéket vizsgálja
if foglaltsag_ellenorzes(lista, sorszam, szekszam):
print("A szek foglalt")
else:
print("A szek ures") -
cousin333
addikt
válasz
cousin333
#449
üzenetére
A "logikai függvényesítés" előnye a feladatszám-központúval szemben, hogy az 1-es feladat is könnyebben megoldható, hiszen ott nem is egy, hanem két hasonló felépítésű fájlt kell beolvasni. Így az előző hozzászólásom utolsó sora helyett elég ennyi kiegészítés:
fog_lista = fajl_beolvasas("foglaltsag.txt")
kat_lista = fajl_beolvasas("kategoria.txt") -
cousin333
addikt
válasz
XP NINJA
#446
üzenetére
Így első blikkre azért nem működött a második feladatod a függvényes módszerrel, mert nem is hívtad meg. A végén feladat_2 helyett feladat_2()-t kellett volna írni.
Szerintem egyébként mindkét megoldás lehet jó, bár az ilyen egymásra épülő feladatoknál talán nagyobb "érettséget" sugall egy harmadik módszer: a kettő kombinációja. Ilyenkor folyamatosan adod hozzá a függvényeket, amik egy jól meghatározott funkciót hajtanak végre, ami nem feltétlenül esik egybe a (teljes) kiírásbeli feladattal. Ezeket pedig egy "fő programban" hívogatod meg szükség szerint.
A példádban ott a 2. feladat, ami annak eldöntése, hogy foglalt-e egy hely, vagy sem. Ebből készíthetnél egy foglaltsag_ellenorzes(lista, x, y) nevű függvényt, ami csak annyit csinál, hogy megnézi a lista-t, hogy az x, y hely foglalt-e (igen/nem), majd a feladathoz kapcsolódva megcsinálod a "körítést". Pl:
def foglaltsag_ellenorzes(lista, sor, szek):
if lista[sor][szek] == "x":
print("A szek foglalt")
else:
print("A szek ures")
# 2. feladat
sorszam = int(input("Adja meg a sor szamat: "))
szekszam = int(input("Adja meg a szek szamat: "))
foglaltsag_ellenorzes(lista, sorszam-1, szekszam-1)Ha már egyszer elkészült egy függvény, vagy megvan egy adat, akkor azt nem kell ismételni. Mondjuk a hármas példában feleslegesen olvasod be újra a foglaltsag.txt fájlt, hiszen azt már az első feladatnál megtetted. De ahhoz is lehetne egy sima fajl_beolvasas(fajlnev) függvényed, aminek csak a fájl listába olvasása lenne a dolga.
Két további megjegyzés a beolvasáshoz: jobb lenne mindezt a with kifejezéssel megtenni, ami automatikusan zárja is a fájlt. A másik, hogy szerintem felesleges a sorokat is külön listaelemekre bontani, hiszen egy-egy sor az tulajdonképpen egy sztring, ami eleve karakterenként indexelhető. Pl.:
def fajl_beolvasas(fajlnev):
with open(fajlnev, "r") as f:
lista = [line.strip() for line in f]
return lista
lista = fajl_beolvasas("foglaltsag.txt") -
XP NINJA
őstag
Érettségire készülök, néztem felkészitő videókat, és valaki minden feladatot külön függvényként csinál (Képen az első feladat), és többen nem (második feladat). A második feladatnál ki is kommenteltem, mert nem tudtam megcsinálni azon a módon.
Ti melyik módot ajánljátok?

-
XP NINJA
őstag
Sziasztok, van itt még valaki aki tud segiteni, vagy ne próbálkozzak?

-
Whysperer
addikt
-
Whysperer
addikt
Sziasztok. Python programozással meglehetne oldani szerintetk,hogy a MAYA 3D nucleos simulational tudja a CUDA magot hasznlni . úgy mint itt a videóban? [link] meg a több videóban? Alapból nicns benne ,de beleprogramozni lehet.
-
sonar
addikt
Azt tudod, hogy hol akad el?
Nézd meg, hogy meghivja -e a belső scriptet v sem.
Gyakori hiba, hogy ha a belső script is használ config file-okat... akkor a path eltéved. -
olivera88
veterán
Megtudná e mondani valaki mi nem stimmel ebben a kódban? Én találtam ki, részben működik részben nem.
Ennyiből áll az egész.
#!/usr/bin/python
python arpegepcpvhu_72.py
python arpegepcphu_72.py
python arpegepcpsrb_72.pyAz lényege hogy lefuttat másik 3 python scriptet egyszerre h ne kelljen külön külön. Működik is enterrel. De ott ahol kellene hogy működjön ott nem.
Systemd vel akarom futtatni. ExecStart=/home/oliver/Magics++PCP,T_script/precip_72.py, ja és a terminálban se jó hogy beírom hogy python precip_72.py -
AeSDé Team
őstag
válasz
AeSDé Team
#431
üzenetére
Éljenek a bájtok
Már működik.
Egy dolog maradt amire rá kell még jöjjek, a fájlba írt adat végére tesz egy pontot, ami nem tetszik.myfile = io.BytesIO()
myfile.write(bytes(CONTENT, 'UTF-8'))
myfile.seek(0)
ftp.storlines("STOR " + NAME, myfile)
print("OK")Köszönöm a segítségeteket

-
AeSDé Team
őstag
A bemásolt leegyszerűsített kód nem tartalmaz directory váltást, de az eredetiben szerepel a megfelelő rész. Nem is ott lesz a gond, hanem valahol máshol. Most egy lépést tettem előre a .seek(0) beépítésével, mert most már a readline működik, de az FTP feltöltős odul még mindig nem hajlandó elfogadni az adatot, ezúttal errorral.
File "D:\Applications\Python\lib\ftplib.py", line 537, in storlines
if buf[-1] in B_CRLF: buf = buf[:-1]
TypeError: 'str' does not support the buffer interface# FTP upload
import ftplib
import io
ftp = ftplib.FTP(SERVER_IP)
ftp.login(USER, PASSWORD)
if DIR:
ftp.cwd(DIR)
myfile = io.StringIO()
myfile.write(CONTENT)
myfile.seek(0)
ftp.storlines("STOR " + NAME, myfile) # Ez a sor ad hibaüzenetet -
csaszizoltan
csendes tag
válasz
AeSDé Team
#429
üzenetére
Szia!
A login után szokott lenni egy könyvtárváltás abba a directoryba, ahonnan (és alkönyvtáraiból) a webszerver ténylegesen küldi a html-eket és egyéb adatokat az internetre.
ftp.login(USER, PASSWORD)
ftp.cwd("/public_html")myfile.seek(0) # hogy az elejétől töltse fel
ftp.storlines("STOR " + NAME, myfile) # a myfile readline() függvényét használva automatikusan működik
#print (myfile.getvalue())
myfile.seek(0) # és újra az elejétől
print (myfile.readline()) # Ez nem az ftp-ről olvas, csak a myfile-bólÜdv.
-
AeSDé Team
őstag
Köszi, próbálkoztam de valami nem stimmel.
Létre tudom hozni a StringIO objektumot, és a .write -al hozzáadom a szükséges adatot.
Ezután a .getvalue() beolvassa az adatokat, és minden stimmel.
A gond az hogy az ftplib .storelines funkciója nem getvalue, hanem .readline -al olvas, és valamilyen okból az üresen tér vissza. Nincs error, de a fájl amit a szerveren létrehozok, üres lesz.Kódrészlet röviden:
# FTP upload
import ftplib
import io
ftp = ftplib.FTP(SERVER_IP)
ftp.login(USER, PASSWORD)
myfile = io.StringIO()
myfile.write(CONTENT)
ftp.storlines("STOR " + NAME, myfile)
print (myfile.getvalue()) # Itt nincs gond, megvan az adat
print (myfile.readline()) # Ez üresen tér vissza -
sonar
addikt
válasz
AeSDé Team
#427
üzenetére
Szerintem a stringio jó lehet neked.
-
AeSDé Team
őstag
Sziasztok!
Lenne egy kérdésem FTP-vel kapcsolatban
Az ftplib .storlines parancsával fájl objektumokat lehet eltárolni FTP szerverre. A kérdésem az lenne hogy hogyan lehetne ezt a függvényt string-el etetni fájl objektum helyett? (ergó hogyan konvertálhatok stringet "file-objectté)
Jelenleg úgy néz ki a programom, hogy a stringet lementi fájlba, majd beolvassa a fájlt bufferelve, és a beolvasott objektumot küldi FTP szerverre. Hogyan ugorhatnám át a felesleges írást/olvasást HDD-ről? -
EQMontoya
veterán
Háj!
Találkozott már valaki olyasmivel, hogy pythonból mailt küldve csak egy MIMEText ojjektumot hajlandó elküldeni, akármennyit csatol?
Itt van egy ilyen példakód, ha ezt csinálom, akkor nálam csak a html érkezik meg. De ha a html-t kiveszem, akkor megjön a plain. A jelenség független a sorrendtől.

Végülis behánytam egy html-be az egészet, szóval nincs nagy gáz, de tényleg jó volna tudni, hogy miaf..ért nem mén ez így. -
cousin333
addikt
Igen, valahogy úgy.
Ami a GUI-t illeti: Pythonban több út is vezet az igazsághoz. Egyszerű modul elvileg a tkinter ami tulajdonképen része az alap Python telepítésnek. Segíteni nem tudok benne, sose használtam...

Másik, komolyabb opció a Qt keretrendszer, amit a pyqt és társai tesznek használhatóvá. A korábban említett WinPython disztribúcióban pl. benne van minden, ami ehhez kell, például a Qt designer nevű program, amivel kézzel gyárthatsz (drag'n'drop módszerrel) égy ui kiterjesztésű GUI leíró fájt, amit pár sor kóddal Pythonban is használatba vehetsz. Szerintem nem triviális, de sokat ki lehet hozni belőle. video
Az általad említett feladathoz ugyanakkor szerintem remekül passzolna az IPython, újabb nevén Jupyter, ami egy továbbfejlesztett parancssori környezet, Az IPython Notebook ugyanakkor a böngészőben futtatja a Pythont! Egy vagy több soros cellákba írhatsz kódot (vagy szöveget), amit cellánként lehet végrehajtani, akár tetszőleges sorrendben. Nagyon jó adatok feldolgozásához, kísérletezgetéshez. A cella kimenete lehet szöveg (pl. mint a print), grafikon (pl. matplotlib), de már használhatsz widgeteket (lásd gomb és csúszka, meg ilyenek). Ezek elmenthetők HTML-ként is és megoszthatók. Az IPython egy külön csomag, de alapból benne van az Anaconda és Winpython disztribúciókban.
Ha statisztikai szoftvert szeretnél írni, akkor nagyon tudom ajánlani a pandas modult (bemutató, bemutató2). Sok hasznos, praktikus funkció, bőséges dokumentáció. Ez a csomag is része az Anaconda és a Winpython disztribúcióknak.
-
oszi666
őstag
válasz
cousin333
#422
üzenetére
hát már sokkal többet mindent tudok, szóval köszönöm
tehát ha jól értem: a spyderben megírom a kódot, az tovább küldi a pythonnak, ami lefuttatja, a spyder pedig "kiolvassa" az eredményt kb?esetleg tudsz valami olyan modult vagy csomagot, valamit, amivel egyszerű gui fejleszthető, mint pl a codeskulptor simplegui-ja? szeretnék saját szórakozásra egy minimál statisztikai szoftvert írni
lenne egy mező, ahova be tudom írni az adatokat, és lenne pár gomb, ami lefuttatja az analízist, majd megjeleníti valahogyköszönöm a segítséget meg a könyveket is

-
cousin333
addikt
Ez egy kicsit pongyola lesz, de talán segít...
Python:
- Python futtatókörnyezet
- része az IDLE nevezetű parancssoros Python interpeter
- ez A hivatalos Python telepítés, lásd itt
- vannak benne továbbá gyári modulok különböző feladatokra
- Linuxos analógiával élve ez a kernelSpyder IDE:
- egy népszerű, nyilt forráskódú fejlesztői környezet
- ez önmagában kevés, csak kód szerkesztésre van, magát a kódot a Python futtatókörnyezet hajtja végre
- külsős emberkék fejlesztik
- sokkal összetettebb és komolyabb, mint a "gyári" IDLE
- kódszerkesztő, súgó, aktuális változók listája
- párhuzamosan futtatható, független interpreter környezetek külön füleken (mint sok IDLE egymás mellett)
- más példák 3rd party IDE-re: PyCharm vagy Ninja IDEAnaconda:
- egy Python fejlesztői csomag
- ez konkrétan kereskedelmi, aminek ingyenes változata is van
- benne van a Python "alapcsomag", a Spyder IDE (a fejlesztéshez) és egyéb, külsősök által fejlesztett hasznos modulok (pl. Numpy)
- más példák: WinPython (ingyenes) vagy Canopy (kereskedelmi)
- Linuxos analógiával ezek a disztribúciók (Ubuntu, Mint, Debian...)A Codeskulptor tulajdonképpen olyan, mint pl. a Spyder, csak a kódot, amit a webes felületen beírsz egy szerveren lévő Python interpreter futtatja le, nem a saját géped.
Könyvből jó sok féle van, különösen, ha beszélni angol:
Byte of Python
Think Python
Dive Into Python
... -
oszi666
őstag
Sziasztok, nemrég elkezdtem én is Pythont tanulni, ma már kb bármi állást nézek, mindenhova odaírják, hogy programozási ismeretek előny.
Szóval elkezdtem egy kurzust courseran, ami tök jól megy, egy netes keretrendszert (codeskulptor) használunk.
Namármost.
Letöltöttem egy anaconda package nevű cuccot, amiben van egy Spyder nevű IDE.
Valaki le tudná írni, hogy egyáltalán miért van egy külön python nevű parancssor, egy anaconda nevű valami, meg egy Spyder nevű akármi? Melyiknek pontosan mi a neve, és mire valóak egész konkrétan?
Ha valami linket vagy könyvet tudtok ajánlani azt is megköszönöm. De ez hogy keretrendszer, meg interpreter, IDE stb, számomra tiszta homály, a codeskulptor tényleg hülyebiztos és faék egyszerű, szóval kezdéshez ideális. De szeretnék később komolyabban is foglalkozni vele, mert marhalusta vagyok.
Előre is köszönöm a segítséget! -
cousin333
addikt
Sejtettem, hogy az int lesz a hiba, de látom már megtaláltad. Az említett hibakezeléssel kapcsolatban egy javaslat: fájl megnyitásához használd a kontextus-kezelőt (context-manager) a with kulcsszóval. Ez egy már beépített funkcionalitás, ami egyszerűbbé teszi a fájlok kezelését. A beolvasás így nézne ki vele:
with open('file.txt', 'r') as f:
lines = f.readlines()
a = raw_input ("Kerlek add meg a sor szamat: ")A with blokk megnyitja a fájlt, és a benne lévő kód feldolgozza. A blokk (behúzás) végén a fájl automatikusan bezárásra kerül. with és with
ui: Tudom, hogy ez vita forrása, de ha most ismerkednék a Pythonnal, én a 3-as verzióval kezdenék...
-
sonar
addikt
Azért annyit még hozzátennék ha megengeded, hogy ebben a progi részletben zéró hibakezelés van.
Ha nagyobb számot üt be, mint amennyi sor van hibára fut...
ha csak szöveget üt be akkor is problematika van...
Érdemes lenne ezen kicsit elgondolkodni. Még ha csak gyakorolsz is. (akkor jó agytorna) -
alfa20
senior tag
Sziasztok!
Ha beolvastok egy fájlt és bekérem egy sor számát, akkor azt a sort hogy tudok kiíratni?
f = open('file.txt', 'r')
lines = f.readlines()
a = raw_input ("Kerlek add meg a sor szamat: ")a
print lines[a]
-val nem tudom, sajnos nem ilyen egyszerű.
-
Mr Dini
addikt
Szevasztok!
Egy IPTV stream plugint szeretnék tervezni kodi(xbmc) alá.
Az xbmc plugin ugye python alapú, ezért is fordulok hozzátok.
Elkészítettem a kódot pár tutorial alapján, mert nem vagyok egy nagy pythonos, meg amit csináltam az is rég volt már...

Becsomagoltam és megpróbáltam feltenni a málnán futó openelecre, de hibával eldobta a telepítőt. Semmilyen log nincs, ami utalna erre.
(legalábbis én nem találtam ilyet)Maga a zip itt lenne: [link]
És itt van maga a python rész: [link]
Ránéznétek nekem, hogy mit ronthattam el?
Előre is köszönöm a válaszokat/tippeket/ötleteket! 
-
vajon mit kezdesz egy ilyennel:
(lambda _, __, ___, ____, _____, ______, _______, ________:
getattr(
__import__(True.__class__.__name__[_] + [].__class__.__name__[__]),
().__class__.__eq__.__class__.__name__[:__] +
().__iter__().__class__.__name__[_____:________]
)(
_, (lambda _, __, ___: _(_, __, ___))(
lambda _, __, ___:
chr(___ % __) + _(_, __, ___ // __) if ___ else
(lambda: _).func_code.co_lnotab,
_ << ________,
(((_____ << ____) + _) << ((___ << _____) - ___)) + (((((___ << __)
- _) << ___) + _) << ((_____ << ____) + (_ << _))) + (((_______ <<
__) - _) << (((((_ << ___) + _)) << ___) + (_ << _))) + (((_______
<< ___) + _) << ((_ << ______) + _)) + (((_______ << ____) - _) <<
((_______ << ___))) + (((_ << ____) - _) << ((((___ << __) + _) <<
__) - _)) - (_______ << ((((___ << __) - _) << __) + _)) + (_______
<< (((((_ << ___) + _)) << __))) - ((((((_ << ___) + _)) << __) +
_) << ((((___ << __) + _) << _))) + (((_______ << __) - _) <<
(((((_ << ___) + _)) << _))) + (((___ << ___) + _) << ((_____ <<
_))) + (_____ << ______) + (_ << ___)
)
)
)(
*(lambda _, __, ___: _(_, __, ___))(
(lambda _, __, ___:
[__(___[(lambda: _).func_code.co_nlocals])] +
_(_, __, ___[(lambda _: _).func_code.co_nlocals:]) if ___ else []
),
lambda _: _.func_code.co_argcount,
(
lambda _: _,
lambda _, __: _,
lambda _, __, ___: _,
lambda _, __, ___, ____: _,
lambda _, __, ___, ____, _____: _,
lambda _, __, ___, ____, _____, ______: _,
lambda _, __, ___, ____, _____, ______, _______: _,
lambda _, __, ___, ____, _____, ______, _______, ________: _
)
)
) -
sonar
addikt
válasz
Blue Eagle
#408
üzenetére
google: pcy decompile
Verzió függő a dolog, nem mindegyik decompiler tud mindent visszaforgatni. -
Blue Eagle
őstag
sziasztok!
Egy buta kérdés: Windows alatt hogyan tudok megnyitni/kicsomagolni egy .pyc fájlt?
-
sonar
addikt
sziasztok,
rrdtool-hoz hasonló grafikon készítőt tudtok ajánlani?
(egy olyan linux-ra kellene ahol elég korlátozottak lettek a lehetőségek és keresem az alternativákat) -
Lacces
őstag
Sziasztok!
Milyen praktikák, trükkök, kiegészítők, webszerverek, leírás stb. van arra, hogy egy python webalkalmazás (django) sebességét megnöveljük?

Főleg a PHP7 közeledtével nálam aktuális a téma, de mivel a matematikai számításokban gyorsabb a python, ezért nála teszem le a voksomat egyelőre. -
axioma
veterán
Mibe kavar be? Minden (szokozos szetvalasztas utan kapott) darabot megvizsgalsz, hogy jo-e neked (vesszovel szetdobva 3 lett, es az utolso 0, es az elso ketto megfelelo szamma konvertalhato). Ha igen, akkor szamkent berakod a part a listadba. Ha nem, me'sz a kovetkezore.
Raadasul ha ez valami konfig jellegu dolog, akkor a szoveget (megjegyzes) is jelolhetik valahogy, azt is figyelheted. -
adamch4
tag
rendezett, pontosan ilyen formában (a pont-tizedesjel utáni számokból levettem egy kicsit, h ne legyen olyan hosszú):
23.65,49.16,0 23.65,49.23,0 22.53,48.28,0szóval egy tömbön belül van egy vessző, két tömb között pedig egy szóköz. a 40-es számoknál a számok végén ,0 szerepel, de az elhagyható.
-
sonar
addikt
Milyen formában vannak a számok a szövegben?
Random vagy rendezett valamilyen minta alapján? (ha jól látom itt vesszővel van elválasztva ez megállja a helyét?)Mert ha vessző akkor én azt csinálnám, hogy split-elném és egy for ciklus + kettő if.
Vhogy igy.minden_szam = szoveg.split(',')
for m in minden_szam:
if float(m) > 21 and float(m) < 23:
print '21-23 kozotti', m
continue
if float(m) > 47 and float(m) < 49:
print '47-49 kozotti', m
continue
Új hozzászólás Aktív témák
- AKCIÓ! DELL PowerEdge R630 rack szerver - 2xE5-2660v4 (28c/56t, 2.0/3.2GHz), 96GB RAM, 4x1G, áfás
- ÁRCSÖKKENTÉS Xiaomi Redmi 13C 8/256 mint az új, garanciával eladó
- Új, Aktiválatlan, iPhone 15 (128 GB) (rendelhető)
- Dell Vostro 3425 6magos Ryzen 5 5625U 8GB RAM 256GB SSD
- GYÖNYÖRŰ iPhone 13 mini 128GB Blue -1 ÉV GARANCIA -Kártyafüggetlen, MS3884, 100% Akkumulátor
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest










