Új hozzászólás Aktív témák
-
axioma
veterán
válasz
cousin333 #3758 üzenetére
OK, a rovidites csak a list compr.-re vonatkozott, es hogy ujra vegigvizsgal felesleges elemekre. Ha a konyvtarit hivtad volna benne nem szoltam volna, de itt konkretan a lista kepzesi modja _miatt_ nem kerulheto ki a teljes vizsgalat per elem (a keszulo lista nem tud be-ki parameterkent megjelenni az ellenorzo fg-ben).
Szerintem nem kell az olvashatosag oltaran felaldozni a kitevot a nagyordoban, erre akartam utalni. Amugy minden mas esetben eljen soka a list comp, surun hasznalom. -
axioma
veterán
válasz
cousin333 #3748 üzenetére
Megint a code golf ;-) Persze tanulashoz kis szamokra jo, de szamitasigenyre nezve eleg hatekonytalan ez a modszer... HA listazni akarod oket akkor teszteleshez inkabb hasznald a korabbi primeket. En kb igy szoktam [feladvanyoknal alt egymillioig kell, es ez most mobilrol kiprobalas nelkul]:
limit=...
primes=[2,3,5,7,11]
act=11
while act+2<=limit:
act+=2
sact=int(act**0.5)
i=1
while primes[i]<=sact and act%primes[i]!=0:
i+=1
if primes[i]>sact:
primes.append(act)
Tehat: csak paratlan szamokat vizsgal, es azokat is csak a 2-nel nagyobb, de gyokenel kisebbegyenlo, korabban megtalalt primekre.
Amugy van konyvtari fuggveny is primtesztre ;-) -
Hege1234
addikt
válasz
cousin333 #3724 üzenetére
bocsi azt nem fejtettem ki, hogy
request.get -hez használnám a params-ba, hogy az időt mozgatva + - ba
le tudjak kérni adatokat
így néha a now-ra van szükségem néha pedig egy külső fájlból adva van
egy pár nappal ezelőtti dátum ahonnan az időből el kell venni perceket...ezért keveredett bele a now és a startTime-is
köszönöm a példákat is, szuperül működik!
-
Blasius
tag
válasz
cousin333 #3679 üzenetére
Arch linuxon repóban megvolt a pyqtgraph. A példakód amit linkeltél a pár grafikonnal gond nélkül lefutott. Tényleg nagyon jól néznek ki a grafikonok
. Qtvel, QtTimerrel guival még nem volt dolgom; A régimódi while loopot kerestem volna a kódban elsőre, azt gondoltam hogy így oldják meg a frissítést.
Találtam egy oldalt ahol aránylag lépésről lépésre leírják hogy hogyan is működik a pyqtgraph kódolás. Ezen majd elindulok aztán meglátjuk hogy meddig jutok.
https://www.pythonguis.com/tutorials/pyside-plotting-pyqtgraph/
-
Archttila
veterán
válasz
cousin333 #3485 üzenetére
cousin333
Ma mar nem indult el az altalad irt (eddig tokeletesen mukodo) script. Megnezned nekem hogy mi lehet a gond?
Ezt kopi vissza:[alucard@arch ~/.config/waybar/modules]$ ./weather.py
Traceback (most recent call last):
File "/home/alucard/.config/waybar/modules/./weather.py", line 3, in <module>
import requests
ModuleNotFoundError: No module named 'requests'
-
Hege1234
addikt
válasz
cousin333 #3500 üzenetére
köszönöm!
háát most így elnézve, valóban vérzett
közben nekem is sikerült összehozni
def pick(options):
print("\nminőség kiválasztása:\n")
for idx, element in enumerate(options):
print("{} = {}".format(idx + 1, element))
i = input("\nírd ide a számot: ")
try:
if 0 < int(i) <= len(options):
return int(i) - 1
except:
pass
return None
options = ["1080", "720", "540", "480", "360"]
res = pick(options)
quality = options[res]
print(quality)axioma:
köszi neked is!bar szemely szerint inkabb az input-nal rogton konvertalnam
ezt kifejtenéd kicsit bővebben?
input-ot sokszor hasznánlom hátha későbbiekben hasznos lesz, ha egyből konvertálásra kerül -
Hege1234
addikt
válasz
cousin333 #3489 üzenetére
köszi, jónak tűnik a szöveges fájlban is, de valamiért itt is hozzáadódik az elejére és a végére a "
mp4decr = dirPath + '/programok/mp4decrypt.exe'
video = dirPath + '/Downloads/video.mp4'
audio = dirPath + '/Downloads/video.aac'
videoout = dirPath + '/Downloads/videoOUT.mp4'
audioout = dirPath + '/Downloads/audioOUT.aac'
with open("key.txt", "r") as fs:
keys = fs.readlines()
keys = keys[0].strip()
debug = subprocess.run([mp4decr, keys, video, videoout])
print(debug)
debug2 = subprocess.run([mp4decr, keys, audio, audioout])
print(debug2)
ERROR: unexpected argument (I:\d-python/Downloads/videoOUT.mp4)
CompletedProcess(args=['I:\\d-python/files/programok/mp4decrypt.exe', "'--key', '010023c4da1658b385f8a10dc7b17450:c4c1111bcde3c91357b50e6bb2a59ad3', '--key', '01051f72bf5ef290ccb970af41c57221:dad27bbe543d08bc0f545a355e3c4700', '--key', '010256b52c930f313823199d651d772e:b99212fc75e8e03b49bd9a0cf54190f1', '--key', '010100c9e8b349c1f159f05a9bedc74e:05326f0bdae9f59b6a24d69a59eae425'", 'I:\\d-python/Downloads/video.mp4', 'I:\\d-python/Downloads/videoOUT.mp4'], returncode=1)
ERROR: unexpected argument (I:\d-python/Downloads/audioOUT.aac)
CompletedProcess(args=['I:\\d-python/files/programok/mp4decrypt.exe', "'--key', '010023c4da1658b385f8a10dc7b17450:c4c1111bcde3c91357b50e6bb2a59ad3', '--key', '01051f72bf5ef290ccb970af41c57221:dad27bbe543d08bc0f545a355e3c4700', '--key', '010256b52c930f313823199d651d772e:b99212fc75e8e03b49bd9a0cf54190f1', '--key', '010100c9e8b349c1f159f05a9bedc74e:05326f0bdae9f59b6a24d69a59eae425'", 'I:\\d-python/Downloads/video.aac', 'I:\\d-python/Downloads/audioOUT.aac'], returncode=1)ilyen a formátuma amikor működik
CompletedProcess(args=['I:\\d-python/files/programok/mp4decrypt.exe', '--key', '6761374a7eb04b59a595a943f4dbcdbe:ed38695f26825877db9b0335f2212bb9', 'I:\\d-python/Downloads/video.mp4', 'I:\\d-python/Downloads/videoOUT.mp4'], returncode=0)
CompletedProcess(args=['I:\\d-python/files/programok/mp4decrypt.exe', '--key', '6761374a7eb04b59a595a943f4dbcdbe:ed38695f26825877db9b0335f2212bb9', 'I:\\d-python/Downloads/video.aac', 'I:\\d-python/Downloads/audioOUT.aac'], returncode=0)szerk:
teszteltem amit itt írtál #3490
így is hozzáadódik -
cousin333
addikt
válasz
cousin333 #3489 üzenetére
Hááát, még nem tökéletes...
Ez viszont már jobbnak tűnik:
def convert(txt):
return ', '.join(f"'{chunk}'" for chunk in txt.split())
with open('d:/input.txt', 'r') as reader, open('d:/output.txt', 'w') as writer:
for line in map(convert, reader.readlines()):
writer.write(line + "\n")
Tesztbemenet (input.txt):
--this is something
new line here 1234Kimenet (output.txt):
'--this', 'is', 'something'
'new', 'line', 'here', '1234' -
Archttila
veterán
válasz
cousin333 #3482 üzenetére
#!/usr/bin/env python
from lxml import html
import requests
import json
lat = "47.95"
lng = "21.71"
resp = requests.get("https://darksky.net/forecast/{},{}/ca12/en".format(lat, lng))
tree = html.fromstring(resp.content)
summary = tree.cssselect("span.summary.swap")
print(
summary[0].text_content().split()[0],
"°C")
Koszonom sikerult!
Annyi gond van csak vele, hogy ronda mint az elso felesegem
Ugy kellene kineznie mint a bal oldali a CPU temp-nek csak ikon nelkul. Szerintem az a problema, hogy a script ugy hivja le a temp adatot, hogy odabiggyeszti az ertek moge a "C"-hez tartozo kis karikat. Ha nem tenne akkor kozvetlen a szam moge kerulne a print-ben megadott
°C
-
Luxoros
lelkes újonc
-
Hege1234
addikt
válasz
cousin333 #3454 üzenetére
köszönöm, tökéletesen működik!
import re
import json
regex = r'S([1-9]*[0-9])\s?E([1-9]*[0-9]):?'
def replacer(x):
a, b = x.groups()
return 'S' + a.rjust(2, '0') + 'E' + b.rjust(2, '0')
f = open('info.json', 'r')
title = json.load(f)
title = title[0]['body']['metadata']['hadron-legacy-telemetry']['seriesName']+' - '+title[1]['body']['details']['title']
done = re.sub(regex, replacer, title)
print(done)Supernatural - S15E09 The Trap
-
olivera88
veterán
válasz
cousin333 #3368 üzenetére
Újra telepítettem közbe. Hát most ott tartok ismét h nem tudom feltepíteni a program legújabb verzióját, bezzeg a régebbi verziót azt meg feltudná telepíteni, azzal nem mutat konflikust, de ha megadom melyik verziót telepítse, ez a legújabb ugye, arra meg konfliktus problémát ír. Írtam tegnap ugye hogy miután telepítettem a Python 3.6 ot akkor sikerült telepíteni a programot, viszont akkor meg hozzá szükséges Python interfészt nem tudtam, a konfliktusok miatt. Na már most úgy veszem ki akkor h tényleg Python verziókkal lehet a gond.
Ma olvastam h külön környezetbe kell telepíteni ha másik Python verziót akarok, (tegnap nem így tettem) így, conda create -n py39 python=3.9 anaconda.
Tehát ha így feltelepítek egy régebbi verziót, akkor honnét tudja az a másik program amit akarok telepíteni hogy rendelkezésre áll másik Pyton verzió is, és azt használja? -
-
Gyuri27
félisten
válasz
cousin333 #3340 üzenetére
Igen lefut.
A gond az, hogy előbb simán nem fut le az össze variáns. Ha nézed nálam lefut a feladat is kéri.
"Készítsünk Python alkalmazást, ami egy vírus lehetséges összes fehérje mutációját kiírja.
(Pl: H1N1, H1N2….), a H1N1 törzset nevezzük "Madárinfluenzának"."A másik gond, hogy most valóban kombinálja a 3 betüt meg a variánsokat.
De: a kiiratás nálam azért az mert ez van kérve.
"A többit nevezzük el őket oly módon, hogy a COVID és a SARS betűkből
véletlen szerűen választunk 3-at, és mögé fűzzük a fehérje kombináció
számát, és írjuk ki. (Pl: COR-11, ARC-92….. )"
"Kiíratási minta:
fehérjevariáns: H1N1 elnevezés: Madárinfluenza
fehérjevariáns: H1N2 elnevezés: VIO-12"
Az hogy lefusson az összes kombináció elég hamar megtákoltam.
Csak ugye nem ez a feladat (miért is ez lenne mikor lehet sokkal bonyolultabb is). -
Gyuri27
félisten
válasz
cousin333 #3336 üzenetére
Traceback (most recent call last):
File "C:/Users/Gyuri/PycharmProjects/pythonProject/házi.py", line 10, in <module>
elnevezesek = [''.join(random.choices(nevek, k=3) + varians) for varians in variansok]
File "C:/Users/Gyuri/PycharmProjects/pythonProject/házi.py", line 10, in <listcomp>
elnevezesek = [''.join(random.choices(nevek, k=3) + varians) for varians in variansok]
TypeError: can only concatenate list (not "tuple") to listValami nem kerek.
-
Gyuri27
félisten
válasz
cousin333 #3328 üzenetére
import random
hfeherje = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'H7', 'H8', 'H9', 'H10', 'H11', 'H12', 'H13', 'H14', 'H15', 'H16']
nfeherje = ['N1', 'N2', 'N3', 'N4', 'N5', 'N6', 'N7', 'N8', 'N9']
variansok = [x + y for x in hfeherje for y in nfeherje]
print(variansok)
print("H1N1:" "Madárinfluenza")nevek = ['C', 'O', 'V', 'I', 'D', 'S', 'A', 'R', 'S']
nev = ''
for i in range(3):
nev += random.choice(nevek)feherjevarians = (random.choice(variansok))
feherjevarians = [(random.choice(variansok))]elnevezés = (""+random.choice(nevek)+""+random.choice(feherjevarians))
print("fehérjevariáns:", feherjevarians, "elnevezés:", elnevezés)
A végeredmény:
fehérjevariáns: ['H13N9'] elnevezés: SH13N9
A fehérje variánsban nem zavar az aposztrof és a zárójel, bár nem kellene oda.
A gond az elnevezés. Mert ott 3 betünek kellene lenni (random) de egy van. És a HxNx variánsokból (ahol az x szám) csak a szám kellene.
Azaz 3 random betű AAA és a random szám 106 = AAA106
Remélem nem bonyolitottam túl.
Na erre kellene valami full fapad megoldás. -
sztanozs
veterán
válasz
cousin333 #3264 üzenetére
import os
start_string = 'START'
stop_string = 'STOP'
name_string = 'Adat:'
start = False
with open('szoveg.txt', 'r') as input_file:
with open('output.txt', 'w') as output_file:
for line in input_file:
if line.startswith(start_string):
start = True
elif line.startswith(stop_string):
start = False
elif start and name_string in line:
loc = line.find(name_string )
loc += len(name_string ) + 2
filename = line[loc:loc+8]
output_file.write(filename + '\n') -
válasz
cousin333 #3252 üzenetére
No, az éjjel tovább írtam egy lehetséges megoldást, az elmélete az, hogy
találtam egy függvényt, ami azt csinálja hogy két keresési értékre megmondja hogy melyik sorban vannak azok a szöveges file-ban. A két keresési értéknek (mivel kötött formátumú, ismétlődő szövegrészekről van szó, így meg lehetett adni a kezdő szövegrészt és a záró szövegrészt - ezek lettek a két keresési értékek)
A függvény legyűjtötte ezen sorok számát. A sorok számát aztán beletettem egy további listába, ami egymás után folytatólag tartalmazta a kezdő és záró sorok sorszámát. Aztán ezt egy for ciklussal (mert tudtam hanyadik sorban van az utolsó záró sor sorszáma) és ahhoz használt két számlálóval - a számlálókat léptetve - már range értékként egy további for ciklussal kinyertem a köztes sorok sorszámait - így megkaptam a 'lényegi információt' tartalmazó sorok sorszámát. Egy ilyen 'range' után betettem egy ellenőrző szöveges sort, ami alapján látom hogy helyesen működik-e a script (egyszerűen 'következő tétel' kiírás jelenik meg az adott for ciklus lefutása után) - ez alapján eddig megvagyok.Most jön az, hogy au egy tételhez tartozó sorokat legyűjtő for ciklus végére teszek egy file kiíratást ami soronként hozzáadja, 'másolja' a legyűjtött sorok sorszámában lévő szöveget, majd lezárja és nyitja a következő file-t, abba is írja a legyűjtött következő sorokat és így tovább. Még az kellene, hogy a megnyitott fileok amikbe a legyűjtött sorok másolódnak olyan filenéven legyen aminek adata szintén a forrás textfile-ban van.
Most keresem azt a megoldást amivel a kulcsszó utáni adott karakterhosszúságban kiveszi és egy változóba teszi azt az infót ami aztán a file neve is lesz.A talált két keresőértékes függvény:
def search_multiple_strings_in_file(file_name, list_of_strings):
"""Get line from the file along with line numbers, which contains any string from the list"""
line_number = 0
list_of_results = []
# Open the file in read only mode
with open(file_name, 'r') as read_obj:
# Read all lines in the file one by one
for line in read_obj:
line_number += 1
# For each line, check if line contains any string from the list of strings
for string_to_search in list_of_strings:
if string_to_search in line:
# If any string is found in line, then append that line along with line number in list
list_of_results.append((string_to_search, line_number, line.rstrip()))
# Return list of tuples containing matched string, line numbers and lines where string is found
return list_of_resultsés a lényegi sorok sorszámát tartalmazó lista feltöltése:
kezdet = 0
vege = 1while vege < max(sorszamlista):
print('text kezdete: ',sorszamlista[kezdet])
print('text vége: ',sorszamlista[vege])sorkoz = range(sorszamlista[kezdet]-1, sorszamlista[vege]+1)
for n in sorkoz :
print(text[n].rstrip()) # text = fajl.readlines()
print('Következő tétel ##########################')
kezdet+=2
vege+=2 -
Mr Dini
addikt
-
atesss
addikt
válasz
cousin333 #2829 üzenetére
No akkor most ismét nekiállok megírni a hsz-t. Tegnap du. emiatt a warning miatt elveszett amit írtam...
Köszi az ötletet, nekiálltam a NamedTuple-t használni. Egyelőre a következő két függvényemben:def i2c_io_namer(i2c_io_readed_array_reversed):
global MICROSWITCH_COUNT
MICROSWITCH_COUNT = 4
global MICROBUTTON_COUNT
MICROBUTTON_COUNT = 2
global NC_COUNT
NC_COUNT = 2
i2c_io_pinout = namedtuple('I2C_IO_PortA', ['Switch1', 'Switch2', 'Switch3', 'Switch4',
'Button1', 'Button2', 'NC7', 'NC8'])
# sample: i2c_io_readed_array: [True, True, True, True, False, True, False, False]
i2c_io_state = i2c_io_pinout(*i2c_io_readed_array_reversed)
return i2c_io_state
def i2c_io_printer(i2c_io_readed_array_reversed, i2c_io_state):
global i2c_io_readed_array_reversed_previous
print("----")
print("I2C_IO portA állapot:", i2c_io_readed_array_reversed)
# for y in range(len(i2c_io_readed_array_reversed)):
# print ("I2C_IO_PortA: pin", y+1, "actual value: ", i2c_io_readed_array_reversed[y])
print("Port állapot tuple adattípussal: ")
print(i2c_io_state)
print("Kapcsolók állapota: ", i2c_io_state[0:MICROSWITCH_COUNT])
print("Nyomógombok állapota: ", i2c_io_state[MICROSWITCH_COUNT:(MICROSWITCH_COUNT+MICROBUTTON_COUNT)])
print("Nem használt pinek állapota: ", i2c_io_state[(MICROSWITCH_COUNT+MICROBUTTON_COUNT):(MICROSWITCH_COUNT+MICROBUTTON_COUNT+NC_COUNT)])
for i in range(len(i2c_io_readed_array_reversed)):
if (i2c_io_readed_array_reversed[i] != i2c_io_readed_array_reversed_previous[i]):
print("--")
print("Változás az IO bemeneteken: I2C_IO Pin number", i, ": from", i2c_io_readed_array_reversed_previous[i], "to", i2c_io_readed_array_reversed[i])
i2c_io_readed_array_reversed_previous = i2c_io_readed_array_reversed
Ami plusz, hogy ennek az I2C-s IO modulnak (PCF8574) van egy Interrupt kimenete is. És ezt most bekötöttem a Raspberry Pi egyik GPIO bemenetére, és szeretném használni.
Ez az Interrupt Pin akkor változik meg (1-ről 0-ba megy), ha változás történt a PCF8574 bármelyik bemenetén.
A Raspberry-n csak ezt az egy GPIO pint-t figyelném pollingolással, és csak akkor állnék neki I2C-n keresztül kiolvasni az aktuális értékeket, ha bármelyikben egy változás volt.
Maga a funkció működik (bár valamiért kicsit "lassan" áll vissza miután csináltam egy kiolvasást, de a célnak most ez mégis megfelel, a gyakorlatban úgy néz ki). De ez az átalakítás még folyamatban van a programkódomban.De sajnos a korábbi értékkel való összehasonlítást sem tudtam még megoldani a tuple-ön keresztül.
Van amit nem értek még teljesen róla.Az i2c_io_pinout = namedtuple ... utasítással jól gondolom, hogy én egy "i2c_io_pinout" típust hozok létre ?
És utána a i2c_io_state = i2c_io_pinout(*i2c_io_readed_array_reversed) pedig létrehoz egy i2c_io_pinout típusú "változóból"(mi itt erre a helyes szó?) egy konkrét példányt ?Hogy tudnék elérni egy adott számú "kulcsnevet" ?
Tehát nem hogy mi az értéke, hanem hogy mi a neve az i -edik elemnek. ("Switch2" vagy "Button1" , stb.)
Az i2c_io_state[i] az értéket adja meg csak sajnos.
A i2c_io_pinout[i] pedig hibát dob, hogy ez egy nem iterálható típus. -
atesss
addikt
válasz
cousin333 #2829 üzenetére
Köszi a sok infót. Átrágom majd magam a témán részletesen, de csak holnap (esetleg este).
Most a legfrissebb Pythont használom. És az biztos hogy most már csak 3-asat szeretnék mindenhol. De azért ami még a 3-ason belül is ennyire új, azt egyelőre nem preferálnám annyira.
Viszont ezzel kapcsolatosan még egy dologra rákérdeznék:
Python programozással akarok majd foglalkozni - a PC/Raspberry mellett - nemsokára ESP8266-n illetve ESP32-n is.
Vagyis ez így már MicroPython lenne.
Így - ha amúgy nem jelentősebb a hátránya - akkor lehet inkább az olyan adatszerkezeteket, metódusokat részesíteném előnyben, amit fogok tudni majd MicroPython alatt is használni.Egyrészt így tanulási szempontból is részben arra fókuszálnék.
Másrészt most konkrétan ezeket a HW-kezelő függvényeket ha jól megírom, akkor akár tudnám használni a Raspberry Pi helyett/mellett az ESP-ken is majd kapásból.
Ez tudom hogy kicsit már így OFF lehet itt, de sajnos nem nagyon találtam a PH-n MicroPython-al is foglalkozó topicot. Az Arduino-s topic elég jól pörög, nagyon sok hasznos dolog van, de ott MicroPython-ban valahogy nem nagyon láttam senkit se programozni (amúgy nem is értem miért, a C/C++ -hoz képest azért én elég sok előnyét látom így már kezdetnek is).Néztem annó a hivatalos oldalon a különbségeket/limitációkat. De azért az eléggé száraz infónak tűnt. Nem tudsz esetleg valami jó összefoglalót a különbségekről ?
Vagy akár ajánlásokkal együtt (mi az amit ugyan használhatnánk Micropython/ESP alatt, de nem annyira ajánlott a viszonylag nagyobb memória vagy cpu igénye miatt). -
cousin333
addikt
válasz
cousin333 #2723 üzenetére
Lejárt a szerkesztési időm...
Érdekesség: 2019-es Python fejlesztői felmérés a JetBrains-től (többek között A PyCharm fejlesztői). Pár érdekesség:
- 84% elsődleges nyelvként használja!
- nem meglepő módon leginkább web fejlesztésre és adatelemzésre használják
- bár az arányuk rohamosan csökken, 10% még mindig a Python 2-t nyúzza
- a Python 3 felhasználók fele a 3.7-es változatnál jár, a 3.8 kb. 11%-on áll
- webfejlesztés: dominánsan Flask és Django
- adatelemzés: NumPy és Pandas (nem meglepő módon), bár ez szorosabb
- unit testing: pytest és unittest
- adatbázis: PostgreSQL, MySQL, SQLite szinte fej-fej mellett
- operációs rendszer: Linux > Windows > MacOS
- IDE: PyCharm, VSCode, Vim/Jupyter Notebook -
axioma
veterán
válasz
cousin333 #2688 üzenetére
Eleje OK, masodik felere: versenyen time limit-re a python altalaban 5-os szorzo a C/C++-hoz kepest, aztan megis van hogy kifut az idobol. Atirom java-ra vagy ujabban (bar nem all a kezemre mert sose hasznaltam masra) C++-ra, es siman belefer. Itt 1 vagy 2 masodperc alapidokrol van szo [jellemzo adatmeret 10**5 korul], ehhez jon a szorzo, java-ra is van 2. [Ezek a tobb napos versenyek, amikor van ido atbogaraszni, az teny hogy megirni leggyorsabban python-ban tudom, azert is azt hasznalom.]
Ezert irtam, hogy sajnos ha az algoritmust a kodban kell megirni, akkor erezhetoen lassabb. Nyilvan ha valamit osszeraksz meglevo megoldasokbol, az mar egy masik eset, es az iparban az a gyakoribb, hogy nagyitoval kell keresni az algoritmikus feladatokat... -
cousin333
addikt
válasz
cousin333 #2681 üzenetére
Meg is feledkeztem arról, hogy a sztring is iterálható, szóval a kód egyszerűsödhet kissé:
import itertools
hossz = 5
nums = itertools.product('0123456789abcdef', repeat=hossz)
prods = itertools.product(('02', '03'), (''.join(i) for i in nums))
with open('d:/test_output.txt', 'w') as ofile
for pre, num in prods:
ofile.write(pre + num + '\n')
-
axioma
veterán
válasz
cousin333 #2678 üzenetére
Nem feltetlen gyorsabb a deque ekkora meretben. Egy versenyfeladatot irt meg ismeros azzal, igaz nem is a legjobb algo-val, de utana hiaba probaltam minel kevesbe hozzanyulni a kodjahoz (demonstracios cellal volt az egesz) ugy, hogy atmenjen es ne TLE-re fusson, a deque-val nem sikerult teljesen.
Aztan lehet hogy jelenleg pont hasznalna, csak jeleztem hogy nem erdemes egybol annak nekiesni. Bar ha idokritikus a dolog, akkor meg eleve nem erdemes python-nal nekiesni
Amugy en is tuple, sort, visszairas megoldast alkalmaznam. Jobb esetben beleillik a kodba hogy ne kelljen kulon list-kent eloallni. Tuple-ben is lehet utana binarisan keresni pl. (bar a meret nem annyira indokolja). -
cousin333
addikt
válasz
cousin333 #2660 üzenetére
Még egy példa a hivatalos dokumentációból. Tuple-lista sorba rendezése a második elemek alapján:
pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
pairs.sort(key=lambda pair: pair[1])
Eredmény:
[(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')] -
eldvor
csendes tag
válasz
cousin333 #2607 üzenetére
Szia!
Köszönöm! Azóta két tabig én is nagy nehezen eljutottam, le is fut az elsőre, de utána a következő hibákat kapom:
Traceback (most recent call last):
File "temptodb2.py", line 20, in <module>
cur.execute("INSERT INTO TH(THdate, THtemperature, THhumidity) VALUES ('" + dt + "'," + str(temperature) + "," + str(humidity) + ")")
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 250, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
raise errorvalue
_mysql_exceptions.InterfaceError: (0, '')Ez nekem már full magas, sajnos python tudásom elég féllábas
-
cousin333
addikt
válasz
cousin333 #2582 üzenetére
A Python osztályokhoz (mint az OOP-k zászlóshajójához) kapcsolódó kötelező videó:
Python's Class Development Toolkit -
kovisoft
őstag
válasz
cousin333 #2440 üzenetére
Biztos, hogy jó? Ez van nála: a gömbréteg felső sugara q1, a gömbréteg alsó sugara q2.
Először kiszámolja a q1 és q2-höz tartozó szeletek magasságát, ez még jó:m1=r-sqrt(r**2-q1**2) # Felső szelet magassága
m2=r-sqrt(r**2-q2**2) # Alsó szelet magassága
Aztán jön a gömbréteg magassága. De az szerintem m2-m1 (a nagyobbik szelet tetejéből levágjuk a kisebbik szeletet). Amit ő számol, abban összeadja a két szelet magasságát és ezt az összeget levonja r-ből:M=r-(m2+m1) # Gömbréteg magassága
Persze lehet, hogy valamit rosszul látok, de Janos46 is azt írja, hogy bizonyos input adatokra nem jól működik. -
válasz
cousin333 #2409 üzenetére
Kicsit offként, én gépi tanulást csinálok már második éve, és igazából nem nagyon ösztönzi az embert hogy Pythont tanuljon, mert egy kezemen meg tudnám számolni, hogy hányszor kellett OOP-szerűen programozni. Ha kellett is OOP-znem, az azért történt, mert valami olyan könyvtárat használtam, ahol nem egymás utáni adatmanipuláció majd fitet várnak el a készítők, hanem hogy egy objektumba pakold a kódot.
De kétségtelenül jól pörgő ág most. -
cousin333
addikt
válasz
cousin333 #2387 üzenetére
És a rá adott válaszom:
Szia!
Kivételesen még itt is válaszolok, de a továbbiakban nem kívánok közvetíteni. Oldd meg, hogy írni tudj a fórumba, és akkor majd jönnek a válaszok is, akár több irányból.
"En pedig azt nem ertem, miert nem erted, hogy A betu es B betu van a fontos cellakban."
Nyilván azért, mert ezt sehol sem írtad le. Mindig A és B-ként hivatkoztál rájuk és nem 'A betű'-ként.
"Oh, persze, alig par ezer oldalas doksi, ezzel az erovel mondhatod, hogy "ott a megoldas a vilagegyetemben".
Abban talán egyetérthetünk, hogy a világegyetem sokkal komplexebb, mint pár ezer oldal..
Ha fel szeretnél hívni valakit, és linkelnek neked egy telefonkönyvet, akkor meg visszaírod, hogy ennyi ezer oldalt nem olvasol el? Vagy csak simán megkeresed a téged érintő részeket?
Javaslom továbbá a netes súgót a PDF helyett: jobban strukturált és könnyebben kereshető. Ami téged érint az az alapok (pl,. DataFrame), a csv beolvasás, a statisztika és az ábrázolás. Az első kettő szerintem nem igényel segítséget, már rég végezhettél volna az elolvasásával.
"Tudtommal a meteorologia hasznalja."
Igen, ők is.
Az angol neve heatmap. Arról szól, hogy egy színtérképpé alakítja a táblázatos adatokat, így vizuálisan könnyebb befogadni. A te esetedben akár minden cella lehet egy pixel (vagy több), esetleg összevonhatsz sorokat és oszlopokat ami a képen annál pirosabb (pl.), minél több benne az A. tulajdonképpen egy 2 dimenziós hisztogram.
"Ezek kozotti esetleges osszefuggeseket kell vizsgalni. ennyi a feladat."
Pontosan ez a kérdés: milyen összefüggésekre vagy kíváncsi? Hogy az A betű mellett hol van B? Vagy alatta? Vagy, hogy melyikből van több? Vagy azonos-e az eloszlásuk a sorok és oszlopok között? Vagy az egyes sorokban éppen melyikből van több? Vagy... ?
Tudtommal az egy dimenzio, az PONT-ot jelent, mivel a tuple az egy lista-hoz hasonlo, maris ket dimenzios, es ettol kezdve a tablazat sorait tartalmazhatja.
Tehát mégsem jó a te felhasználásodra, legalábbis önmagában. Amúgy igazad van, egy dimenziós tömbre gondoltam.
"Biztosan nem, tobb konyvben tobb peldaban szerepelt, hogy a listak elemeit a python 'egyedi, hatekony modon' tarolja el, igy a listak kiiratasakor a sorrend mindig veletlenszeru, ha nincsen arra kenyszeritve, hogy sorba rendezve jelenitse meg az adatokat."
Ha készítesz egy listát, akkor az 10-ből 10-szer ugyanúgy jelenik meg. Ha új elemeket adsz hozzá, akkor is. Az iterálás is mindig ugyanazt adja.Talán a szótárakra (dictionary) gondolhattál, ott tényleg nem lehet megbízni a sorrendben (noha egy fix méretű objektumnál akkor is mindig ugyanaz lesz a sorrend, igaz, nem feltétlenül egyezik meg a hozzáadás sorrendjével).
-
cousin333
addikt
válasz
cousin333 #2385 üzenetére
Újra kezdosql privátja:
Szia,
nagyon koszonom, nekem ugy tunik, hogy tartosan elbeszelunk egymas mellett.:-(
Megprobalom reszletesen leirni, mik az elteresek, hatha elkezdjuk erteni egymast.
mikor már teljes értékűen tudod használni a netet.
Tudom hasznalni, csak a python forum van valamiert blokkolva a mcaffee altal.
Mas forumokba tudok irni.az általam linkelt Pandas dokumentációt sem tudtad betölteni.
Irtam, hogy atiranyitasi gond volt, valamiert nem volt elerheto akkor a server. azota letoltottam a doksit, par ezer oldalas pdf file.
Az "A és B közötti összefüggések keresése" elég sovány definíció. Továbbra sem ismert hogy pl. milyen (típusú) adatokról van szó.
En pedig azt nem ertem, miert nem erted, hogy A betu es B betu van a fontos cellakban.
ennel egyszerubb megoldas nem hiszim, hogy letezik.Mondtam neked, hogy a Pandas modul használata a megoldás.
Oh, persze, alig par ezer oldalas doksi, ezzel az erovel mondhatod, hogy "ott a megoldas a vilagegyetemben".
A grafikus megoldás nem azt jelenti, hogy kinyomtatod az adatokat egy táblázatban, hanem pl. hőtérképen ábrázolod.
Ez megint olyasmi, amit te szeretsz, de fogalmam sincs, hogy mi ez es mire jo.
Az biztos, hogy statisztika teren nem tanutam.
Tudtommal a meteorologia hasznalja.
Adott A es B kulonbozo cellakban - nincsenek linearis adatok, vagy skala, csak ket diszkret adat van.
Ezek kozotti esetleges osszefuggeseket kell vizsgalni.
ennyi a feladat.a tuple NEM ERRE VALÓ, mert az egy egy dimenziós, fix tartalmú objektum-gyűjtemény
Tudtommal az egy dimenzio, az PONT-ot jelent, mivel a tuple az egy lista-hoz hasonlo, maris ket dimenzios, es ettol kezdve a tablazat sorait tartalmazhatja.
Szerintem félreolvastál valamit.
Biztosan nem, tobb konyvben tobb peldaban szerepelt, hogy a listak elemeit a python 'egyedi, hatekony modon' tarolja el, igy a listak kiiratasakor a sorrend mindig veletlenszeru, ha nincsen arra kenyszeritve, hogy sorba rendezve jelenitse meg az adatokat.
-
sztanozs
veterán
válasz
cousin333 #2385 üzenetére
Hozzátenném:
Raadasul szinte minden konyv azt hangsulyozza, hogyPythonbanadatbázisban az adatmegjelenites sorrendje bizonytalan, kulonbozo lekerdezeseknel kulonbozo sorrendben adja vissza az adatokat, ami szamomra erthetetlen.
Amúgy korábban (Java List<T>) objektumra én is olvastam ilyet (igaz nem könyvben, hanem fórumban, hogy a listaelemek sorrendje nem megbízható).
Általánosságban egyébként minden index nélküli iteratív típusra igaz ez (nem kötelezően, ez inkább implementáció-függő), de pl a python set/tuple pont nem ilyen. -
kezdosql
tag
válasz
cousin333 #2372 üzenetére
Na, hatha sikerul igy es most...
Igen, neked irtam, mert az altalad beirt linkek nem mukodnek.
Egyedul a cheat sheet pdf-t tudtam letolteni, azt koszonom.Az pedig szinten az en ertetlensegem lehet, hogy nem ertem, hogy mit kell hasznalni egy uj modulnal, mert nem tudom, hogy milyen statisztikai fuggvenyt vagy megoldast kell keresni a sok kozul, ezert kerdeztem a fuggveny nevere.
Elore is koszonom a valaszokat.
-
Nono0000
tag
válasz
cousin333 #2227 üzenetére
Sziasztok!
Köszönöm a segítségeteket, de teljesen más volt a probléma. Hihetetlen, hogy így jártam. Amelyik könyvtárból futtatom a kódot, ott létrehoztam egy email.py fájt, mert próbáltam emailt küldeni magamnak, ha a kód hibára fut. Ez a szerencsecsomag meg beolvasta és dobta rá a kivételeket. Ahogy átneveztem a fájlt, megszűnt a probléma.
-
axioma
veterán
válasz
cousin333 #2142 üzenetére
azon kivul hogy hianyzik a returnedString inicializalasa?
split-el az elso negy vesszonel, es a 4 elemet belerakja a tomb 1,2,3,4 helyere (a 0. hiba).
[Latnad amit a mat.szakszovegolvasason alkotott a tanar egy oldalas tetelkimondast, ami pont ugyanazt mondta, hogy minden egesz szam sorrendtol eltekintve egyertelmuen bonthato fel primhatvanyok szorzatara.] -
Siriusb
veterán
válasz
cousin333 #2036 üzenetére
Nem örököl feleslegesen, mert mindegyik alosztályt a ClassA-ból származtatom le. Pl. nem szeretném megörökölni ClassB.f1()-t, mert az eredetire van szükségem ClassC-ben, nem az itt felülírottra. Valamint emellett bizonyos körülmények esetén szükséges meghívni a ClassB.f1()-t ClassC-ből.
ClassC-nél csak azért írtam be a felmenők közé ClassB-t is, mert érzékelteteni szerettem volna, hogy annak egyik metódusára is szükségem van. -
pigster
senior tag
-
-
Victor Súgó
tag
válasz
cousin333 #1777 üzenetére
Miután rég nem használom még tanulásra sem a PyQt-t, nem tudom azokat a témákat előtúrni, ahol komoly gondot jelentett a doksi hiánya, de van sok olyan, ahol akkora az eltérés a python és a C++ implementáció közt, hogy a C++ doksi nem igazán használható. Megerőltetve a memóriámat: pl. amikor bizonyos konstansokat (signal nevek, flagek stb) kell használni, épp csak a felük nem létezik PyQt alatt, a maradék egy részét meg kicsit átkeresztelték. Vagy amikor nem mindegy, hogy cím vagy érték szerint vár paramétert egye-egy fv. vagy metódus.
Bocs, tényleg csak ennyire emlékszem belőle, és akkor a Qt5 még seholsem volt, nyomokban még előfordult rendes dokumentáció.A másik, hogy a python egy óriási segítségét, az interaktív helpet sem igazán lehet használni velük, ami tanulás, próbálgatás közben eléggé lehangoló tud lenni. Mert a helpben is csak annyit látsz, hogy see C++ docs
Mindegy, ennyit nem ér az egész, amennyit beszéltünk róla.
-
Victor Súgó
tag
válasz
cousin333 #1762 üzenetére
Azt hiszem, félreértetted a dolgot: egyszerűen ráböktem a tartalomjegyzékre valahol, egyébként semmi dolgom az adott osztállyal (egyébként ezt nem lehez/szabad példányosítani, mivel abstract
)
Csak példának hoztam, hogy legyen konkrét link is arra, amiről beszélek: nincs saját doksi.
Egyébként pont jó példát hoztam, mivel a python nem ismeri az abstract claas fogalmát, ami a C++-ban azt hiszem, létező dolog. Pythonban, amennyire tudom, az absztrakt metódusokat úgy definiálják, hogy vagy nem csinálnak semmit vagy dobnak egy exceptiont. (Sok éves emlék, lehet, hogy azóta van hozzá dekorátor)
O.K., annyira mégsem jó a példa, mert ennek nem feltétlenül az osztàly dokumentációjából kell kiderülnie.
Persze, arra jó ez a megközelítés, hogy lassan átszokjon az ember a C++-raTL;DR
amikor az ember haladna egy munkával, nem biztos, hogy örülni fog a felesleges (C++) tanulni valónak. -
Victor Súgó
tag
válasz
cousin333 #1760 üzenetére
Úgy három éve volt, amikor tanultam valamennyire a PyQt-t, nem igazán emlékszem rá, hogy konkrétan mit nem.
De nagyon sok osztály leírása csak annyi volt, hogy nézd meg a C-s doksiban.
De most direkt a kedvedért megnéztem a PyQt5 ref. guide-nak gondolt leírását: egy véletlenszerűen kiválasztott példa
A C, illetve C++ doksiban meg ugye kicsit másképp néznek ki a dolgok, kényelmetlen azt böngészni, főleg úgy, hogy nem is értek a C++-hoz egyáltalán (C-hez egy kicsit)Érzésem szerint a dokumentáció nagy része hasonló.
Kivy izgalmasnak látszik.
-
-
-
válasz
cousin333 #1749 üzenetére
Az Anaconda3-5.3.0-Windows-x86_64.exe-vel telepítettem. Van külön Spyder parancsikon, azzal beindul, nem is túl lassan
. Alapból a Navigatorból indítanám: 1-2x sikerült is, de azóta totál halottnak tűnik a navigator...
Valahogy meg lehet kerülni az anacondát, vagy a spyderhez és a jupyterhez mindenképp kell?
-
válasz
cousin333 #1672 üzenetére
pontosan ott, hogy van egy ilyen kód
ssh_tunnel.py
# -*- coding: utf-8 -*-
import getpass
import sshtunnel
class jumpserver():
"""
this class realizes the jumpserver relay to get next to the db.
methods:
run(): starts the ssh tunnel.
disc(): closes the ssh tunnel.
"""
def __init__(self):
#read jumpserver and db connection path from file
#list
with open('ssh_tunnel.cfg') as ssh_tunnel_list:
ssh_tunnel_list = [x.strip('\n') for x in ssh_tunnel_list.readlines()]
#mapping connection data to string
self.ssh_tunnel_user = ssh_tunnel_list[1].replace('jumpserver user = ', '', 1)
self.ssh_tunnel_pw = ssh_tunnel_list[2].replace('jumpserver password = ', '', 1)
self.ssh_tunnel_ip = ssh_tunnel_list[3].replace('jumpserver ip = ', '', 1)
self.db_ip = ssh_tunnel_list[4].replace('db ip = ', '', 1)
while True:
if not self.ssh_tunnel_user:
self.ssh_tunnel_user = input("Input ssh tunner user:")
if self.ssh_tunnel_user:
break
else:
break
while True:
if not self.ssh_tunnel_pw:
self.ssh_tunnel_pw = getpass.getpass("Input ssh tunner password:")
if self.ssh_tunnel_pw:
break
else:
break
def run(self):
"""
starts the ssh tunnel.
"""
#starting tunnel
self.tunnel = sshtunnel.SSHTunnelForwarder((self.ssh_tunnel_ip, 22), ssh_username=self.ssh_tunnel_user, ssh_password=self.ssh_tunnel_pw, remote_bind_address=(self.db_ip, 1521), local_bind_address=('127.0.0.1', 1521))
try:
self.tunnel.start()
except:
print("connection to jumpserver", self.ssh_tunnel_ip, "as", self.ssh_tunnel_user, "failed.")
else:
#print("connection successful")
pass
return self.tunnel
def disc(self):
"""
closes the ssh tunnel.
"""
self.tunnel.stop()és van egy main.py, amelyik meghívja ebből az osztályból instalcol, és hívogatja a metódusait.
main.py
# -*- coding: utf-8 -*-
import ssh_tunnel
js = ssh_tunnel.jumpserver()
with js.run():
if js.run():
print("connection successful")
loop = True
while loop: ## While loop which will keep going until loop = False
if stuff_2_do:
do_stuff()
continue
elif:
os.system('cls||clear')
print("bye")
js.disc()
break # This will make the while loop to end as not value of loop is set to Falseés itt van az, hogy erre a main.py-re indítva egy debuggert, a js már nem jelenik meg, mint változó/object a debuggerben.
-
válasz
cousin333 #1670 üzenetére
köszi neked is. mindkettővel ugyanaz a gondom, ha egy másik (saját) fileból importolok egy classt, és azt instancolom, azokat az objecteket már nem nagyon jelzi magától. a step into gombok is szürkék.
hogyan tudom ezt beállítani, vagy miket kell beleirkálnom a moduljaimba, hogy ez működjön?
Új hozzászólás Aktív témák
Hirdetés
- Víz- gáz- és fűtésszerelés
- Több évig húzódó per várhat az Apple-re az iPhone-ok uralma miatt
- Autós topik látogatók beszélgetős, offolós topikja
- Építő/felújító topik
- Telekom mobilszolgáltatások
- PlayStation 5
- Luck Dragon: Asszociációs játék. :)
- Autós topik
- Magas AI-költségek, csökkenő létszám: dolgozók ezreit rúgja ki a Microsoft
- Milyen videókártyát?
- További aktív témák...
- T14s Gen4 14" FHD+ IPS érintő Ryzen 5 PRO 7540U 16GB 256GB NVMe ujjlolv IR kam gar
- X1 Carbon 11th 14" FHD+ IPS i5-1345U 16GB 512GB NVMe ujjlolv IR kam gar
- Dell Latitude 5290, 12,5" HD, I5-8350U CPU, 8GB DDR4, 256GB SSD, WIN 11
- LOQ 15AHP9 15.6" FHD IPS Ryzen 5 8645HS RTX 4050 16GB 1TB NVMe magyar vbill gar
- Gigabyte B850 AI top ATX+R9900X+Kingston 128gb 5600 kit "4x32gb"
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged