Hirdetés
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- A luxusmárkáknak kell a bitcoin, az USA jegybankjának nem
- Letiltja az USA a politikusokat a telefonhívásokról és szöveges üzenetekről
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
- Milyen routert?
- Tarr Kft. kábeltv, internet, telefon
- Belenyúlt az USA az Epic Games igazgatótanácsába, nyomoz az NVIDIA
- Windows 11
- AliExpress tapasztalatok
- Linux kezdőknek
- Feháborodott az Apple, a Meta az iPhone-felhasználók üzeneteit akarja olvasgatni
- Nagy áttörés jön a napelemek piacán, nem kell annyi hely a paneleknek
- Microsoft Excel topic
- DIGI internet
Új hozzászólás Aktív témák
-
Siriusb
veterán
válasz Siriusb #1897 üzenetére
Nem is olyan rossz a pycharm.
(#1894) s1999xx
Én sem értem, miért a tkinter-t rakták be alapnak. Mondjuk a python3-hoz sokáig nem volt wxWidget, ha jól emlékszem, azonban sokak örültek volna, ha ezzel szállítják a python3-t.A GTK3 elég jól dokumentált, bár őszintén szólva néha elveszek benne, amikor már nem tudom, egy adott osztály éppen mit és honnan örökölt. Vagy éppen amit próbálok fabrikálni, az gyárilag benne van, amire egy idő után rátalálok.
-
Vesporigo
aktív tag
Ezt a kurzust én is csak ajánlani tudom, a Python for Everybody Specialisation első része. Nagyon érthetően magyaráz Dr. Chuck (természetesen angolul) A Python for Everybody Specialisation első 3 részét megcsináltam kb 1 hónap alatt (ha nagyon ráfekszik az ember, fele ennyi idő is elég):
- Programming for Everybody (Getting Started with Python)
- Python Data Structures
- Using Python to Access Web DataA 4.rész, a Using Databases with Python már kifogott rajtam, ezt egyelőre hanyagolom, mert az SQL tudásom kissé megkopott, szóval azt kell most felelevenítenem.
Érdekes gyakorlatokat ad minden fejezet végén, néha kicsit böngészni kell a netet, vagy kis segítséget kérni, de nem lehetetlen. Engem teljesen lekötött a kurzus.
-
sh4d0w
félisten
válasz Wmwinters01 #1885 üzenetére
coursera. org-on van egy Programming for everyone kurzus, semmiféle elözetes peogramozói tudás nem kell hozzá.
https://www.coreinfinity.tech
-
Siriusb
veterán
Köszönöm mindenkinek a válaszokat!
Hehe, pár script nekem is megy GUI nélkül, de azért vannak olyan dolgok, amikhez célszerűbb (nekem) a GUI.
Vim-et én is szeretem, bár python-hoz még sosem használtam. Pycharm-ot kipróbálom, ha már így bejön többeknek.
-
nagyúr
válasz Siriusb #1889 üzenetére
1, plain text
2, pycharm community edition. munkához is használható (sőt, még forkolhatod is az apache 2.0 liszensz miatt).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.
-
justmemory
senior tag
válasz Siriusb #1889 üzenetére
Szia,
1. én a telómra írok programokat (Nokia n900) - ez be is határolja a GUI-t: GTK (illetve az abból eredő Hildon); lehetne Qt-t is használni, de annak még nem ugrottam neki.
2. Én nem használok IDE-t; vagy iPython-ban próbálok ki pár dolgot, vagy simán Vim/NeoVim-el megírom, aztán futtatom.--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
Siriusb
veterán
válasz Wmwinters01 #1888 üzenetére
Csatlakozom az előttem szólókhoz, elég könnyű elsajátítani az alapokat, nagyon kényelmes a használata, bár el kell sajátítani hozzá a "pitonikus" gondolkodást, hogy tényleg szép és a nyelvhez illő legyen a kódod.
Kíváncsiságból szondáznám én is a nagyérdeműt (ha van kedvetek hozzá):
1.) Milyen GUI-t részesítetek előnyben? (Pl. GTK, mert a KDE (Qt) kiakaszt. )
2.) Milyen IDE-t használtok (ingyenes)? (Eclipse + PyDev) -
Wmwinters01
tag
válasz s1999xx #1886 üzenetére
Az angol folyamatos tanulásban van... sajnos még a német oldalon indultam, de a szakterülethez meg minden máshoz az angol kell, szóval az is fejlődő szinten van -nem szokott ártani ha angol fórumokat, doksikat kell olvasni -
Köszönöm a tippet, akkor átrágom magam oda és mentem a későbbiekre
I`m not afraid to die, I just don`t want to be there when it happens.
-
kovisoft
őstag
válasz Wmwinters01 #1885 üzenetére
A python nagyon jó első nyelvnek, mert könnyen tanulható. És nem minden nyelven ugyanakkora erőfeszítés programozni tanulni.
-
Wmwinters01
tag
Sziasztok,
Pár tanácsért jöttem. Ahogy olvasom a fórumot, azért itt programozásban elég jártas emberek fordulnak meg.
Az lenne a kérdésem, hogy érdemes elkezdeni megtanulni programozni Pythonban, ha nincs semmilyen ismeretem a többi program nyelvhez sem?
Igazából érdekel a programozás és ahogy eddig olvastam elég sokat tudna a munkában segíteni. Meg hát nem baj ha az ember ezt is elsajátítja..Előre köszönöm a válaszokat és bocs a off-ért.
I`m not afraid to die, I just don`t want to be there when it happens.
-
peter1998
tag
válasz kovisoft #1883 üzenetére
Köszi szépen.Végül ez lett a kód.
#fajl beolvasas
f = open("asd.txt", "r")
lines=f.readlines()
#beolvastam a fajlt
#akksi toltottsege
akksi_toltottsege = lines[0]
form_akksi_toltottsege = akksi_toltottsege[16:19]
#---------------------------
akksi_feszultseg = lines[1]
form_akksi_feszultseg = akksi_feszultseg[17:22]
#---------------------------
bejovo_feszultseg = lines[15]
form_bejov_feszultseg = bejovo_feszultseg[15:20]
#---------------------------
#fajl bezarasa
f.close() -
-
peter1998
tag
Sziasztok.
Olyan kérdésem lenne hogy azt hogyan lehet megoldani hogy egy fájl 12.-sorát olvassam be.Jelenleg ez a kódom.f = open("asd.txt", "r")
akksi_toltottseg = f.readline()
print(akksi_toltottseg()) -
KEAN
tag
Hmm... A fenti dolgok kicsit elgondolkodtattak.
Vannak ezek a programozás tanulós oldalak, ahol van valami feladat, a felhasználó beírja a kis kódját, aztán egy gombnyomásra le lehet futtatni a scriptet és kiírja az eredményt vagy hiba esetén a stack tracet.
Kipróbáltam, simán tudtam a kérdéses feladattól teljesen független kódot is írni, fájlt létrehozni, os modullal garázdálkodni, stb, stb.
Kíváncsi vagyok meddig lehet elmenni, bár ideális esetben ezek a környezetek valami elszigetelt konténerben futnak gondolom."Persze, hogy tudtam, csak nem sejtettem!"
-
cousin333
addikt
válasz s1999xx #1876 üzenetére
A fájlból azért nem szerencsés az import-tal beolvasni, mert a fájl tartalma kell, hogy a mezőben szerepeljen (legalábbis az én elképzelésem szerint). Ennek az az értelme, hogy a felhasználó is látja a szkriptet, sőt, apróbb módosításokat is tud rajta végezni. Persze ehhez az sem árt, ha már előzetesen beimportáltunk mindenféle segédfüggvényeket, hogy ez a szkript már rövid és lényegre törő lehessen.
Működését tekintve hasonlítana mondjuk a Robot Framework megoldásához, csak itt nem kell teljesen feleslegesen egy külön leírónyelvet elsajátítani, mehet minden Pythonban.
Ez az ötlet mérés-adatgyűjtés területén merült fel bennem. A "rendes" GUI-s programok ugyanis általában jól működnek, amíg pontosan úgy használják őket, ahogy a fejlesztők megálmodták. De ha már nem pont azt és nem pont úgy kell, akkor jönnek a problémák, míg a fenti exec-es megoldás sokkal rugalmasabb lehet.
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz s1999xx #1869 üzenetére
Egy ötlet: készítesz egy általános jellegű GUI-t. Mondjuk van benne egy nagyobb szövegmező egy vászon, amire grafikont lehet rajzolni, néhány gomb, tekerő, csúszka... stb.
A lényeg, hogy a szövegmezőbe lehet Python kódot beírni (vagy fájlból betölteni), amit aztán futtatni tudsz. Ehhez kell az
eval()
, így a kód használhatja GUI elemeket is, például függvényt rajzolhat, vagy feldolgozhat egy másik mezővel, gombbal betöltött adatfájlt.A lényeg, hogy a Python egy szkriptnyelv, aminek egyik előnye, hogy nem kell előre megírni a teljes kódot, hanem dinamikusan futtathatod. A fenti példa tulajdonképpen egy tuningolt parancssornak is tekinthető.
UI: a Robot Framework nem tudom, mennyire jó példa. Annak pont az a lényege, hogy a tesztet nem Pythonban írod meg, hanem egy - szerintük - egyszerűbb leíró nyelvvel amit a framework aztán értelmez.
[ Szerkesztve ]
"We spared no expense"
-
kovisoft
őstag
válasz Siriusb #1871 üzenetére
Egy lehetőség, talán működik: A renderer.connect() híváshoz plusz paraméterként tudsz user_param-okat hozzárendelni. Ezt használhatod pl. az oszlop sorszámának megadására, és ezt meg fogja kapni a text_edited() egy plusz user_param paraméterben. A path megmondja, hogy melyik sorban van a módosított cella, a user_param pedig megadja az oszlop számát.
Valami ilyesmire gondolok (tegyük fel, hogy a liststore el van tárolva egy memberváltozóban, de akár ezt is át lehet adni user_param-ként):
def edit_selected(self, widget):
...
column = ...
renderer.connect("edited", self.text_edited, column)
def text_edited(self, widget, path, new_text, user_param):
self.liststore[path][user_param] = new_text -
nagyúr
válasz s1999xx #1869 üzenetére
nézz meg pl. egy robot frameworköt. ez egy python alapú framework, tesztautomatizálásra használják. azaz emberek arra használják, hogy egy programot írjanak benne, ezzel tesztelik azt a programot, amit le akarnak tesztelni. azaz abból a pszeudókódból, amit a felhasználó begépel, python programot kell csinálni.
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.
-
Siriusb
veterán
pyGTK TreeView-ban valaki otthon van?
Szerintem már nem látom a fától az erdőt, kellene egy kis lökés.Amennyiben nem csak egy kifejezett oszlopot, hanem mondjuk ötöt teszek szerkeszthetővé egyszerre (mintha egy excel táblában lennénk), akkor miként tárolom el a megváltoztatott értéket a modelben (ListStore)?
Tehát meg van jelenítve a táblázat, s a Szerkesztés gomb meghívja a következőt:
def edit_selected(self, widget):
if self._select.get_selected()[1] is None: #treeiter is None
self._tree.set_cursor(Gtk.TreePath(0), self._tree.get_columns()[0], True)
for k,renderer in self._renderers.items(): # All renderers of the columns
renderer.set_property("editable", True)
renderer.connect("edited", self.text_edited)
És ezután hogyan tároljam el az új értéket (new_text) ?:
def text_edited(self, widget, path, new_text):
pass
-
kovisoft
őstag
válasz s1999xx #1869 üzenetére
Nem azt mondom, hogy eval-t kell használni unit teszthez, csak annyit, hogy láttam már olyat, ahol használják. Pl. ha nem elég az, amit a standard assert biztosít, ezért egy saját assert változatot akar csinálni az ember, akkor annak a belsejében a saját assertnek átadott kifejezések kiértékeléséhez kellhet az eval. Ami hirtelen eszembe jut: ha olyan függvényeket tesztelek, amik maguk is AssertionError-t dobnak, és meg akarom különböztetni ezt a unit teszt AssertionError-jától.
-
nagyúr
válasz s1999xx #1866 üzenetére
pl. van egy python frameworköd, amiben emberek írnak futtatható scripteket. valahogy át kell fordítanod az inputjaikat kóddá.
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.
-
-
Siriusb
veterán
válasz kovisoft #1861 üzenetére
Igazad van!
viszont a doksiban rosszul van a példa, én meg leragadtam annál, mert logikusnak tűnt a szintaktika.
import sqlite3
import datetime
con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
cur = con.cursor()
cur.execute("create table test(d date, ts timestamp)")
today = datetime.date.today()
now = datetime.datetime.now()
cur.execute("insert into test(d, ts) values (?, ?)", (today, now))
cur.execute("select d, ts from test")
row = cur.fetchone()
print(today, "=>", row[0], type(row[0]))
print(now, "=>", row[1], type(row[1]))
cur.execute('select current_date as "d [date]", current_timestamp as "ts [timestamp]"')
row = cur.fetchone()
print("current_date", row[0], type(row[0]))
print("current_timestamp", row[1], type(row[1]))
Nézd már meg légyszíves, ebben a mintapéldában tényleg fordítva van megadva (és mégis működik), vagy én nézek félre valamit (ami könnyen megeshet ) ?
-
Siriusb
veterán
válasz sztanozs #1858 üzenetére
Persze, hogy nincs benne datum nevű oszlop, mert az csak alias, a valódi oszlop dateofrecording névre hallgat..
A problémám lényege az volt, hogy az alias csak "current_date" név lehet (hiába találtam ki a "datum" fantázianevet), ugye ez hivatkozik a valódi, a táblában megtalálható "dateofrecording" nevű oszlopra a konverter szintaktikájában:
datum AS "dateofrecording [date]"
alias AS "oszlopnév [adattípus]"
azaz a konverter megkapja a mező nevét a táblából "dateofrecording", valamint hogy milyen típusra konvertálja a tartalmát a lekérdezéskor: [date], de a hivatkozási név nem lehet "datum" vagy bármi más, csak és kizárólag a "current_date" név megadásával hajlandó működni a konverter.
Ez nem olyan nagy baj, csak lenne leírva.
Mert ebből nem derült ki számomra:sqlite3.PARSE_COLNAMES
This constant is meant to be used with the detect_types parameter of the connect() function.
Setting this makes the SQLite interface parse the column name for each column it returns. It will look for a string formed [mytype] in there, and then decide that ‘mytype’ is the type of the column. It will try to find an entry of ‘mytype’ in the converters dictionary and then use the converter function found there to return the value. The column name found in Cursor.description is only the first word of the column name, i. e. if you use something like 'as "x [datetime]"' in your SQL, then we will parse out everything until the first blank for the column name: the column name would simply be “x”. -
sztanozs
veterán
válasz Siriusb #1856 üzenetére
Gondolom mivel a meter táblázatodban nincs datum nevű oszlop, így azt nem is találja meg.
hogy néz ki meter nevű táblázat (hogy jött létre az a tábla)?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...
-
Siriusb
veterán
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ, mit szívtam.
Sqltite3 date converter-t akarom használni. Beírom:
'SELECT datum AS "dateofrecording [date]" FROM meter'
erre hibával elszáll: sqlite3.OperationalError: no such column: blablaPython doksiban van egy példakód, végén kínomban már lementettem és lefuttattam, simán ment. Még jobban nem értettem, mi a baj.
Végső próbálkozásként átírtam a virtuális oszlopnevet (datum) a példában szereplő current_date-re, és így működik. Ha agyonütnek sem jövök rá erre...
-
Siriusb
veterán
válasz AeSDé Team #1853 üzenetére
Részemről most vettem fel ismét a python fonalat pár évvel ezelőttről, úgyhogy rengeteget bújom a doksikat, különösen a GTK3-t, mert most grafikus felületet is készítek.
Úgy vettem ki a szavaidból, nem mélyedtél még el különösebben a python-ban, ha a modulok importálása sem tiszta. Esetleg itt érdemes kezdeni: https://docs.python.org/3/tutorial/modules.html
Egy példa: ha regex-et akarsz használni, beimportálod a modult, és a modul nevével tudod meghívni az adott eljárásokat:
import re
nezd_mit_talaltam = re.search("^eztkeresem", ebben_keresem)
Így konkrétan tudsz hivatkozni a modulban található kódra, nincs összeakadás, ha más modul is használná ugyanazokat az elnevezéseket.Pl. amit most írtam, abban így néz ki az import:
import pdftotext
import re
import os
from email import generator
from email.message import EmailMessage
from email.headerregistry import Address
import mimetypes
Így szépen használni a prefix-eket, és jobban olvasható:
cwd = os.getcwd()
vagy
flags=re.IGNORECASE
Azt is el kéne dönteni, milyen GUI-t akarsz használni. Nem mindegy, mert esetleg egy tkinter-ben neked kell lekódolnod olyan dolgokat, amiket egy komplexebb felülettel készen kapsz, ami ráadásul még jól integrálódik a környezetbe.
-
AeSDé Team
őstag
Sziasztok!
Készítenem kell egy Python alkalmazást Linux platformra, amely röviden a következő koncepciókat foglalja majd magában:
- több panelből álló grafikus interfész
- eseményvezérelt logika, mely mind az interfész, mind pedig soros-porton érkező bemenetekre képes reagálni
- több felhasználó munkájának asszinkron követéseValaki tud olyan kurzust, oldalt, irodalmat ajánlani, ahol arról regélnek, hogy hogyan lehet jól strukturáltan létrehozni egy ilyen komplexitású, grafikus interfészt is tartalmazó projektet?
Nem egészen tiszta számomra, hogy hogyan is kellene megvalósítanom Pythonban egy MVC dizájnt, hogyan szeparálom a kódomat több fájlba az importok teljes összekavarodása nélkül, és hogyan fogom a GUI-tól független szálon csekkolgatni az egyéb folyamatokat.Nem új számomra a koncepció, írtam már Java-ban, C#-ban hasonlóan bonyolult grafikus alkalmazást, viszont szükségem lenne egy kis útmutatásra hogy hogyan valósíthatom meg ezt a dizájnt Python-ban.
-
Csak nem tudja mijaza BeautifulSoup4 és python-hoz se konyít, merthogy akkor megcsinálta volna magának. Tippem szerint frissült az oldal, és a régi program már nem tud vele mit kezdeni. Abban kér segítséget, hogy - akitöl a kód nem szivárog ki - segítsen az új oldalhoz hozzáfaragni a régi programot.
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
-
Neoteric
addikt
Hali
Szükségem lenne egy hozzáértő emberre, aki otthon van pythonban. Van egy kapott kódom ami működött ~másfél éve, és most életre szeretném kelteni: debugolni illetve aktualizálni kéne. Dióhéjban arról van szó, hogy egy előfizetéses online aukciós adatbázisból szeretnék több ezer oldalt megnyitni és az oldalakon szereplő meghatározott elemeket lementeni egy CSV fájlba, hogy aztán fel tudjam őket dolgozni. Mivel ez egy nyilvános fórum és bárki látja, nem szívesen rakom ki ide a kódot, aki tudna segíteni légyszi privátban jelezze.
PSN: ne0teric_sAN
-
maser
tag
válasz pigster #1803 üzenetére
Mint ahogy már feljebb is írták:
tmp =str(self.kartyak[0:1])
Ez egy 1 elemű tömböt hoz létre, és nem csak egy elemet ad vissza.Amikor pedig egy tömböt sztringgé alakítasz, akkor a tömb elemeit próbálja reprezentálni.
Ilyenkor az objektum__repr__
függvényét hívja meg.Írd felül a
__repr__
függvényt, és akkor menni fog!Foredene @ Ragnaros | maser#2802
-
Vesporigo
aktív tag
KEAN és axioma: nagyon köszönöm mindkettőtöknek a segítséget!
Közben találtam megoldást egy stackoverflow bejegyzésben, a mylist sorom után még ezt írtam be:
tags = soup('span')
for tag in tags:
print(tag.text)Így már kilistázta csak a számokat.
Azt hiszem, kicsit beleásom magam a BeautifulSoup-ba, mert ez még nekem picit magas, az oktatóanyag sem volt túl egyértelmű.Még1x köszönöm!
[ Szerkesztve ]
-
KEAN
tag
válasz Vesporigo #1843 üzenetére
Hali, több megoldás is lehetséges:
Reguláris kifejezéssel:re.sub("[0-9]", '', "Carys21")
... vagy akár így is.''.join([i for i in "Carys21" if not i.isdigit()])
for
ciklus természetesen kell mindkettő köré.Mondjuk ez esetben a reguláris kifejezésnél talán először célszerűbb re.compile()-lal "beforgatni" a kifejezést.
[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
Vesporigo
aktív tag
Egy kis segítséget szeretnék kérni. Python3 alatt szeretnék kinyerni pár adatot egy oldalról BeautifulSoup használatával.
import requests
from bs4 import BeautifulSoup
page = requests.get("http://py4e-data.dr-chuck.net/comments_42.html")
soup = BeautifulSoup(page.content, "html.parser")
html = list(soup.children)[0]
body = list(html.children)[3]
p = list(body.children)[3]
mylist = p.get_text()
print(mylist)Valami hasonló felsorolást kapok eredményül (str a típus):
...
Carys21
Skye19
Atiya18
Rohan18
Nuala4
Maram1
...Itt lenne szükségem némi útmutatásra ahhoz, hogyan szedjem ki a listából a számokat. Próbáltam for ciklussal + reguláris kifejezésekkel, de utóbbi még nagyon nem megy, meg azért bízom benne, hogy van más megoldás is. Azért gondoltam a reguláris kifejezésekre, mert változó hosszúságú számok vannak a szavak végén, így egy egyszerű slice-ot nem tartom célravezetőnek, bár lehet, hogy ebben is tévedek. Ha tudnátok benne segíteni, azt nagyon megköszönném.
-
Janos46
tag
Még valami, talán ez is segítség lehet (bocsi ha ismerős).
Látom a hozzászólásoknál, hogy akár kezdő, akár nem, gondok néha akadnak. Találtam egy jó kis oldalt, ami
akár segítség is lehet.
Python 3 a hét modulja
A PyMOTW-3 egy olyan cikksorozat, amelyet Doug Hellmann írt, hogy bemutassa, hogyan kell használni a Python 3 standard könyvtár moduljait . Az eredeti PyMOTW sorozaton alapul, amely a 2.7. A Python modulról a Python-ról és a használt eszközökről bővebben lásd a Python modul .
https://pymotw.com/3/
Üdv. JánosArtillery, lelkes újonc vagyok, tanulni akarok!
-
Janos46
tag
Sziasztok!
Jobbára csak kezdőknek szólok. de bárki másnak is. Vettem egy Raspberry Pi Starter Kit V2-őt, amihez adtak egy CD-t is. A CD tartalmaz a készlet használatához 21 leckét is, amit ha nincs készleted akkor is jól lehet használni tanulás képen. Ha valakit érdekel, akkor akár az egész CD tartalmát (iso), vagy csak a leckéket el tudom küldeni. Ha valakinek van hasonló CD-je, szívesen venném, ha megosztaná velem. Ha még ismeretlen lenne, akkor a kezdőknek van egy nagyon jó oktató oldal:
https://projects.raspberrypi.org/en/Ez pedig a CD tartalma.
1. rész: A készletről
Kit leírás
Kit csomagolási lista2. rész: Oktatási leckék
1. lecke: Kezdje a Raspberry Pi-t
2. lecke: A Raspberry Pi GPIO bemutatása
3. lecke: Készítse elő a GPIO Tool-WiringPi segédprogramot
4. lecke: Python Light LED
5. lecke: Áramló LED
6. lecke: Légzés LED
7. lecke: Raspberry Pi Button Control LED
8. lecke: Raspberry Pi Drive aktív hangjelző
9. lecke: Relé vezérlése LED-re
10. lecke: Raspberry Pi SPI portok
11. lecke: Raspberry Pi A LED fényerejének vezérlése
12. lecke: Raspberry Pi Drive SG90 Servo
13. lecke: I2C 1602 LCD
14. lecke: SW520D billenőkapcsoló Raspberry Pi-vel
15. lecke: Raspberry Pi, Potenciométer és LCD
16. lecke: Raspberry Pi és PIR mozgásérzékelő
17. lecke: A Raspberry Pi DHT11 hőmérséklet és páratartalom modullal működik
18. lecke: BMP180 digitális nyomásérzékelő a Raspberry Pi-val
19. lecke: IR távirányító a Raspberry Pi-val
20. lecke: Használja a Raspberry Pi + IR távirányítót más eszközök vezérléséhez
21. lecke: Az IOT otthoni riasztórendszer készítése Pi-velÜdv. János.
Artillery, lelkes újonc vagyok, tanulni akarok!
-
EQMontoya
veterán
válasz kovisoft #1837 üzenetére
Amit erdemes tudni ezzel kapcsolatban, hogy a dict mutable, tehat itt nem egy masolatot adsz at belole, hanem egy referenciat az eredetire. Azaz a fuggvenyen beluli modositas latszani fog ott is, ahonnan hivtad.
Nyilvan ez McSzaby-nak szol elsosorban.
Same rules apply!
-
kovisoft
őstag
válasz McSzaby #1836 üzenetére
Nem biztos, hogy értem a problémát. Mi a gond azzal, hogy szimplán átadod paraméterként? Példa:
def myfunc1(d):
print(repr(d))
def myfunc2(d):
myfunc1(d)
d['a']=3
myfunc1(d)
mydict={}
mydict['a']=1
mydict['b']=2
myfunc2(mydict)output:
{'a': 1, 'b': 2}
{'a': 3, 'b': 2}[ Szerkesztve ]
-
KEAN
tag
válasz EQMontoya #1834 üzenetére
Persze-persze, tudom. Azonban itt a items és a new_items is lista. (az items lehet tuple is) Csak azt akartam megmutatni, hogy a locals() használatával lehet egy kicsit "trükközni" és az eredeti elképzelés mentén is megvalósítható a dolog.
Bármilyen valós helyzetben én sem javasolnám a megoldásomat.
Ráadásul előttem már leírták az egyik helyes megoldást.[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
EQMontoya
veterán
Azert ezt elegansabban map fuggveny vagy list comprehension hasznalataval szoktak megoldani, illetve typecheck-re isinstance inkabb, hogy oroklodes eseten ne szopassuk be magunkat. Pl. a bool az intbol szarmazik. Szoval valahogy igy:
new_items = [x if isinstance(x, int) else 0 for x in items]
[ Szerkesztve ]
Same rules apply!
-
KEAN
tag
válasz McSzaby #1831 üzenetére
Listánál nem változik a sorrend.
Amúgy az eredeti elképzelésed is megvalósítható így:
test='str'
test1=0
for i in ('test', 'test1'):
if type(locals()[i]) != int:
locals()[i] = 0... de ez olyan szinte favágó megoldás, hogy tekintsd inkább úgy, hogy le se írtam.
"Persze, hogy tudtam, csak nem sejtettem!"
-
McSzaby
őstag
válasz kovisoft #1830 üzenetére
Gondolkoztam a te megoldásodon is, de ebben az esetben nem tudom, hogy a sorrend megmarad-e pythonban. Dict-nél tudtommal nem kőbevésett a kulcsok sorrendje. Listánál nem változhat a sorrend? Mert akkor berakom listába, átnézem, kiveszem listából, berakom változókba, ez működhet, de elég overkillnek tűnik.
>>> for x in range(2):
if type(a[x]) != int:
a[x] = 0
>>> print (a)
[0, 1]#ThankYouSirAlex #ThankYouLouis
-
McSzaby
őstag
hali,
újacska vagyko pythonban.
test="str"
test1=1
for i in (test, test1):
if type(i) != int :
i = 0Azt akarom elérni, hogy ha a változó string, akkor csak rakjon be int 0-t helyette. Ezt hogy tudom megoldani pythonban? A linkelt for ciklusban nem a változó nevét hozza magával, hanem csak az értékét, így csak az "i" értéke fog változni. Tuti én vagyok a béna, de segítsetek, plsl
[ Szerkesztve ]
#ThankYouSirAlex #ThankYouLouis
-
cousin333
addikt
válasz pigster #1824 üzenetére
"There's been a number of complaints about the choice of the name 'decorator' for this feature. The major one is that the name is not consistent with its use in the GoF book [11]. The name 'decorator' probably owes more to its use in the compiler area -- a syntax tree is walked and annotated. It's quite possible that a better name may turn up." [link]
Ilyen az élet...
[ Szerkesztve ]
"We spared no expense"
-
pigster
senior tag
-
cousin333
addikt
válasz pigster #1822 üzenetére
Alapvetően jól látod.
"A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag)"
Nem egészen. A
@decorator_func
az tudtommal afunc_needs_decorator = decorator_func(func_needs_decorator)
sorral egyenértékű, tehát nem véletlen, hogy "felülírja" az eredeti függvényedet (legalábbis az aktuális alkalmazásban), de ez az írásmód eleve csak egy "syntactic sugar" a fent említett lépésre. Különösen akkor jön jól, ha mondjuk több dekorátort is használni kéne egyszerre.A dekorátorokról, működésükről, használatukról itt van egy alapos cikk: [link]. Azért linkeltem, mert a hozzászólások között konkrétan felteszik ugyanazt a kérdést, amit te. A választ idézve:
"The whole point of decorators is to modify the behavior of the function through a wrapper so we don't have to actually modify the function. The function is not permanently modified; the behavior changes only when it's decorated."
Gyakorlatilag egy mások által készített függvényt ki tudsz egészíteni anélkül, hogy hozzá kéne nyúlnod. Vagy az alap függvényedet általánosabban írhatod meg, és az aktuális felhasználás során dekorátorokkal specifikálhatod. Mindezt egy átlátható szintaxissal. Ha meg mindkettő funkcionalitására szükséged van, még mindig ott az első módszer.
[ Szerkesztve ]
"We spared no expense"
-
pigster
senior tag
Újabb kérdésem lenne decorator témakörben:
def func_needs_decorator():
print("I want to be decorated!")
def decorator_func(original_func):
def wrap_func():
print('Code before')
original_func()
print('Code after')
return wrap_func
decorated_func = decorator_func(func_needs_decorator)
decorated_func()Eredménye:
Code before
I want to be decorated!
Code after
Ez tiszta sor.A @decorator_func a decorated_func = decorator_func(func_needs_decorator) -val egyenértékű (állítólag). De mégsem:
@decorator_func
def func_needs_decorator_2():
print('Want to be decorated twooo!')
func_needs_decorator_2()Ha a @-cal használom, akkor az eredeti def már nem lesz elérhető, csak a dekorált. Ez pont szembemegy azzal, amire jó lenne az egész, hogy bizonyos körülmények között az eredeti függvényt használom, máskor pedig a dekorátorral módosítottat. Ez pont csak akkor lehetséges, ha nem a @ megoldást választom, hanem ezt: decorated_func = decorator_func(func_needs_decorator)
Vagy rosszul látok valamit?
[ Szerkesztve ]
-
kovisoft
őstag
válasz pigster #1819 üzenetére
Igen, az x objektum stringgé konvertálásakor (pl. str(x), print("%s" % x), stb) az __str__ metódus hívódik meg, ezt kell felülírnod, ha saját olvasható formázást akarsz. Ha az __str__ nincs definiálva, akkor a __repr__ hívódik meg. Ha ez sincs definiálva, akkor is van egy alapértelmezett reprezentáció, amit már te is láttál ebben a példádban:
<kartya.Kartya object at 0x000002AE6652D860>
-
cousin333
addikt
válasz pigster #1814 üzenetére
Ezzel már én is megjártam, és szerintem is jobb lenne, ha így működne, de a Zen of Python szerint:
"Explicit is better than implicit."
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz kovisoft #1811 üzenetére
A történelmi hűség kedvéért: ennek a hivatalos neve generator expression.
mod: Nézem a PEP dátumát: nem is tudtam, hogy ez ilyen régi feature.
[ Szerkesztve ]
"We spared no expense"
-
pigster
senior tag
Köszi a gyors válaszokat.
Túl pythonos módon akartam megoldani. A [0] megoldással működik.
Ugyanakkor a join nem azt csinálná, hogy a paraméterként megadott listán végigmegy, veszi az egyes elemeket (ezek már nem lista-részek, hanem külön-külön elemek) és azokat összefűzi? Ekkor nem kellene a __str__ metódusnak működésbe lépnie minden egyes elemen, mivel egy sztringre lenne "igény" az egyes elemek esetében? -
KEAN
tag
... meg pl az str() függvényél is... a lényeg, hogy az előző hozzászólásom egy jó része félrevezető lett sajnos (és szerkeszteni már nem tudok)
Csak a "slicing"-ról szóló részt vedd figyelembe.
Ahogyan azt a fórumtárs is írta előttem.[ Szerkesztve ]
"Persze, hogy tudtam, csak nem sejtettem!"
-
KEAN
tag
válasz pigster #1803 üzenetére
Szia!
Ez az __str__ függvény többek közt akkor hívódik, amikor a print utasítással (vagy függvénnyel, ha python3.x-ről beszélünk) "hajtod" meg a dolgokat. Tehát a
print self.kartyak[0]
működne a dolog.
A másik, hogy mindenhol a "slicingot", [0:1] használod, ami egy listát ad vissza, nem pedig magát az objektumot.
Ha mindenképpen szükséged van valami hasonló funkcionalitásra, ami "print nélkül" is visszaadja a "string értéket", akkor írj valami get_string_value() függvényt, ami pont azt csinálja, mint az __str__ és hívd azt amikor szükség van rá."Persze, hogy tudtam, csak nem sejtettem!"
-
kovisoft
őstag
válasz pigster #1803 üzenetére
Ha a kartyak tömb 0. elemére akarsz hivatkozni, akkor így hivatkozz rá: kartyak[0], mert ha kartyak[0:1] -et írsz, akkor ez nem egy elem, hanem egy rész-tömb lesz, ami csak a 0. elemet tartalmazza. Ez látszik is abból, hogy ha kiíratod, akkor szögletes zárójelek közé teszi.
-
pigster
senior tag
Sziasztok!
Kezdek ismerkedni a Pythonnal, de folyton gondom van a __str__ metódussal.
Egy Black Jack programot készítek.
Van egyclass Kartya():
ezen belül
pedig:def __str__(self):
return str(self.szin.capitalize() + ' ' + self.figura.capitalize())
Jól gondolom, hogy ennek az lenne az értelme, hogy ha sztringként akarom kezelni, pl. egy print utasításban, akkor ezt adja vissza?A gondom a következő:
Létezik egy pakli is, meg egy játékos osztály is. Van pl. egy kartyak lista
Hiába akarnám kiíratni ennek csak egyetlen elemét, ami ugye egy Kartya objektum, és annak pedig van egy __str__ metódusa pont ilyen esetekre:tmp =str(self.kartyak[0:1])
Akárhogy is próbálkkozok vagy kiíírja:[<kartya.Kartya object at 0x000002AE6652D860>]
vagy hibát ír:tmp = ''.join(self.kartyak[0:1])
TypeError: sequence item 0: expected str instance, Kartya found
Mit kellene csinálni, hogy jó legyen?
-
sh4d0w
félisten
válasz t72killer #1801 üzenetére
Lehet, hogy jó pontként szolgál a CV-dben, de úgyis azt fogják tudakolni, mit tudsz valósan. A Humblebundle-ön most van olcsó könyvcsomag, mind python mindenféle témakörben. Ha pedig most kezdenéd tanulni, irány a Coursea Programming for everyone kurzusa.
https://www.coreinfinity.tech
-
t72killer
titán
ha az ember munkát szeretne vállalni, ahol a python is követelmény, egy ilyen papírnak tulajdonítanak jelentőséget? pl akkor, ha az ember alapból nem infós/progmatos, hanem "kétkezi" mérnök.
30€ Meta store bónusz Quest headset aktiváláshoz, keress priviben :)
Új hozzászólás Aktív témák
- Autós topik
- Amlogic S905, S912 processzoros készülékek
- Autós topik látogatók beszélgetős, offolós topikja
- Kerékpárosok, bringások ide!
- Mibe tegyem a megtakarításaimat?
- Asszociációs játék. :)
- TCL LCD és LED TV-k
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Világ Ninjái és Kódfejtői, egyesüljetek!
- További aktív témák...
- PS5 Lemezes 825GB - használt -
- GAMER félgép - GIGABYTE B760M H DDR4 + Intel I5 13400F + Corsair VENGEANCE LPX 2x16GB DDR4 3200MHz
- AMD Ryzen 5 5600 BOX - Új, 3 év garancia - Eladó! 40.000.-
- 2 TB 2280 M.2 PCI-E NVME SSD BAZÁR - Samsung, SK Hynix, Kioxia, WD, Micron -
- "Billentyűzet hibás" Dell Latitude 7390 laptop (13FHD/I5-G8/4GB/128SSD/MagyarVilágítós/Win11)
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Axon Labs Kft.
Város: Budapest