Új hozzászólás Aktív témák
-
axioma
veterán
válasz EQMontoya #650 üzenetére
OK, a lenyeg hogy a megoldas egy harmadik en csak netto algoirasra - versenyek - hasznalom a pythont azt se regota, sorry, nem kellett volna beleszolnom
Szerk. korrekt, sztem volt ahol en is hasznalhattam volna csak eszembe nem jutott keresni - nekem a list, map, set es problemamentes int az ami altalaban fontos a pythonbol, de akkor mar erdemes mas nyelvi finomsagokat is megtanulni
[ Szerkesztve ]
-
csaszizoltan
csendes tag
válasz #82595328 #647 üzenetére
lista = ['Kis', '2015/1', '2015-01-02', '2016-01-10', 1000, 37, 1651]
string_lista = []
for elem in lista:
string_lista.append(str(elem))
print ', '.join(string_lista)console:
Kis, 2015/1, 2015-01-02, 2016-01-10, 1000, 37, 1651vagy egyszerűbben, de nem annyira érthetően.
lista = ['Kis', '2015/1', '2015-01-02', '2016-01-10', 1000, 37, 1651]
print ', '.join([str(elem) for elem in lista])Remélem az első kód magáért beszél, ha nem, csak nyugodtan kérdezz!
[ Szerkesztve ]
- Kivel és mit iszik Orbán? - Tök mindegy! Sörös vagy boros, csak közel legyen Soroshoz.
-
#82595328
törölt tag
válasz csaszizoltan #653 üzenetére
Köszönöm!
Ez lett a vége:with codecs.open('kesz.csv','w',encoding='utf-8') as f:
for i in lista:
f.write(', '.join([str(elem) for elem in i]) +'\n')Legközelebb használd a Programkód gombot!
[ Módosította: Karma ]
-
cousin333
addikt
válasz #82595328 #654 üzenetére
Na, milyen nagy élet lett itt hirtelen...
A Python 3-ban a print már egy függvény, így ezt is lehet használni:
with open('D:\\teszt.csv', 'w') as f:
for sor in lista:
print(*sor, sep=', ', file=f)Működik
De akkor is a pandas a legegyszerűbb, csak itt a lista egy Pandas.DataFrame objektum:
import pandas as pd
...
lista.to_csv("D:\\teszt.csv", sep=',')ui: Ezt gyorsan felejtsd el...
for i in range(len(lista)):Helyette inkább használd így:
for elem in lista:Vagy ha mindenképpen kell az index is, akkor így:
for i,elem in enumerate(lista):[ Szerkesztve ]
"We spared no expense"
-
#82595328
törölt tag
válasz csaszizoltan #656 üzenetére
Köszönöm még egyszer. Azzal végül is nem lehetett vádolni, hogy nem tudom, mit akarok.
-
#82595328
törölt tag
válasz cousin333 #655 üzenetére
"Na, milyen nagy élet lett itt hirtelen... "
Pedig az az igazság, hogy végre sikerült befejeznem életem első "programját" pythonban. Szóval egy darabig csendben leszek.
Majdnem 100 sor lett. Még egy pici grafikus felületet is gyártottam(átvettem valahonnan) neki. Igaz látszik, hogy nagyon kezdetleges, tele van gyerekbetegségekkel, de kész van. Az alap problémát megoldja.A canvas modult megjegyzem. Bár egyelőre az osztályok jelentik számomra a következő lépést. Modulból így is épp eleget használtam. Viszont osztályok nélkül nem tudok tovább lépni.
-
Oryctolagus
tag
Sziasztok!
Akadt egy kis problémám az alábbi kóddal.
Ez egy jelszó készítő program, a problémám pedig az, hogy amikor menteni akarom txt-be akkor nem azt menti ami az utolsó képernyőre kiírott jelszó volt volt.
Kellene egy új változó aminek az értéke mindig az utolsó kiírott jelszó lesz?Köszönöm a segítséget!
import random
import string
import sys
import os
s=string.digits+string.punctuation+string.ascii_letters
q=str(''.join(random.sample(s,10)))
print ('Az Ön jelszava')
print (''.join(random.sample(s,10)))
kerdes=input("Másikat, y or n?")
while kerdes==('y'):
print (''.join(random.sample(s,10)))
kerdes=input("Másikat, y or n?")
else:
kerdes==('n')
#print('Köszönöm, hogy ezt a programot választotta.')
mentes=input('Szertné menteni .txt fájlban?, y or n?')
if mentes==('y'):
h=input('A fájl helye legyen:')
os.chdir(h)
f=open(input("Adja meg a fájl nevét:")+'.txt','w')
f.write((''.join(random.sample(s,10))))
f.close()Per aspera ad astra.
-
Noddy
senior tag
válasz Oryctolagus #659 üzenetére
Ha az elkészült jelszó a q változóban van, miért nem azt íratod ki és miért generáltatsz újat a .join(random.sample(s,10) sorral?
Nem úgy kellene, hogy:
q=str(''.join(random.sample(s,10)))
print ('Az Ön jelszava')
print (q)És ugyan így a fájlba íratásnál is.
[ Szerkesztve ]
Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
Noddy
senior tag
válasz Oryctolagus #659 üzenetére
import random
import string
import sys
import os
s=string.digits+string.punctuation+string.ascii_letters
q=str(''.join(random.sample(s,10)))
print ('Az Ön jelszava')
print (q)
kerdes=input("Másikat, i vagy n?")
while kerdes==('i'):
q=str(''.join(random.sample(s,10)))
print (q)
kerdes=input("Másikat, i vagy n?")
else:
kerdes==('n')
mentes=input('Szeretné menteni .txt fájlban?, i vagy n?')
if mentes==('i'):
h=input('A fájl helye legyen:')
os.chdir(h)
f=open(input("Adja meg a fájl nevét:")+'.txt','w')
f.write(q)
f.close()
print('Köszönöm, hogy ezt a programot választotta.')
print('Köszönöm, hogy ezt a programot választotta.')Elvileg így most működik, de az os.chdir() nem tudom hogy működik konzolban, mármint, hogy kell megadni, hogy hova mentsen.
Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
Oryctolagus
tag
Egy kicsit bekavartam már magam a végére, kezdő vagyok.
Jó lenne egy emelt szintű érettségi és gondoltam belevágok.
Kerestem olyan témát ami érdekel.
Ez a jelszó generáló program jutott először eszembe.
Lehetne még fejlesztgetni, de már örültem, hogy egy majdnem jó progi elkészült.Per aspera ad astra.
-
Noddy
senior tag
válasz Oryctolagus #662 üzenetére
Szerintem jó kis programot készítettél Én is most ismerkedek a pythonnal és én se tudtam volna elsőre tökéletesen megcsinálni, pl a random string generálást eddig nem ismertem. Csak feltűnt, hogy bár létre hoztad a q változót nem hivatkoztál rá.
Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
Oryctolagus
tag
Jó azért be kell vallanom, hogy nem saját fejből dolgoztam.
Csak azt tudtam, hogyan kellene működnie és mivel lehetne megvalósítani.
Lehet még bennem van az a fél év az egyetemen, amikor c++ kellett tanulnom.
Nagyon nagyon büszke lennék magamra, ha az érettségi feladatokat meg tudnám oldani.Per aspera ad astra.
-
justmemory
senior tag
válasz EQMontoya #664 üzenetére
Sziasztok!
Szerintem sincs szükség arra, hogy ha már "else", akkor a "kerdes" változónak másik értéket adjunk...
Illetve nem tudom, hogy a sys miért van importálva, használva nincsenA fájl mentését én valószínűleg gtk-val oldanám meg, mert így ha terminálban adja meg a fájlnevet a user, akkor két dolog van, szerintem: vagy az abszolút elérési utat gépeli be (macera), vagy abba a könyvtárba fogja menteni a txt fájlt, amelyben a script fut...
Tennék bele egy olyan apróságot is, hogy az "i" és "n" betűkön kívül mást ne tudjon megadni a user, mert ebben a formában ha nem "i"-t nyom, azt "n"-nek fogja érzékelni a program.
Az elejére valószínűleg betennék még annyit, hogy
#!/usr/bin/python - nem feltétlenül szükséges, csak könnyebb futtatni;
#-*- coding:Utf-8 -*-; nem tudom, hogy ez utóbbi feltétlenül kell-e; python 2.5-öt használok (régi, tudom, de ez van), ott az ékezetes karakterek miatt kell; nem tudom, hogy a 2.7 vagy akár a 3 tudja-e kezelni alapból az ékezetes karaktereket.[ Szerkesztve ]
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
cousin333
addikt
válasz justmemory #666 üzenetére
Az a 12 karakteres behúzás csak engem zavar? Már a 8-at is sokallom, a 2 meg kevés, én a 4-re szavazok. Természetesen szóközzel, nem tabulátorral.
"A fájl mentését én valószínűleg gtk-val oldanám meg"
Amit írsz, az igaz, de egy szkriptnyelvnél a GUI szerintem minimum a második lépés, vagy még későbbi. Akkor is inkább a tk-t próbálnám ilyen egyszerű feladatra, mert az része az alap Python telepítésnek.
"Tennék bele egy olyan apróságot is, hogy az "i" és "n""
Meg a zárójelezés is teljesen felesleges az == után. Kivéve talán ezt az esetet:
if kerdes in ('i', 'n'):
"#!/usr/bin/python - nem feltétlenül szükséges, csak könnyebb futtatni;"
Windows alatt is?
"#-*- coding:Utf-8 -*-; nem tudom, hogy ez utóbbi feltétlenül kell-e"
Python 3 alatt nem kell, az már tudtommal full Unicode, ékezettel, meg amit akarsz.
Még a fájlkezelésnél használnék context managert. Szerintem szebb, elegánsabb, és minden körülmények között automatikusan bezárja a fájlt:
with open(fajlnev, 'w') as f:
f.write(akarmi)[ Szerkesztve ]
"We spared no expense"
-
justmemory
senior tag
válasz cousin333 #667 üzenetére
Nem csak téged zavar Mondjuk ezeket már nem is néztem (zárójel, szóközök, stb.).
Én korábban 2 szóközzel írtam a scripteket, aztán egy programozó cimborám mondta, hogy 4-el kellene. Viszont mivel vim-et használok, a tabulátort állítottam át 4 szóköznyire alapértelmezetten... Ebből esetleg lehet gond a behúzások érzékelésekor, főleg, ha utólag módosítok a korábbi scripteken... Nem tudom mi legyen, Tab-ot nyomni könnyebb, mint 4 szóköztA GUI-val kapcsolatosan igazad lehet; mondjuk nekem a tk csak minimálisan "jött be", hamar elkezdtem a gtk-t használni inkább. Azért gondoltam csak a GUI-ra, mert ha valódi program lesz a scriptből, szerintem a user-ek számára egyszerűbb így használni, mint gépelni, hogy pl. /home/Desktop/akármi/akármimimimimi/valami.txt.
Windows alatt... jah, jogos Annyira alapvetés már számomra a Linux, hogy a Windows-ról hajlamos vagyok megfeledkezni, ami ilyenformán nyilván nem jó
Igen, a with is hasznos, valóban
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
cousin333
addikt
válasz justmemory #669 üzenetére
Na igen, a Python más nyelveknél is sokkal háklisabban reagál a vegyesen alkalmazott behúzásokra...
Az általam használt szövegszerkesztők (Notepad++, Spyder, IPython... stb.) szinte mindegyikének van olyan funkciója, hogy a Tab-ot automatikusan a kívánt számú (esetemben 4) szóközre cseréli. A behúzás csökkentése is megoldható Shift + Tab használatával.
Ami a GUI-t illeti: én sem használom a tk-t, sőt, mást se nagyon (kivéve a Jupyter Notebook-ot). Csak azért javasoltam, mert az alapból része a Python telepítésnek és ilyen egyszerűbb feladatra vélhetően ez a legjobb.
Valóban egyszerűbb lehet kiválasztani a fájlt, mint begépelni az egész elérési utat, de a szkriptnyelves és a GUI-s implementálásnál csak egy rosszabb van: a kettő vegyítése - legalábbis ha utóbbit vegyítjük az előbbibe. Egy GUI implementálása más szemléletet igényel, hiszen "folyamat-alapú" működés helyett eseményvezéreltté válik. Nem is beszélve az integráláshoz szükséges, arányaiban sok extra kódról.
Ha pedig GUI, akkor én nem csak a fájl-választót írnám bele, hanem az egészet, a generálás gombtól kezdve a kimeneti címkéig. Úgy legalább megspórolná az eléggé esetleges while ciklust is.
[ Szerkesztve ]
"We spared no expense"
-
justmemory
senior tag
válasz cousin333 #670 üzenetére
Igen, most én a Tab-ot 4-re állítottam. Régebben a gedit-et használtam, de átszoktam a vim-re...
A GUI-t illetôen igazad van, én is az egészet abban írnám Egyébként ami kizárólag a fájl mentéséhez kell, az minimális plusz kódot igényel; én egy sima FileChooserDialog-ra gondoltam. Bár tény, hogy vegyíteni lehet nem a legjobb, már csak azért sem, mert ha valaki még a tanulás elején van, akkor valószínûleg korai
Sajnos az eseményvezérléses és objektumorientált programírást nagyon gyakorolnom kellene
A GUI-t én arra használom, hogy a telefonomra írjak hasznos appokat
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
cousin333
addikt
válasz EQMontoya #672 üzenetére
Szerintem is talán a legprofibb eszköz Python fejlesztéshez (is), ha nagy projektem lenne, valószínűleg abban nyomnám. Kis projektekhez viszont - épp az autocomplete és a hozzá hasonló funkciók miatt - elég fejnehéznek tűnik. Értsd: túl komplex egy pár soros programhoz (a telepítője 160 MB) és túl sokat molyol a háttérben, amitől kissé darabosnak érződik a számomra.
Aki nem ismerné: PyCharm
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz justmemory #671 üzenetére
Az objektum orientált Python programozáshoz egy remek video:
Python's Class Development Toolkit[ Szerkesztve ]
"We spared no expense"
-
justmemory
senior tag
Köszönöm a tippeket!
--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
EQMontoya
veterán
Általánosságban értettem: alapvetően nem szeretünk interaktív programot írni, ami b..tatja a usert, hogy:
-Add meg ezt
-Biztos ezt akarod?
-De tényleg?
-Fűzfán fütyüljek a végén?Akkor inkább: foo --input_file ./bar.txt, --force --fuzfan_futyul
Aztán enter, és megtörténik minden.Same rules apply!
-
AeSDé Team
őstag
Vajon hogyan valósíthatnám ezt meg?
Szeretnék egy színes LED-et relatíve sötét háttér mellett követni webkamerával, és kalibrálható koordináta transzformációs megoldással az egeret mozgatni vele.
Úgy néztem hogy az OpenCV bővítmények bírnak hasonló képességekkel, valaki tudna tippet adni hogy merre induljak el? Bármilyen webkamera ideális lehet vagy vannak fejlesztő-barátabb példányok? Izgalmas projekt lenne a nyárra.Később érdekes lehetne egy pisztoly-szerű hardvert építeni hozzá ami több színkódra is képes, pl. jobb és bal kattintások is jelezhetőek lennének. De egyenlőre maradjunk 1 színnél.
-
cousin333
addikt
válasz AeSDé Team #679 üzenetére
Az OpenCV tényleg alkalmasnak látszik a feladatra, én ezzel kezdeném: [link]
Mivel itt arról van szó, hogy a kamera képét képként beolvasod, majd azt elemzed, szerintem nincs különösebb szükség komolyabb támogatásra.
Nem tudom, mit és hogyan akarsz irányítani vele, de egér és billentyűzet automatizált kezelésére egy lehetséges opció a pyAutoGUI.
"We spared no expense"
-
AeSDé Team
őstag
-
DrojDtroll
addikt
Nem nagyon sikerül egy rendszerre feltepiteni egy python könyvtárat.
Ez Linuxos vagy python os kérdés inkább?
-
Noddy
senior tag
Sziasztok!
Kipróbáltam az argparse dolgot de egy olyan problémába ütköztem, hogyha nem adok meg értéket akkor nem fut le a program, pedig elvileg van egy olyan opció, ha nem adok meg semmit akkor is lefut a program egy default értékkel. De ez nekem nem működik... Mi lehet a baj?
#degrees to radian calculator
import argparse
import math
parser = argparse.ArgumentParser()
parser.add_argument("degree", help="This program calculate degree to radian.", default=0, type=int)
parser.add_argument("minute", help="You can add Minute value.", type=int, default=0)
parser.add_argument("secundum", help="You can add secundum value.", type=int, default=0)
args = parser.parse_args()
a2=args.minute/60 #minute to degree
a3=(args.secundum/60)/60 #secundum to degree
a=float(args.degree+a2+a3)
b=(a*math.pi)/180
print('The result is %lf radian.' %b)Megadom, hogy a default 0 legyen, de mégse működik, pedik jó lenne, ha pl. csak fokot akarok számolni akkor ne keljen a percet és a másodpercet is megadni és további variációk.
Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
EQMontoya
veterán
Kimaradt a dest, nem tudja hová tárolni, így nem fog működni.
parser.add_argument("--degree", dest='degree', help="This program calculate degree to radian.", default=0, type=int)
parser.add_argument("--minute", dest='minute', help="You can add Minute value.", type=int, default=0)
parser.add_argument("--secundum", dest='secundum', help="You can add secundum value.", type=int, default=0)Így már működni fog bármilyen kombinációval, pl. lehet olyan, hogy csak percet adsz meg, vagy fokot és másodpercet, bármi.
Azért van még baj, az egészosztások miatt a percek és a másodpercek nem működnek, de ezt nem lövöm le előre, ebből tanulsz.
Same rules apply!
-
Noddy
senior tag
válasz EQMontoya #685 üzenetére
Köszi!
Így már működik, mondjuk korábban annyi volt, hogy csak beírtam a számértékeket megfelelő sorrendben:
program.py 180 23 40 és számolta is, de most program.py --degree 180 --minute 23 --secundum 40
Persze legalább működik
Az a2,a3 és b változónak float típust adtam most már meg, elvileg nekem most így működik. Érdekes hogy nem találtam olyan netes konvertert ami fok, perc, másodpercet számol radianba csak fok-radiant számolót, biztos van csak nem találtam.Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
Noddy
senior tag
válasz DrojDtroll #683 üzenetére
Ez itt inkább programozós topic, lehet a linuxosban több sikerrel jársz. Nekem ubuntura a sima
sudo apt-get install python3
paranccsal gond nélkül felment.[ Szerkesztve ]
Jesus my savior, not my religion. - Jéghegy nem talál ibolyát.
-
EQMontoya
veterán
Tudsz olyat, hogy megadsz rövidebb verziót az argparse-nak.
Pl. így:
parser.add_argument('--debug','-d', dest='debug', action='store_true', help='Debug - print the structure of order')
parser.add_argument('--profile','-p', dest='profile', action='store_true', default=False, help='Show time spent in each phases')
parser.add_argument('--id','-i', help='ID list - separated by \',\'', required=True)mondjuk korábban annyi volt, hogy csak beírtam a számértékeket megfelelő sorrendben
Persze, így viszont nem tudsz opcionális argumentumokat megadni.
Tehát ezzel így az a baj, hogy mondjuk akkor is ki kell ínrod mindhármat, ha mondjuk 17 szögmásodpercet szeretnél átváltani.[ Szerkesztve ]
Same rules apply!
-
cousin333
addikt
válasz DrojDtroll #683 üzenetére
Ennyi erővel már a konkrét problémát is beírhattad volna ide
Ez olyan "Megkérdezhetem, hogy mennyi az idő? Persze, kérdezd csak meg nyugodtan!" típusú hozzászólás volt.
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz DrojDtroll #692 üzenetére
Tehát ha jól értem, egy virtuális környezethez volt fenn a modul (nem használtam még a
virtualenv
-et), indításkor viszont a normál környezet futott, ami persze nem látta.Úgy látom reszeltek a programkód beágyazáson. Színes meg minden...
[ Szerkesztve ]
"We spared no expense"
-
DrojDtroll
addikt
válasz cousin333 #693 üzenetére
Pontosan így van ahogy írod.
>>> from ev3.lego import *
>>> d = MediumMotor()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "build/bdist.linux-armv5tejl/egg/ev3/lego.py", line 217, in __init__
File "build/bdist.linux-armv5tejl/egg/ev3/ev3dev.py", line 330, in __init__
TypeError: 'NoneType' object has no attribute '__getitem__'Ez milyen hibára utal?
-
cousin333
addikt
válasz DrojDtroll #694 üzenetére
Típushibára
Kattints rá a linkre (vagy keresd meg a kérdéses fájlok kérdéses sorát), hogy lásd, mit csinál. Én ennyi infóból azt mondanám, hogy a
MediumMotor()
osztály példányosításakor lefut az__init__()
függvény, ami valamit inicializálna, pl. egy szótár változóból (dictionary) olvasna ki egy elemet, de a szótár helyett egyNone
-t kap. Nem lehet, hogy valamilyen paramétert kéne átadni az osztálynak?Mod: a válasz elvileg nem. Én ezt találtam: [link], bár gyanítom, hogy ez a kód nem teljesen ugyanaz a verzió, mint a tied, mert ennek a sornak le se szabadna futnia, max a 334-től kezdve, de szerintem abban sem indokolja semmi ezt a hibát.
[ Szerkesztve ]
"We spared no expense"
-
sonar
addikt
Hi
Nem kimondottan python, de hátha.
Verzió követést ti hogyan oldjátok meg?
Van egy két scriptem amit két három havonta ki kell egésziteni. Eddig kommentbe irogattam meg release után egy zippelt verziót lementek magamnak.Illetve van-e vmi olyan oldal ahol rendszeresen mutatnak be python-os modulokat technikákat...
(most nem a python.org -ra gondolok)A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
-
sonar
addikt
Kössz!
ez a git akkor verzió követő, a repó meg ahova feltolja a kódot. Gondolom akkor ezt lehet lokálisan is csinálni.
Ebbe akkor bele kell ásnom magam egy pöttyet.A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!
Új hozzászólás Aktív témák
- Xbox Series X|S
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Adatmentés - HDD - SSD - Flash
- Óra topik
- Gitáros topic
- VR topik (Oculus Rift, stb.)
- Nem indul és mi a baja a gépemnek topik
- Autós topik látogatók beszélgetős, offolós topikja
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- The Crew sorozat
- További aktív témák...