Új hozzászólás Aktív témák
-
-
EQMontoya
veterán
válasz
Orionhilles
#1196
üzenetére
Nem kell a "== True", csak zavar az éterben.
De a fő probléma az, hogy ha itt lemész az 5.15 (operator precedence) részhez:
Operator Description
lambda Lambda expression
if – else Conditional expression
or Boolean OR
and Boolean AND
not x Boolean NOT
in, not in, is, is not, <, <=, >, >=, <>, !=, == Comparisons, including membership tests and identity tests
| Bitwise OR
^ Bitwise XOR
& Bitwise AND
<<, >> Shifts
+, - Addition and subtractionAkkor látszik, hogy a relációsjel precedenciája nagyobb az összeadásénál.
Tehát ez fog történni a kódodban:
(a<b)+c == True.
Namost ez egy oltári baromság, de nézzük, hogy mit csinál:
(a<b) -> True
True + c -> bool + int, a bool konvertálódik intté, tehát c+1 a végeredmény.
c+1 == True -> nem, az előző miatt C nagyobb, mint 1. -
cadtamas
tag
válasz
Orionhilles
#1195
üzenetére
Próbáld így:
if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
elif a<b+c and b<a+c and c<a+b:
print ("This is a triangle.")
else:
print ("This is NOT a triangle.") -
válasz
Orionhilles
#1195
üzenetére
if a<b+c == True and b<a+c == True and c<a+b == True:
if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
print ("This is a triangle.")
else:
print ("This is NOT even a triangle.")Na ez már egymása ágyazott utasításokkal készült, mégse jó.

-
Sziasztok!
Elkezdtem szépen lassan Pythont tanulni, és úgy voltam vele, hogy akkor neki is állok írni valami apróbb dolgot magamtól. Egy programocskát, ami kiírja 3 változó megadása után, hogy:
a, derékszögű háromszög vagy
b, háromszög vagy
c, nem háromszögA három eshetőségből az a, működik, a b, és c, már nem. Hol rontottam el?
if (c**2) == (a**2 + b**2):
print ("This is a Pythagorean triangle.")
elif a<b+c == True and b<a+c == True and c<a+b == True:
print ("This is a triangle.")
else:
print ("This is NOT a triangle.")Válaszotokat előre is köszönöm!

Még régebben írtam a topikba, amikor még konkrétan semmit se tudtam, akkor is segítettek, és útmutatást adtatok, azért is nagy köszönet!

-
zeix
senior tag
válasz
cousin333
#1192
üzenetére
Köszi a választ!
A sendall kb. 5-10 lekérdezésig működik.
A write-ot is próbáltam, ugyanaz mint a sendall, az is elszáll 5-10 lekérdezés után.
A micropython fórumban sem jött még válasz. Szerintem csak 1074byte-ot tud küldeni stabilan.
Az unokahúgomnak szeretnék gyártani egy okoslámpát, neopixel rgb ledekből.
Ahhoz kevés lesz az 1074byte. Vagy több részre tagolom a html-t, funkciónként. (szín, animáció, mozgás érzékelés, beállítások, stb.) A python meg majd eldönti, hogy éppen mit küldjön a telójára. (ami belefér 1kB-ba
) -
cousin333
addikt
válasz
cadtamas
#1189
üzenetére
Gondoltam, hogy nincs korábbi munka, azért furcsállottam, hogy két környezetet használsz (gondolom az egyik 2.7, a másik 3.x).
A PyCharm-ban a projekt beállításainál ki tudod választani az interpretert. De ha rám hallgatsz, törlöd a "normál" Pythont és meghagyod az Anacondát.
Már írtam párszor: a Gerard Swinnen könyv jó és magyar de elég régi. Ha megy az angol, inkább olyan könyvet keress.
-
zeix
senior tag
Én is szeretnék egy kis segítséget kérni. Nekem is új a python, a php-t jobban ismerem.
Ez pontosan micropython, amit mikrokontrollerekhez fejlesztettek (alakítottak), de sok dologban egyezik a pythonnal. A problémám egy szimpla webserver:import time
from machine import Pin
import usocket as socket
import network
sta_if = network.WLAN(network.STA_IF)
while not sta_if.isconnected():
print ('csatlakozás')
time.sleep(1)
ipadress = sta_if.ifconfig()
ipcim = tuple(ipadress)
print (ipcim[0])
html = """<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
button {
background-color: #555555;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
margin: 4px 2px;
cursor: pointer;
}
</style>
</head>
<BODY>
<form>
<input type="hidden" name="kapcsolas" value="szimpla">
<table width="100%">
<tr>
<td>LED RED</td>
<td><button name="relay" value="01-1" type="submit">BE</button></td>
<td><button name="relay" value="01-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="02-1" type="submit">BE</button></td>
<td><button name="relay" value="02-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="03-1" type="submit">BE</button></td>
<td><button name="relay" value="03-0" type="submit">KI</button></td>
</tr>
<tr>
<td>LED RED</td>
<td><button name="relay" value="04-1" type="submit">BE</button></td>
<td><button name="relay" value="04-0" type="submit">KI</button></td>
</tr>
<table>
</form>
<form>
<input type="hidden" name="kapcsolas" value="1multi1">
<table width="100%">
<tr>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">MINDEN BE</button></td>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">LÁMPÁK BE</button></td>
</tr>
<tr>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">LÁMPÁK KI</button></td>
<td align="CENTER"><button name="relay" value="1111000000000000" type="submit">MINDEN KI</button></td>
</tr>
<table>
</form>
</BODY>
</html>
"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
conn, addr = s.accept()
request = conn.recv(1024)
request = str(request)
kapcsolas = request[18:25]
print (request[32:36])
relay = request[32:36]
response = html
conn.sendall(response) #a probléma itt van!!!!
conn.close()
usocket modul leírása
A conn.sendall(response) parancs random elszáll egy szép hibakóddal: OSError: [Errno 104] ECONNRESETHa a sima conn.send(response) parancsot használom, akkor nem küldi el az összes adatot max. kb 1074Byte-ot.
Ez, ha jól értelmezem le is van írva, hogy a send parancs nem küldi el az összes adatot (“short write”).
Cselesen több részre tagoltam a html kódot és így próbáltam több send paranccsal küldeni, de így ugyanaz a
hibakód fogad véletlen számú lekérdezések után: OSError: [Errno 104] ECONNRESETÍrtam már a micropython fórumba is, de nem érkezett segítőkész válasz eddig.
Remélem Ti tudtok segíteni!
-
zeix
senior tag
-
cadtamas
tag
válasz
cousin333
#1188
üzenetére
Áh, nekem nincsenek "régebbi" munkáim.

Új gyerek vagyok. A pythont gondoltam beugrónak a programozás világába.
A Gerard Swinnen könyvből tanulok lassan egy éve. Elég cammogósan, mert amit nem értek, annak többször is nekifutok. Párhuzamosan meg megcsináltam egy udemy-os kurzust. (ehhez kellett az anaconda)
Most járok a webprogramozós résznél, de a könyv szerintem annyira nem naprakész ebben a témában, hogy inkább elkezdtem egy djangos kurzust.Pycharm-ot használok és az meg úgy vettem észre, hogy nem az anacondát használja, hanem a sima pythont interpreternek.
Hogy jó alaposan tökönrúgjam magam elhatároztam, hogy belevágok egy golang kurzusba is.
Tegnap este elszöszöltem másfél órát, hogy megfelelő ide-t találjak a golanghoz.
Még mindig nem találtam.
-
cousin333
addikt
válasz
cadtamas
#1187
üzenetére
Nem, a pip egy külön csomagkezelő modul, ami eleve része az Anaconda telepítésnek...

Igazából az a kérdés, hogy miért használsz 2 különböző környezetet. Ha pedig mégis kell, akkor az Anaconda támogatja ezek létrehozását. Ráadásul a csomagkezelője (conda) a Pythont is csomagként kezeli, ezért lehetőséged van arra is, hogy egyidejűleg használj egy 64-bites Python 3.6-t a legfrissebb csomagokkal az újabb munkáidhoz és mondjuk egy 32 bites 2.7-et adott verziójú csomagokkal a régebbi kódjaidhoz.
-
KEAN
tag
Nézd meg, hogy a PATH környezeti változóban melyik python van előrébb, szerintem oda telepíti, ha nem a standard, akkor mozgasd előre és próbáld meg újratelepíteni a django-t. (Persze ezt most csak gyorsan tippeltem, nem 100%-hogy tényleg a PATH alapján találja, ki, hogy hová telepítsen.)
Illetve, szerintem kezd el használni a Virtual Environments nevű csodát. A mostani problémádat nem feltétlenül oldja meg, de a jövőben segít elkerülni őket. Link: [http://docs.python-guide.org/en/latest/dev/virtualenvs/]
( Elsőre én se értettem, hogy ez miért jó, ma meg már kis túlzással nem bírnék meglenni nélküle és baromi egyszerű a használata.
) -
cadtamas
tag
Tudnátok abban segíteni, hogy szeretném telepíteni a djangot, de korábban telepítettem egy udemy-os kurzushoz egy másik pythont (anaconda, a jupyter notebookhoz kell) és most amikor a pip-el telepítem a djangot szerintem az anacondához telepíti, mert nem találom a python mappájában.
Van rá mód (az anaconda törlése nélkül), hogy ismét a megfelelő helyre települjenek a modulok? -
aki már kínlódott ssh/scp/sftp és társaival:
a feladat egy gatewayen keresztül betalálni egy remote gépre (valami solaris dinoszaurusz), és onnan illetve oda fileokat elvinni/odatenni.
mivel paramikoval úgyis megcsináljuk a transportot, adná magát az sftp class, deviszont a remote gépen át kell sudozni egy másik (technikai) userre (nopasswordos, de akkor is), és utána lehet csak hozzáférni a szóbanforgó fileokhoz. sajnos a sudoval egyszerre nem lehet más parancsot kiadni (csak a keyloggert (rootsh) hajlandó indítani), ezért azexec_commandkiesett (kiadom a sudót, beveszi, de zárja is a transportot), ezért azinvoke_shell-el kínlódok. van jobb megoldás?
mert így a saját userrel felloggolok a remote gépre, de így csak ezt tudom használni, mert a technikai user jelszavát az üzemeltetés nem adja ki. viszont az paramiko sftp nem támogat sudózást.
nézem az scp modult, de sudót az sem szeret.
ötlet?
nem igazán akarok workaroundokat (direkt bejelentkezéses useren keresztül, cat-tel fileokat létrehozni, cvs repón keresztül szinkronizálni, stb.) hackelni, ha van egyenes út is. -
cousin333
addikt
válasz
kezdosql
#1178
üzenetére
A list comprehension-re találtam egy jónak tűnő fordítást: listaképző
Ez a funkció tulajdonképpen egy tipikus for ciklus alkalmazásnak a tömörebb megfogalmazására szolgál: amikor egy meglévő listán (pontosabban iterálható elemen) kell végigmenni, hogy elemről-elemre haladva az egyes elemeken végrehajtott műveletek segítségével egy új listát hozzunk létre.
Például ha minden elemhez hozzá akarunk adni 2-t, és ebből lesz az y.
x = [1, 2, 3, 4, 5]
y = []
for elem in x:
y.append(elem+2)Ezt leegyszerűsíthetjük egy (két) sorra, így nincs a felesleges értékadás az elején és nem kell egyesével hozzáadogatni az új elemeket sem.
x = [1, 2, 3, 4, 5]
y = [elem + 2 for elem in x]Ráadásul lehet megadni feltételt is, mindezt szintén egy sorban:
x = [1, 2, 3, 4, 5]
y = [elem+2 for elem in x if elem % 2 == 0]Ennek a "hagyományos" megfelelője:
x = [1, 2, 3, 4, 5]
y = []
for elem in x:
if elem % 2 == 0:
y.append(elem+2)Az első esetekben az eredményül kapott y hossza megegyezik az x-ével, az utóbbinál meg rövidebb, vagy egyenlő.
-
KEAN
tag
válasz
EQMontoya
#1176
üzenetére
Sziasztok!
"shortcut operators: rövidzárnak hívjuk magyarul. A logikai és (Pythonban: "and") és a logikai vagy (Pythonban: "or") úgy működnek, hogy ha az első kifejezés értékéből egyértelműen következik az eredmény, akkor nem értékeli ki a másikat."
Szerintem, ez inkább a short-circuit "definíciója".
A shortcut (rövidítés) a +=, -=, /=, stb. akar lenni.
Például: sum = sum + 5 rövidíthető így: sum += 5 -
EQMontoya
veterán
válasz
kezdosql
#1175
üzenetére
Trollkodtam alapvetően, ahhoz képest egész jó.

argument: argumentum, amit a paranccsorban átadunk. Pl. ilyen szokott lenni: --file joska.txt --force
prompt: parancssor.
sequence unpacking: egy szekvenciát tömörítesz ki, tehát egy változó segítségével végigiterálsz valamit, ami több elemet tartalmaz.
shortcut operators: rövidzárnak hívjuk magyarul. A logikai és (Pythonban: "and") és a logikai vagy (Pythonban: "or") úgy működnek, hogy ha az első kifejezés értékéből egyértelműen következik az eredmény, akkor nem értékeli ki a másikat. Itt írnak róla valamennyit.
slice notation: ez arra való, hogy egy kollekció X. és Y. elemei közötti részt tudod vele kiszedni. Pl. egy string 3.-tól 8. betűjéig tartó substringet.
string literal: egy szöveget tartalmazó konstans gyakorlatilag
tuple: több elemből álló kollekció, amely nem módosítható.
-
kezdosql
tag
válasz
EQMontoya
#1173
üzenetére
Koszonom, van,amit ertek.

argument: --...
Ez mit akar jelenteni? Morzejelek?
handler (exeption-nel fordul elo): except:
Ezt se ertem.:-(
List Comprehensions: [x for x in ... if ...]
Koszonom, ezt sejtem.

prompt: ~
annak a karakternek a neve?
right-hand side expression: ami jobb oldalt van
Vagyis a keplet vagy kifejezes jobb oldalon talalhato karakterhalmaz
sequence unpacking: for x in ...
Ezt mreg nem talaltam meg.
shortcut operators: && illetve ||
Tehat ezek is karakterek.
slice notation: X[y:z]
Ez nem ugrik be, X halmaz y-z kozti tartomanya?
string-literal: "..."
idezojelbe tett szoveg?
tuple: (..., ..., ...)
erre is csak tippelek: felsorolas? sorozat?
-
EQMontoya
veterán
válasz
kezdosql
#1172
üzenetére
argument: --...
handler (exeption-nel fordul elo): except:
List Comprehensions: [x for x in ... if ...]
prompt: ~
right-hand side expression: ami jobb oldalt van
sequence unpacking: for x in ...
shortcut operators: && illetve ||
slice notation: X[y:z]
string-literal: "..."
tuple: (..., ..., ...) -
kezdosql
tag
Tudnatok segiteni az alabbiak magyar megfelelojeben?
A Python forditoja szerint ezek magyarra lefordithatatlan szavak:
argument
handler (exeption-nel fordul elo)
List Comprehensions
prompt
right-hand side expression
sequence unpacking
shortcut operators
slice notation
string-literal
token
tuple -
kezdosql
tag
válasz
sztanozs
#1158
üzenetére
Sajnos nem ilyen egyszeru. Eloszor fel kell oket tolteni, majd kozos elemeket keresni bennuk, ami tobb tombben szerepel es azok szamat kell megadni, hany ilyen van, es vegul ki kell listazni oket sorrendben.
Ezert gondoltam, hogy inkabb halmazelmeleti feladat, de ha tombokkel kell megoldani, mas logikat kell talalnom hozza.
Mindenkihez:
Az elte oldalan levo python3-as leirast olvasom, de minden fejezetnel kiderul, hogy az 1.5 vagy 2.3 es hasonlo verziok alatt irodtak evekkel korabban.
Megnyugodhatok, hogy akkor azon a parancsok azota nem valtoztak, vagy job, ha megprobalok megbizhatobb forrast talalni? -
kezdosql
tag
Pont az ellenkezojet allitod, mint amit leirtam.
Nekem meg azt tanitottak, hogy ugy kell megirni a ciklust, hogy az vegigfusson.
Ha azt irod, hogy 1-x legyen a futasi tartomany, addig kell ismetelnie, amig x erteke el nem eri a beallitottat.
Kulonosen, hogy ott van az else ag is, igy azzal lehet kezelni a kiveteleket. -
tvamos
nagyúr
Sziasztok!
A kovetkezo a problemam: epitettem egy "muszert", ami feszultseget mer, arduino alapon, es soroson elkuldi PC-re. Ez eddig ugye nem egy nagy truvaj... tettem ra optocsatolot, hogy galvanikusan le legyen valasztva. Hanem mostmar kifogytam a soros portbol, mert 8 ilyet akarok a gephez kotni. Tettem a panelocskamra egy RS485 drivert, meg az FTDI-hoz is toltam egy drivert, amin az adat iranyt a DTR szignallal kivantam allitani. A python kodom ugye kesz, ami eddig "patentul" ment, (kevesse igenyes, de mukodik, ir a kepernyore, ment file-ba, ilyenek, mondjuk kilepni nem lehet belole rendesen, de most ez mindegy is,) meg tudom kapcsolgatni a DTR-t, de sehogyan sem tudom szinkronba hozni a DTR kapcsolgatasat a kommunikcioval. Ott van a kutya elasva, hogy kapcsolom adasra a konvertert, tolom ki az adatokat, de azt nem tudom, mikor szalad ki az adat a soros porton.
Tudnatok ebben segiteni? Elore is koszi a segitseget!Jut is eszembe... most W7-en nyomulok, de jo lenne, ha tudnam migralni RP-ra. (Raspbian)
Most Python 2.7-et hasznalok, mert a cegnel is az van, es igy egyszerubb nekem. -
-
adam0913
tag
Nekem az lenne a problémám, hogy amikor csv-ből MYSQLdb-be íratok ki adatokat és autoincrementet használok primary ID-ként az 1000. sornál meg áll a történet, és nem tölti tovább

Ezt valaki tudja esetleg, hogy miért? Hiába állítok be INT-et, BIG INT-et, vagy bármit neki, 1000-ig szépen kilistázza, utána pedig meg áll (jelzem hiba üzenet nélkül).
A hozzá tartozó kódrészletem :
`ID` BIGINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8""" -
-
válasz
kezdosql
#1154
üzenetére
A feladatokhoz:
mind a kettőhöz - hogy kell feltölteni az elemeket, mi határozza meg mennyi elem lesz?
(1) magyarán csak ki kell listázni három tömböt?
(2) ezekhez csak az alap tömb kezelési kulcsszavaknek kell utána nézni (és egy matekos kucsszó): list, dict, defaultdict, maxHa van programozásio tapasztalatod, akoor a fentieknek elégnekk kell lennie mankónak..
-
cadtamas
tag
Tudok ennél konkrétabban is segíteni, de ha utánanézel a parancsoknak és a működésüknek, szerintem menni fog.
-
cadtamas
tag
válasz
kezdosql
#1154
üzenetére
1. feladat:
Létre kell hozni 3 üres listát.
Utána létre kell hozni egy while ciklust, amiből csak akkor lehet kilépni ha elérte a lista a 3. elemet és az input mezőben csak üres string van, (if,elif,else)
Itt érdemes a try és except metódusokat használni, hogy kiszűrd a nem megfelelő inputot
ha eléri a 9. elemet automatikusan kilép és átugrik a következő listára, egészen a végéig ( break)
Ha megvan mindhárom lista for és print metódussal tudod kilistázni
A listák elemeit a len metódus számolja meg.Ha valamit kihagytam, a többiek majd kijavítanak.

-
kezdosql
tag
Neki kell allnom pythont tanulni, telepitettem a 3,62-ot, begyujtottem az elerheto magyar doksikat, de atolvasva oket remenytelennek latom a helyzetet, hogy hetfore irjak egy peldaprogramot, tul sok idot igenyel, hogy egyaltalan atlassam, mi mire jo.
Segitsegeteket kerem, hogyan tudok "modularisan" haladni?
Hetfore ket, egyszeruen hangzo rutint kell irnom, de nem tudom, hogyan kezdjek hozza.Az elsonel harom halmazt kell definialni, pl. A1, A2 es A3, amikbe 0-9 kozotti egesz szamokat kell feltolteni.
Minimum3 es maximum 9 elem lehet minden tomb.
Ezutan ki kell listazni, hogy mely szamok szerepelnek mind a harom tombben.A masik feladatnal husz elemet kell definialni, mindegyik egy betu legyen es meg kell adni, hogy melyiknek milyen szine van, 12 szinbol lehet legfeljebb 3 szint kivalasztani.
Majd ki kell irni, hogy szinenkent hany elem van, ami 0 es 20 kozotti szam lehet.
Vegul ki kell listazni ahhoz a legtobb, egyetlen szinhez tartozo elemeket.Egy kis segitseget kernek az elindulashoz.
-
adam0913
tag
Hogyha több "ctable" nevű táblám is van, hogyan tudom az összeset kiíratni?
Ezzel csak az első sort írja ki.ctable = soup.find('table', { "class" : "ctable" })
datatable=[]
for record in ctable.find_all('tr'):
temp_data = []
for data in record.find_all('td'):
temp_data.append(data.text.encode('latin-1'))
datatable.append(temp_data) -
alfa20
senior tag
Sziasztok!
Azt tudja valaki, hogy az alábbi program miért nem fut python3-on?
kb 2 hete frissített a python (most 3.4.2 van fent) és azóta nem fut a program, szinte mindenhol hibát ír (if, elif, def, try). előtte teljesen jól működött
megoldva

-
válasz
sztanozs
#1144
üzenetére
itt szerintem nem ez a baj, hanem maga az sql dobálgatja neki vissza a create table-t mert a szóközt tartalmazó, és/vagy számmal kezdődő táblanév megsérti az sql konvencióit.
@adam0913: szóközt hagyd el, vagy helyettesítsd aláhúzással. a táblanév első karaktere pedig erősen javasolt, hogy az angol abc egy szabadon választott betűje legyen.
-
válasz
adam0913
#1143
üzenetére
Ha sqlite akkor csak körbe kell rakni szögletes zárójellel vagy macskakörömmel:[Tabla 123 akarmi]vagy"Tabla 123 akarmi"
Forrás: [link]#1145 - mysql-re meg mégjobb ez:
Csinálhatsz a forás névből egy hash-t és az lesz a tábla neve, nem lesz ütközés, és bármi lehet az eredeti név:
import hashlib
...
table_name = hashlib.sha256(name).hexdigest()Kódban így néz ki:
query = """CREATE TABLE IF NOT EXISTS "T_{tabla_nev}" (
`Megnevezes` varchar(100) DEFAULT NULL,
`Ev1` varchar(100) DEFAULT NULL,
`Ev2` varchar(100) DEFAULT NULL,
`Ev3` varchar(100) DEFAULT NULL,
`Ev4` varchar(100) DEFAULT NULL,
`Ev5` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8""".format(tabla_nev=table_name)
ésquery = """load data local infile 'C:/Python27/output.csv'
into table "T_{tabla_nev}"
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
""".format(tabla_nev=table_name) -
válasz
adam0913
#1135
üzenetére
query = """CREATE TABLE IF NOT EXISTS {tabla_nev} (
`Megnevezes` varchar(100) DEFAULT NULL,
`Ev1` varchar(100) DEFAULT NULL,
`Ev2` varchar(100) DEFAULT NULL,
`Ev3` varchar(100) DEFAULT NULL,
`Ev4` varchar(100) DEFAULT NULL,
`Ev5` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8""".format(tabla_nev=name)és
query = """load data local infile 'C:/Python27/output.csv'
into table {tabla_nev}
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
""".format(tabla_nev=name)De a name változó csak ellenőrzött forrásból jöjjön, különben: [link]
-
válasz
justmemory
#1138
üzenetére
SQLite-ban nincs igazi dátum típus, csak szám meg szöveg - nem is érdekli, hogy a dátum rendes dátum-e...
-
justmemory
senior tag
válasz
adam0913
#1137
üzenetére
Szerintem az aposztrófok miatt. Ha én hozzá szeretnék tenni egy változóban tárolt értéket az adatbázisomhoz, akkor a kód a következő:
cur.execute('insert into TABLE(Datum, Valami, Valami) \
values("'+str(mai_datum)+'", "'+str(valami_ertek)+'", "'+str(valami_ertek)+'");')Nézd meg, hogy az aposztrófok hogyan alakulnak... Még nem hoztam létre változóval táblát, de feltételezem, hogy nagyjából hasonló elv mentén kellene megpróbálni. Hozzá kell tegyem azt is, hogy én már nem MySQL-t, hanem SQLite3-at használok, de szerintem ebben olyan nagy különbség nincs.
-
adam0913
tag
válasz
justmemory
#1136
üzenetére
Nem hozza létre sajnos, ezért tettem ki, hátha valaki tud tanácsot adni, hogy mit hagyhattam ki

-
justmemory
senior tag
válasz
adam0913
#1135
üzenetére
Szia,
csak azt nem írtad meg, hogy létrehozza-e a táblát ezzel a módszerrel...
Egyébként szerintem ennek a módszernek működnie kellene, szerintem én is így csinálnám, ennél egyszerűbb szerintem nincsen... (Mármint annál egyszerűbb, hogy egy változóban tárolt névvel hozz létra táblát, és ehhez a create table-t használod.)
Annyit azért hozzá kell tegyek, hogy a az aposztrófokkal (",') sokat kellett kísérletezzek, mire sikerült a változó és egyéb infókat úgy betennem, hogy aztán azt is csinálja a program, amit akartam
-
adam0913
tag
Sziasztok!
Lehetséges az, hogy egy webscraping módszerrel kihalászott értéket egy változóba rakom, és az értékre hivatkozva adattáblát hozok létre?

Csak hogy érthetőbb legyen :
name = soup.find('span', { "class" : "name"})
print nameEzzel megtaláltam azt a nevet, amivel szeretném létrehozni az adattáblát.
connection = MySQLdb.connect(host='localhost',
user='root',
passwd='1234',
db='database')
cursor = connection.cursor()
query = """
[B] "CREATE TABLE IF NOT EXISTS "+ name+ " name VARCHAR(120) [/B](
`Megnevezes` varchar(100) DEFAULT NULL,
`Ev1` varchar(100) DEFAULT NULL,
`Ev2` varchar(100) DEFAULT NULL,
`Ev3` varchar(100) DEFAULT NULL,
`Ev4` varchar(100) DEFAULT NULL,
`Ev5` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8"""
cursor.execute(query)
connection.commit()
cursor.close()
connection = MySQLdb.connect(host='localhost',
user='root',
passwd='1234',
db='database')
cursor = connection.cursor()
query = """ load data local infile 'C:/Python27/output.csv'
into table " +name"
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n'
ignore 1 lines;
"""
cursor.execute(query)
connection.commit()
cursor.close()Próbáltam a "CREATE TABLE IF NOT EXISTS "+ name+ " name VARCHAR(120) -al, de biztos van erre valami más trükk. Lehetséges egyáltalán az, amit szeretnék?
-
s3toraph
senior tag
Sziasztok!
Felraktam a raspberry pi2-mre a netbeans 8.2-t ezen videó alapján, és beraktam ezt a python plugint, majd a legújabbat (update-elte az előzőt), de csak jython-t kaptam mint python platformot. Auto detect-el megtalálta a 2-es pythont, de a 3-ast nem (mindkettő van a pi-n).
Hogyan tudnám megoldani hogy a python 3-at használja a netbeans-ben a plugin?
Itt részleteztem hol akadtam el. Googlizok de eddig nem találtam meg a választ.
3-asban írtam eddig a programom IDLE-ben, de váltani akarok valami komolyabb IDE-re (netbeans-re esett a választásom mert van raspira és windowsra is és van neki python pluginja) + a 2-es lassacskán elavulttá válik,ezért a 3-as pythont használom és ezt szeretném használni továbbra is. -
válasz
adam0913
#1126
üzenetére
arra gondoltam, hogy egy csv-nél vannak formázási lehetőségek, amiket használhatsz.
pl. a0,1,2,3és a"0";"1";"2";"3"ugyanaz a csv.és igen, ettől még meg kell oldanod, hogy az utolsó két oszlop az ne folyjon össze. ezért vagy egy listába parseolsz, és utána a lista két utolsó oszlopát összeadod, a szükségtelen elemeket pedig eltávolítod. így elég csak a csv.writernél formázni a csv-t.
#csv előkészítés
filename=r'path\output.csv'
#én ezeket (encoding, stb.) használom, egyéb megkötések miatt
resultcsv=open(filename,"w", encoding="iso-8859-15", newline='')
output=csv.writer(resultcsv, delimiter=';',quotechar = "'")
#ha valami az egy tömb az adatokkal
for row in valami:
row[3]=(str(row[3])+","+str(row[4]))
del row[4]
output.writerow(row)
#végül lezárjuk, vagy átírhatod with:-re és akkor nem kell
resultcsv.close() -
justmemory
senior tag
válasz
adam0913
#1130
üzenetére
Persze, hogy úgy hivatkozik rá, hiszen úgy tetted be gyakorlatilag egyetlen cellába, ezt jól látod

Azt a sort kellene picit megkezelni szerintem, hogy:for data in record.findAll('td'):
datatable = datatable+","+data.textItt a
datalesz a kulcs (pontosabban adata.text), ezeket kellene aforciklus alatt a különböző "adatbáziscellákba" elhelyezni szerintem.
Ez annyiból trükkös szerintem, hogy figyelned kell, hogy éppen melyik adatnál jársz (pénznem, devizanév, egység, pénznemforintban) aforciklus alatt, hogy azt az adatot a megfelelő cellába tudd tenni.Tegyük hozzá, hogy picit vaktában találgatok, mert közben nem próbálgatom itt konzolban...

-
adam0913
tag
válasz
justmemory
#1129
üzenetére
MYSQL-t töltöttem le

Ezt nem értem, a table amit a web-scraping módszerrel nyertem ki az egy összefüggő egységes adatként látszik és aként is kezeli a python(?!). Tehát nincs külön neve a soroknak, oszlopoknak, hanem egységesen "maindatatable"-ként hivatkozok rá. Tehát ezt fel kellene dolgoznom egy ciklussal soronként, és ahol ","-őt talál, azokat az értékeket rakja be egy tömbbe vagy változóba, amit aztán msqlb-be már könnyebben tudok importálni? Ha igen, akkor ezt mégis hogyan lehetne kivitelezni? -
justmemory
senior tag
válasz
adam0913
#1128
üzenetére
Sql adatbázishoz te magad adod meg, hogy melyik "cellába" mit és hogyan (milyen formátumban - pl. dátum, szám, stb.) mentsen (ok, talán a sorszámozás kivétel ez alól). Most így hirtelen a kódot nézve nem biztos, hogy direkt módon kellene/lehetne megoldani, hanem akár egy lista vagy valami más közbeiktatásával (változók külön-külön adatoknak).
Windows alatt nem használtam még sem a python-t, sem az sql-t, szóval lehet, hogy amit írok az nem mindig válik be. Linux egyszerűbb ilyen szempontból...

Azt is el kell döntened, hogy sqlite-ot vagy mondjuk mysql-t akarsz-e használni, mert picit más a metódusa az adatok kinyerésének is, plusz egyéb más specialitások is vannak. Az adatbáziskezelős dolog azért picit trükkösebb - vagy nekem legalábbis az volt - annál, mint hogy simán kiírod egy fájlba
A stackoverflow is jó; én olykor még a zetcode-ot is nézegettem. Plusz bármi mást, ami az adott problémámra releváns megoldást kínált...
-
adam0913
tag
válasz
justmemory
#1127
üzenetére
Az még jobb megoldás lenne, ha egyből SQL-be menteném, ott egyből külön cellákba rakná szerinted? (átírom a kódot, hogy sql-be mentse ki,megnézem)
Teljesen kezdő vagyok, leginkább a stackoverflowra támaszkodom
-
justmemory
senior tag
válasz
adam0913
#1126
üzenetére
Szia,
szerintem amit te szeretnél, azt utólag, az Excelben való "mókolással" lehet a legegyszerűbben megoldani, hiszen alapvetően .csv kiterjesztésbe mented a python scriptben az adatokat; a .csv-t pedig - tudomásom szerint, de javítsatok ki, ha tévedek, mert nem vagyok nagy Excel guru - az Excel úgy nyitja meg, hogy egyetlen sorba írja ki. Ezen utólag lehet változtatni úgy, hogy magában az Excelben állítod be, hogy mondjuk a vesszők (vagy pontosvesszők) mentén szedje szét a sort, és tegye őket külön cellába...
Ha nagyon nagy butaságot írtam, bocsesz, de jelen tudásom szerint én kb. így csinálnám; nagyon nem néztem utána...
Egyébként a másik megoldás, hogy valamilyen adatbázisba (pl. sql) teszed be az adatokat, és akkor onnan mondjuk egy saját, adatbáziskezelős kis alkalmazással nyitogatod meg, és nem Excel-el. Persze ha Excel-ben kell dolgozz vele utána, az más...
-
adam0913
tag
Sziasztok!
A következő kódot, hogyan tudom átalakítani úgy, hogy "," mentén elválasztva írja ki a sorokat az excelbe, és ne összefüggően (összesen 4 oszlopról van szó), illetve az utolsó 2 érték az egy szám, ami szintén ","-vel van elválasztva, viszont az egy cellába kellene hogy kerüljön. (283,45)

Itt a link : Kód+excel (Python 2.7)
-
cadtamas
tag
Ha megengeditek megosztom néhány gondolatom, illetve tapasztalatom a python tanulással kapcsolatban.
Hosszas hezitálás után, valamikor tavaly Októberben vágtam neki a dolognak.
Tabula rasa, vagyis semmilyen előképzettségem nem volt.
Úgy gondoltam és gondolom a mai napig, hogy a jövőben egy programozási nyelv ismerete annyira elvárt lesz, mint manapság egy idegen nyelv ismerete.
Hosszú távú célom, hogy saját játékokat, alkalmazásokat, illetve a Revit tervezőszoftverhez Add-in-eket fejleszthessek. (Azt a mai napig nem tudom, hogy milyen programnyelven kell csinálni, de attól még messze vagyok.)
Sajnos nem sok időt tudok a tanulásra áldozni (átlag napi fél, maximum másfél órát), és talán lassan is haladok, de legalább van időm újra és újra átismételni a nehezebben érthető dolgokat.
Gerard Swinnen-Tanuljunk meg programozni Python nyelven című könyve volt, amivel belevágtam a dologba. Igaz, hogy pyhon 2.7-hez íródott, de egyrészt nincs nagy különbség a 3-as verzióhoz képest, másrészt menet közben automatikusan megtanultam, hogy hol érdemes válaszok után kutakodnom. (Elsősorban itt a fórumon.
)
Visszatérve a könyvre. Nagyon jól összeszedett, sok példával illusztrált, még több házi feladattal ellátott és Magyar nyelvű! Ami azért fontos, mert bár azt hittem tudok angolul, legalábbis megértem, amit mondanak nekem, de voltak fogalmak, amik elolvastam az angol nyelvű documentation-ben és csak pislogtam, mint pocok a lisztben, hogy MI?!?! A kötőszavakon kívül nem értettem meg semmit. Ne felejtsük, hogy olyan matematikai nyelvről beszélünk, ahol egyetlen kötőszó megváltoztathatja az egész mondat jelentését. Szóval, sokat segített a magyar nyelvű magyarázat.
Aztán eljutottam az objektumokig és lement a függöny. Értettem, hogy gőzgép, de fogalmam se volt mi hajcsa.
Gondoltam, biztos azért, mert egy 10 éves tankönyvből tanulok és más forrásból talán könnyebb lesz felfognom, úgyhogy megvettem az Udemy- n a legnépszerűbb pythonos zero-to-hero kurzust, hogy némi friss tudáshoz jussak. Még nem járok a kurzus végén, de ha ezzel kezdtem volna a tanulást, valószínűleg már rég feladtam volna.
Nagyon jó az anyag, az oktató is ügyesen magyaráz, de a Swinnen-féle előképzettség nélkül az első házi feladatnál úgy éreztem volna, hogy na "Itt kapjátok be a bokámat!". Nagyjából az van, hogy belök a csávó a mély vízbe azzal a felkiáltással, hogy írj egy Tic-tac-toe játékot. Ha valamit nem tudsz, olvasd el a hivatalos documentation-t. És igaz, hogy van mentőöv, de az nagyjából felér egy cheat kóddal, mert lemásolhatod a megoldást. Na bamm. A csávónál az a zero, aki pszeudo-nyelven tud írni programot és csak a python nyelvi sajátosságokat kell megtanítani neki. A helyzet fokozódott mikorra elértünk a objektum orientált programozáshoz, kaptam némi képet az alapokról, aztán írni kellett egy blackjack játékot. Sikerült megszülnöm (kb. nettó 15-20 óra alatt), de nem a kurzusnak köszönhetően. Ha valakit érdekel itt megtalálja (szívesen fogadom a kritikát).
Nagyjából itt járok most.
Szóval, aki most vág bele, ne aggódjon. Csökevényes angol tudással és a közepestől gyengébb matematikai alapokkal is sikerült elindulni, csak kitartás és elszántság kell. (meg némi fórumos hátszél.
-
sonar
addikt
Köszönöm mindkettőtöknek, az éjjel magamtól is megvilágosodtam. Csak tegnap vhogy nem esett le.

-
sonar
addikt
Egy láma kérdés
A Vagy operátor hogy csinál ebből a két számból 30-at?
>>> print(10|20)
30Nézem a dokumentációt, de ez vhogy nem jön össze most.
-
adam0913
tag
Kicsit más irányba mentem el, és egyszerűsítettem :
import urllib2
from bs4 import BeautifulSoup
import csv
import os
out=open("proba.csv","rb")
data=csv.reader(out)
def make_soup(url):
thepage = urllib2.urlopen(url)
soupdata = BeautifulSoup(thepage, "html.parser")
return soupdata
maindatatable=""
soup = make_soup("https://www.mnb.hu/arfolyamok")
for record in soup.findAll('tr'):
datatable=""
for data in record.findAll('td'):
datatable=datatable+","+data.text
maindatatable = maindatatable + "\n" + datatable[1:]
header="Penznem,Devizanev,Egyseg,Penznem_forintban"
print maindatatable
file = open(os.path.expanduser("proba.csv"),"wb")
file.write(bytes(header, encoding="ascii", errors="ignore"))
file.write(bytes(maindatatable, encoding="ascii", errors="ignore"))Viszont ezt a hibaüzenetet adja vissza : "Traceback (most recent call last):
File "C:/Python27/megoldas3.py", line 27, in <module>
file.write(bytes(header, encoding="ascii", errors="ignore"))
TypeError: str() takes at most 1 argument (3 given)"Gondolom az utolsó soroknál lehet valami probléma, amikor csv-be szeretném kimenteni, mert ha printelem a maindata-t nagyon szépen kiadja azokat az adatokat, amikre szükségem van. Mit ronthattam el vele?
-
Flitzhugh
csendes tag
Sziasztok!
Teljesen kezdő vagyok, most kezdtem le tanulni a Python nyelvet. A scripteket eltudom menteni .py fájlként, viszont megnyitni őket sehogy se tudom, csak felugrik egy pillanatra az ablak és el is tűnik. Mit tudnék csinálni? -
adam0913
tag
-
adam0913
tag
Erről a weboldalról szeretném kigyűjteni ezt a részét Python segítségével, amit aztán excelbe/sql-be továbbitok.
<tbody>
<tr>
<td class="valute"><b>CHF</b></td>
<td class="valutename">svájci frank</td>
<td class="unit">1</td>
<td class="value">284,38</td>
</tr>
<tr>
<td class="valute"><b>EUR</b></td>
<td class="valutename">euro</td>
<td class="unit">1</td>
<td class="value">308,54</td>
</tr>
<tr>
<td class="valute"><b>USD</b></td>
<td class="valutename">USA dollár</td>
<td class="unit">1</td>
<td class="value">273,94</td>
</tr>
</tbody>A következő error hibaüzenetet kapom: "There's an error in your program: unindent does not match any outer indentation level"
Mit rontottam el a kódban? Hogy tudom elérni hogy ezeket az értékeket szedjem ki ténylegesen?
A kódom a következő:import csv
import requests
from BeautifulSoup import BeautifulSoup
url = 'https://www.mnb.hu/arfolyamok'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html)
table = soup.find('tbody', attrs={'class': 'stripe'})
table = str(soup)
table = table.split("<tbody>")
list_of_rows = []
for row in table[1].findAll('tr')[1:]:
list_of_cells = []
for cell in row.findAll('td'):
text = cell.text.replace(' ', '')
list_of_cells.append(text)
list_of_rows.append(list_of_cells)
print list_of_rows
outfile = open("./inmates.csv", "wb")
writer = csv.writer(outfile)
writer.writerow(["Pénznem", "Devizanév", "Egység", "Forintban kifejezett érték"])
writer.writerows(list_of_rows)
Új hozzászólás Aktív témák
- Azonnali készpénzes INTEL CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- Apple iPhone 15 Pro Max 256GB, Kártyafüggetlen, 1 Év Garanciával
- DELL PowerEdge R740 rack szerver - 2xGold 6130 (16c/32t, 2.1/3.7GHz), 64GB RAM, 10Gbit HBA330, áfás
- HP Dell, Fujitsu, üzleti kategóriás notebook kiárusítás - frissítve: 12.15.
- Fitbit Versa 4 okos óra
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



)



![;]](http://cdn.rios.hu/dl/s/v1.gif)



