- Vodafone mobilszolgáltatások
- Yettel topik
- Honor Magic5 Pro - kamerák bűvöletében
- Honor Magic6 Pro - kör közepén számok
- Samsung Galaxy A54 - türelemjáték
- Samsung Galaxy A53 5G - kevesebbet többért
- Redmi Note 13 Pro+ - a fejlődés íve
- iPhone topik
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Xiaomi Mi 9 SE - csúcsimitátor
Hirdetés
-
Lenovo Essential Wireless Combo
lo Lehet-e egy billentyűzet karcsú, elegáns és különleges? A Lenovo bebizonyította, hogy igen, de bosszantó is :)
-
Rossz üzlet az EV-kölcsönzés
it Küszködik az EV-kölcsönzés miatt a Hertz Global, még több EV-t adnak el.
-
Konzolokra is megjelenik a Deathbound
gp A PC-s verzió mellett megkapjuk a teljes kiadást PlayStation és Xbox platformokra is.
Új hozzászólás Aktív témák
-
-
Siriusb
veterán
Úgy látom windowst használsz.
Indíts el a Parancssort (azt hiszem így hívják), vagy a Futtatásnál írd be, hogy cmd. Itt kapsz egy fekete ablakot. Ide írd be a python parancsot.
Ha jól tudom, windowsnál a py kiterjesztésű fájlokat automatikusan a pythonnal társulnak, tehát fájlkezelőben dupla kattintással is indulnia kellene.Mégegyszer: amit te láttál, azt nem a python shell-be írták be (nem volt elindítva a python), hanem egy terminálba.
-
-
mate0023
tag
Sziasztok
Érettségire készülök python nyelven.
Abban szeretnék segítséget kérni,hogy hogyan tudok egy 90 számból álló listát a legegyszerűbben 15X6-os tördelésben a képernyőre íratni.
Csak nagyon hosszan tudnám megoldani, de biztos van egyszerűbb módszer, tudnátok segíteni ?
Üdv. Máté -
Siriusb
veterán
válasz mate0023 #104 üzenetére
Szia!
Szerintem próbáld meg átalakítani a másdik példát.
-
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?
-
privacy99
senior tag
Sziasztok!
Belemerültem egy python feladatba, el is jutottam egy darabig de sajnos innen nem tudok továbbhaladni, mert nagyon kezdő vagyok még a nyelvben. Ez a program egy menetrendből szed ki sorokat feltétel szerint. A feltétel hogy a járat Londonba menjen, és késve induljon, tehát a tervezett és várható indulási időpont eltérjen(ugye az utóbbi legyen később) . Az adatok táblázatszerűen vannak rendezve egy fájlban, tabbal vannak elválasztva, és így néznek ki:Járatszám Hova Tervezett Várható Term. Megj.
W62201 London Luton 06:00 05:59 1 Felszállt
DL9694 Amsterdam 06:15 06:17 2A Felszállt
LH1343 Frankfurt 06:35 06:42 2A FelszálltÖsszesen 50 ilyen járatom vana fájlban.
Jelenleg a kódom itt tart:
import sys
import os.path
hossz = len(sys.argv)
if hossz < 2:
print "Keves parameter!"
if not os.path.isfile(sys.argv[1]):
print "A megadott inputfajl nem letezik!"
f1 = open(sys.argv[1], 'r')
lines = f1.readlines()
f2 = open('london.txt', 'w')
for text in lines:
text = text.rstrip(' \t')
l = len(text)
if (l > 0):
f2.write(text)
f2.close()Tehát csak a keret van meg, az inputfájlt majd a program futtatásakor kell megadni, és ha minden igaz ez kiszedi a tabokat és a london.txt-be írja.
A kimenetnek úgy kéne kinéznie, hogy:BA865 London LHR 9
Tehát járatszám hova megy hány percet késik
Ui.: A várható időpont nem mindenhol szerepel, és a járatszám 5 és 7 karakter közötti.Előre is nagyon szépen köszönöm a segítséget!
[ Szerkesztve ]
-
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() -
cousin333
addikt
válasz privacy99 #119 üzenetére
Üdv!
A te példád alapján, de nem teljesen azt folytatva (szóval még dolgozni kell rajta), nekem ez jött ki. Hozzáteszem, hogy én Python 3.2.3-at használtam, ami nem teljesen kompatibilis a 2.7-es szériával (amit a kódod alapján te használtál). Szóval a kód:
# előregyártott fejléc a sorok egyes elemeihez
rekord = ['Kod', 'Repter', 'Terv', 'Indulas', 'Terminal', 'Megjegyzes']
# a fájl megnyitása olvasásra, ez a "with" szerkezetes megoldás a végén be is zárja azt, a fájl objektum neve (a példád alapján) f1
with open('d:\\text.txt', 'r') as f1:
# adatok beolvasása soronként, sorvégi újsor karakterek ("\n") levágása
# egy-egy sor szétbontása tabulátorokkal határolt elemekre
# könyvtár-listát hoz létre az elemekből a "rekord" nevű fejlécekkel
# az üres sorokat kihagyja
# 'Terminal': '1', 'Indulas': '05:59', 'Terv': '06:00'}
adatok = [dict(zip(rekord, i.strip('\n').split('\t'))) for i in f1 if i != '\n']
# teljes fájl beolvasva az "adatok" nevű listába
# példa az első elemre (adatok[0]):
# {'Megjegyzes': 'Felszállt', 'Repter': 'London Luton', 'Kod': 'W62201', ...
# 'Terminal': '1', 'Indulas': '05:59', 'Terv': '06:00'}
# az időkülönbségek számításához kell ez a könyvtár
from datetime import datetime as ido
# végignézzük az összes bejegyzést
for adat in adatok:
terv = ido.strptime(adat['Terv'], '%H:%M') # a "terv" egy időobjektum lesz a szövegből a megadott formátummal
teny = ido.strptime(adat['Indulas'], '%H:%M') # a "teny" egy időobjektum lesz a szövegből a megadott formátummal
kulonb = teny - terv # a két időpont különbsége (egy datetime.timedelta objektum)
adat['Diff'] = kulonb.total_seconds() / 60 # a differenciát hozzáírjuk (mp -> perc)
#megnyitunk egy másik fájl adatmentésre
with open('d:\\kimenet.txt', 'w') as f2:
# kiírjuk bele azokat az elemeket (a megadott adatokkal, tabulátorral elválasztva), amiknél az időkülönbség pozitív
[f2.write('\t'.join([elem['Kod'], elem['Repter'], str(elem['Diff'])]) + '\n') for elem in adatok if elem['Diff'] > 0]Vannak benne kommentek is, remélem azzal együtt érthető lesz. Ha egy sorban nincs várható időpont az a beolvasásnál nem baj, feltéve, hogy a tab-ok ki vannak neki hagyva. A számolásnál már gond lehet , ott bele kell nyúlni a kódba valamiféle vizsgálattal.
[ Szerkesztve ]
"We spared no expense"
-
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.
-
cousin333
addikt
Feltételezem, hogy mondjuk az emberek nevű listában már minden beolvasott név szerepel. Ekkor le kell generálni az összes lehetséges permutációt, hiszen "Eszter köszönti Bélát", de kell egy "Béla köszönti Esztert" is. Ez alapból szépen sorba lesz rendezve, tehát meg kell keverni őket. A kód:
import itertools
import random
variaciok = list(itertools.permutations(emberek, 2))
random.shuffle(variaciok)A random.shuffle helyben keverget, tehát a bemenet és a kimenet egyaránt a variaciok nevű változó. Innen már csak le kell generálni a mondatokat, ami elég egyszerűen megy:
mondatok = [i[0]+' köszönt '+i[1]+' nevű ismerősének.' for i in variaciok]
Ezután ezt ki kell íratni a konzolra, fájlba... stb. Szerintem kb. ennyi. Ez működik 2, vagy akár 100 embernél is.
[ Szerkesztve ]
"We spared no expense"
-
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 ]
-
Yoru
csendes tag
Hali!
Nemrég kezdtem a Python tanulását és lenne egy kérdésem.
A str() string mire használható?pl.:
pi = 3.14159
print str(pi)Miért nem írhatom le csak így?
pl:
pi = 3.14159
print pi -
Siriusb
veterán
Szia!
Pl. azért hasznos, mert átkonvertálja az adott objektumot string-é, így az ehhez a típushoz kapcsolódó függvényeket is használni tudod.
-
sonar
addikt
Hi,
Most izlelgetem ezt a nyelvet. De egy picit elakadtam. A feladat az lenne, hogy a megtalal() fv ha megtalálja a karakter-t akkor a visszatérő érték a pozició lesz. Ha meg nem találja meg a keresett karaktert akkor -1 -gyel kellene visszatérnie (de semmi esetre sem lehet 0 vagy pozitív érték)
def megtalal(szoveg,karakter):
i=0
x=len(szoveg)
while (x>=i):
if (szoveg[i]==karakter):
return i
i=i+1
return -1
print megtalal('Julietta & Romeo','x')A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
cucka
addikt
A hiba a while ciklusban van, ami egyel tovább fut, mint a stringed hossza.
Egyébként ha már pythonban programozol, akkor nem érdemes pythonra lefordított turbo pascal kódot írni.
Például pythonban könnyű végigiterálni bármin anélkül, hogy ciklusváltozóval b*szakodnál:def megtalal(szoveg, karakter):
ret = -1
for i,c in enumerate(szoveg):
if c == karakter:
ret = i
break
return ret(Az enumerate azért kell, hogy a string karakterei mellett azok indexét is megkapjuk, lásd a doksiban, hogy mit csinál pontosan. Ha erre nincs szükség, akkor elhagyható.)
Azt rád bízom, hogy gondold végig, vajon fog-e ez menni unicode stringekkel (nem), hogy hogyan oldod meg a hibakezelést, stb.
[ Szerkesztve ]
-
balees
tag
Hello,
kérlek segítsetek, elakadtam:
olyan reguláris kifejezést kellene irnom ami egy bizonyos (getParameters) függvényhívás paramétereit elkapja.
A paraméterek több sorban is lehetnek.
Ilyen lenne a függvényhívás:
getParameters(['ABCD_1',ABCD_2',
ABCD_3','ABCD_4'])Amit eddig sikerült az elkap mindenféle paramétert (mármint ami ' ' között van:
import re
str = "getParameters(['ABCD_1','ABCD_2',\
'ABCD_3','ABCD_4'])\
getPara(['AAA','BBB'])"parameters = re.findall(r'\'[\w-]+\'', str)
for parameter in parameters:
print parameterAmit nem tudok elérni hogy csak a getParameters-ből származó értékek kellenek.
[ Szerkesztve ]
-
Hyperion
senior tag
Sziasztok!
Van lehetőség arra, hogy egy folyamatosan futó Python program változóit menet közben, egy másik Pythonnal befolyásoljam?
Köszönöm!
-
sztanozs
veterán
válasz Hyperion #141 üzenetére
Ahogy írtam, fájl írás és figyelés: [link], ja és ott van még az mmap.
De van natív python multiprocesing is...mod: csak nem akartam py-s dolgokkal tovább szemetelni a RPi fórumot...
[ 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...
-
Hyperion
senior tag
válasz sztanozs #142 üzenetére
Értem, és köszönöm!
Az első megoldásra magam is gondoltam, "paraszt" módszerrel. Ha változik a file méret, valószínüleg érkezett beleírt parancs--#> hajtsuk végre, viszont féltem, hogy lelassítja az egész működést ezért nem is próbáltam ki.. Viszont ez a külön library tetszik. Van esetleg infód avval kapcsolatban, hogy mennyire idő, és processzorigényes? (Főleg raspin.)
A második megoldás sokkal jobban érdekel, viszont félek még kevés vagyok hozzá, de legalább el tudok indulni valamerre! Köszönöm!
-
sonar
addikt
Sziasztok,
Az idő modulokkal küzdök. Két file dátumának a különbségére lenne szükségem, de sehogyse birom összehozni. Nekem túlkomplikáltnak tűnik.
Igy meg tudom határozni a két file idejét, de a különbségüket nem tudom képezni
t1=time.ctime(os.path.getmtime(d1))
flgtime=time.ctime(os.path.getmtime(flg))Tudnátok ebben segiteni, hogy merre induljak el?
A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
tacsk0
aktív tag
Sziasztok!
Nemreg telepitettem fel (Windows 7 64bit)-re a python-3.3.0 amd64.msi-t. Tokeletesen felpakolta magat, cmd-bol is etudom inditani a "python" parancsal. Na itt jon a problema feltettem az "ipython-0.13.1.py3-win-amd64-PROPER.exe"-t. Mivel szeretnek ipython-t hasznalni. Na ot mar nemtudom elovarazsolni. Hiaba irom be (cmd) ipython-t nem mukodik.
Mi lehet a megoldas? Kerlek segitsetek!
-
Siriusb
veterán
Python + tkinter kérdés:
Miként lehet megoldani, ha van egy listám ['egy','ketto','harom'], generáljak mindegyik elemből pl. egy labelentry widgetet és ezeket megjelenítsem?
-
Siriusb
veterán
Újabb kérdés, meg lehet-e egy sorban oldani 2 for ciklus helyett a következőt:
Van egy lista:
mylist= [(1,2,3), (4,5,6), (7,8,9)]Ezzel:
[[print(row[i]) for row in mylist] for i in range(3)]
ki tudom íratni egyesével az összes értéket, ám mi van akkor, ha több parancsot szeretnék kiadni, nem csak a print-et? -
sztanozs
veterán
írsz rá egy fv-t és azt hívod meg a print helyett. vagy csak egy sort tudsz átadni
Amúgy ez ilyen sorrendben írja ki az elemeket:
1 4 7 2 5 8 3 6 9Sorrendben ez írja ki:
[[print(element) for element in row] for row in mylist]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...
Új hozzászólás Aktív témák
- Sony MILC fényképezőgépcsalád
- Dell notebook topic
- Hogy is néznek ki a gépeink?
- Videó stream letöltése
- Vicces képek
- Eredeti játékok OFF topik
- Ukrajnai háború
- Viccrovat
- Kodi és kiegészítői magyar nyelvű online tartalmakhoz (Linux, Windows)
- Telekom TV SmartBox: szolgáltatói set-top box alacsony korlátokkal
- További aktív témák...