Hirdetés

2024. április 27., szombat

Gyorskeresés

Hozzászólások

(#851) Mr Dini válasza Mr Dini (#850) üzenetére


Mr Dini
addikt
LOGOUT blog

Ok, rájöttem közben. A kv-t kell megtanulnom! :)

Hogy hívják az éhes horgászt? Gyere Pista, kész a kaja!

(#852) Willy_Billy


Willy_Billy
csendes tag

Sziasztok! Elkezdtem tanulni a Python nyelvet, és már az elején adódott egy kis gondom:

a változóknál járok, szeretnék értéket hozzáadni, az alábbi példát veszem alapul:

>>> n = 7
# n-nek a 7-et adjuk értékül
>>> msg = "Mi újság ?"
# A "Mi újság ?" értéket adjuk msg-nek
>>> pi = 3.14159
# pi nevű változóhoz hozzárendeljük az értékét

Az n-t hozzáadja, a pi-t is hozzáadja, de az msg-t nem hajlandó, invalid syntax üzenet fogad, mégis mit csinálok rosszul?

msg = után bármit írok mindvégig syntax error lesz.

SyntaxError: invalid syntax
>>> msg = mi ujsag
File "<stdin>", line 1
msg = mi ujsag

[ Szerkesztve ]

(#853) Willy_Billy válasza Willy_Billy (#852) üzenetére


Willy_Billy
csendes tag

Ez aztán mégiscsak megoldódott, most a "print"-tel vannak gondjaim:

>>> print 17 + 3
File "<stdin>", line 1
print 17 + 3
^
SyntaxError: Missing parentheses in call to 'print'

Közben rájöttem, párszori próbálkozás után, ha zárójelbe írom ami a print után van, akkor gond nélkül megjeleníti az adatokat. :)

bocs, a floodért

[ Szerkesztve ]

(#854) cousin333 válasza Willy_Billy (#853) üzenetére


cousin333
addikt

Az első esetben nyilván az volt a probléma, hogy a szöveget nem tetted idézőjelek közé. Egyébként a "hozzáadás" mást jelent, használd inkább a hozzárendelés vagy értékadás kifejezéseket.

A második eset arra mutat rá, hogy Python 3.x-es verzióját használod, az általad nézegetett példák viszont a 2.x-hez vannak. Nos a print az egyik leggyakoribb és leglátványosabb különbség. :)

"We spared no expense"

(#855) Orionhilles


Orionhilles
senior tag

Sziasztok!

Kellene egy kis segítség:
print str(stringem)[:int(n)]

A [:int_stb_] rész mit jelent? leginkább az int jelentésére vagyok kíváncsi!

Válaszokat előre is köszi!

– Yet, thou serves with thine eyes clouded in chaos. Thou, bound in the cage of madness. I am he who commands those chains – Fate/Zero Berserker Mad Enchantment

(#856) EQMontoya válasza Orionhilles (#855) üzenetére


EQMontoya
veterán

int(n) -> integerré konvertálja n-t, ami esélyesen string. Legalábbis gondolom.
Ez elég csúnya megoldás, mert ez dobhat exception-t, és ez esetben nem írsz ki semmit.

A [:n] (itt n már ugye int) pedig annyit fog csinálni, hogy 0 és n-1. karakter közötti részét kiírja a stringednek.

Same rules apply!

(#857) Orionhilles válasza EQMontoya (#856) üzenetére


Orionhilles
senior tag

Köszönöm szépen!

Mit változtassak meg ahhoz, hogy csak x-edik karaktert írja ki a stringemnek? Mert ha most n helyére beírom pl. hogy 3, akkor 0-3.-ig írja ki, és nekem nem erre van szükségem.

Előre is köszönöm a választ! :R

– Yet, thou serves with thine eyes clouded in chaos. Thou, bound in the cage of madness. I am he who commands those chains – Fate/Zero Berserker Mad Enchantment

(#858) cousin333 válasza Orionhilles (#857) üzenetére


cousin333
addikt

Javaslom, hogy járd körül egy kicsit a szeletelés témakörét: [link]

Ebben az esetben így néz ki:

lista[-tól:-ig]

Tehát egy tartományt választ ki, nem egy elemet. A 3. elemhez elég csak egy indexet megadni:
lista[2]

Ez valóban a 3. elem lesz, mert a számozás nullától indul. Fentebb listát írtam, de ez ugyanígy működik sztringeken is. Pl.

>>> a = "Szöveg"
>>> a[1:4]
'zöv'

Az 1:4 tehát az második elemtől a negyedikig lévőket írja ki. Kicsit fura talán, de az alábbi ábra nekem is segített:

[ Szerkesztve ]

"We spared no expense"

(#859) EQMontoya


EQMontoya
veterán

Ebbe most futottam bele, kellett egy dict, ami a c++-os maphez hasonlóan működik, és megtaláltam az ehhez kellő python függvényt:
setdefault(key[, default])¶
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

Asszem, mind az elnevezésért, mind a leírásért járna a nyers hal a készítőknek.

Same rules apply!

(#860) hallador


hallador
addikt

Sziasztok,

A Programming in Python 3, Mark Summerfield féle könyv mennyire aktuális ma? 2009-ben adták ki. Azt nézegettem, hogy eléggé beszédes.

Köszönöm szépen.

The further a society drifts from truth, the more it will hate those that speak it. (George Orwell) [Work Machines: HP EliteBook, HP ProBook & Linux Mint 20 ; Entertainment: Apple Macbook AIR M1]

(#861) cousin333 válasza hallador (#860) üzenetére


cousin333
addikt

Magát a könyvet nem ismerem, de a Python 3 azóta sem változott jelentősen, inkább csak új funkciók, modulok kerültek bele (pl. async io) a korábbiak mellé.

"We spared no expense"

(#862) axioma


axioma
veterán

Ez melyik side effect? Mar ugy hozzaszoktam (a #@%&#@ szivatos << es >> zarojelezesen tul), hogy nem kell varatlan hatasra szamitanom, de egy versenyfeladatban kulonbseg lett:

if a%2==1 != winningSit(n/a):
wins.add(n)

Ugyanis ezzel meg azt csinalja amit akarok, nevezetesen a ket boolean xor-ja eseten belepni az if-be:

isOdd=a%2==1
isWin=winningSit(n/a)
if isOdd!=isWin:
wins.add(n)

Az a egy egesz valtozo, a winningSit meg tutira True vagy False erteket ad vissza minden egeszre (python 2.7.6, azert egy osztasjel).

[ Szerkesztve ]

(#863) cousin333 válasza axioma (#862) üzenetére


cousin333
addikt

Mi a típusa a két változónak? Mit csinál pontosan a winningSit függvény? Én kipróbáltam valami hasonlót Python 3 alatt és gond nélkül működött.

"We spared no expense"

(#864) Vesporigo


Vesporigo
aktív tag

Sziasztok,

Valakinek van bármi infója róla, hogy hol lehet kapni Koós Antal Python a gépben c. könyvét nyomtatott formában? Csak elektronikusan találtam meg. Továbbá mi a véleményetek erről a könyvről? Még csak most kezdtem a Pythont, jelenleg Gérard Swinnen Tanuljunk meg programozni Python nyelven c. könyvét olvasom (bár többek szerint eléggé elavult, nekem nagyon tetszik eddig), plusz egy Coursera tanfolyamot csinálok. A Koós-féle könyv mennyire lenne segítségemre a tanulásban?
Ha már itt tartunk, angol nyelven szerintetek melyik a legjobb könyv python tanuláshoz?
Bocsi a sok kérdésért, nagyon érdekel! :)
Előre is köszi! ;)

(#865) axioma válasza cousin333 (#863) üzenetére


axioma
veterán

Olyan kicsi a kod, hogy akar be is szurhatom. Az inputot garantaljak hogy a leirasnak megfelel. Feladat: [link]
Megoldasom egy pontban logikailag hibas, igy bizonyos tipusu (ritkabb) inputtipusra rossz eredmenyt ad, de azon most lepjunk tul, meg a rossz stilusu berogzodeseken is (ez most nem percre ment de van hogy igen es ahhoz igazodom), csak az if kiertekeleset nezzuk, mert ebben a formaban tovabbi hibas valaszt kaptam, a lenti javitassal meg azok jok lettek:
wins=set([])
arr=[]
def winningSit(n):
if n in wins:
return True
for a in arr:
if n%a==0:
if a%2==1 != winningSit(n/a):
wins.add(n)
return True
return False

n,m=map(int,raw_input().split())
arr=map(int,raw_input().split())
wins=set(arr)
print "First" if winningSit(n) else "Second"

Szoval ezt szeretnem a tapasztaltabbaktol megkerdezni, hogy me'gis mit nem vettem figyelembe. (Amugy az is eleg javitas, ha zarojelbe teszem az (a%2==1) reszt, legalabbis eredmeny alapjan ugy tunik.)

[ Szerkesztve ]

(#866) cousin333 válasza axioma (#865) üzenetére


cousin333
addikt

A zárójeles megjegyzésed (szó szerint) adja meg a választ. A Python támogatja az összehasonlítások összefűzését, például ez teljesen rendben van:

if 3 < a < 10:
print('Közötte van')
else:
print('Nincs közötte')

A 2.7-es Pythonban így írnak erről: [link]
Tehát ez azonos azzal, hogy 3 < a és a < 10, valamint az egész sor rögtön hamis lesz, ha a%2 egyenlő nullával.

Ezek alapján a kérdéses sorod azt jelenti, hogy a%2 egyenlő 1 és 1 nem egyenlő winningSit(n/a). Ha kiteszed a zárójeleket (ahogy írtad), akkor már azt jelenti, amire te gondoltál.

[ Szerkesztve ]

"We spared no expense"

(#867) axioma válasza cousin333 (#866) üzenetére


axioma
veterán

Oh, pedig az 1<a<=9 alakot rendszeresen hasznalom, de egyenlosegnel, nemegyenlosegnel eszembe se jutott! Ezer hala, ezentul figyelni fogok [tulkepp a xor atirasanal].

(#868) cousin333 válasza axioma (#867) üzenetére


cousin333
addikt

Azt hiszem a helyes megoldás ez lenne, ami mellesleg megszünteti a félreértéseket is:

if a%2 == 1 is not winningSit(n/a):

Egy másik érdekesség számomra ez a két sor:

n,m=map(int,raw_input().split())
arr=map(int,raw_input().split())

Nekem valahogy nem a map jut eszembe megoldásként, sokkal inkább a list comprehension, különösen a második sornál:

n, m = (int(i) for i in raw_input().split())
arr = [int(i) for i in raw_input().split()]

[ Szerkesztve ]

"We spared no expense"

(#869) axioma válasza cousin333 (#868) üzenetére


axioma
veterán

Koszi a kiegeszitest!
Igazabol mikor java-skent elkezdtem pythonban versenyfeladatozni, akkor nem tutorial-oztam, hanem masik versenyzotol szedtem ki az input beolvasast, azt se tudtam akkor, hogy mi az a map... [pl. akkor a map sort modositgattam, h int/float sot volt hogy str-t irtam oda ;-)] persze azota [lassan 2 eve? huhh] ennek, meg az ilyeneknek utananeztem, meg hasznalom a listagyartast for-ral is, de ez az input igy ragadt meg. Lehet, hogy nem a leghatekonyabb... vegulis atszokhatok. De nekem az ilyen 'best practice-ek hianyoznak, mas python kodot ritkan latok a magamen kivul. [Peldaul h miert ugy irtad, h az elso tuple, nem list...]
Amugy meg map-pel rovidebb begepelni ;-)
A xor meg plane jogos, kosz.

+1. Nekem ilyen beolvasos progik kellenek, a verseny futtatokornyezet brtolja automatikusan az inputot, de a pycharm-ban nem jottem ra, hogy lehetne a weboldalrol copy-zott inputot betolni debug kozben [rendszeresen a kodba editalom, a minta kicsi szokott lenni]. Probaltam a futtatoablakban beirni, kezzel es enterrel megy, a beillesztesnel viszont 1 sorkent erkezik a kodba, pedig a beillesztesnel jol tordelve latom. Erre nincs esetleg tippje valakinek?

[ Szerkesztve ]

(#870) cousin333 válasza axioma (#869) üzenetére


cousin333
addikt

Félreértés ne essék, a te megoldásod is teljesen jó, sőt, rövid tesztem alapján valamivel gyorsabb is. Csak nekem meg valahogy a list comprehension rögzült, talán azért, mert a Java nem fertőzött meg :).

A tuple meg azért az, mert elvégre tuple unpacking-ről van szó :). Egyébként teljesen jó a lista is.

"We spared no expense"

(#871) Pulsar


Pulsar
veterán

Sziasztok,

Nem vagyok egy nagy programozó, de a python tetszik, és egesz jól el boldogulok az alapokkal, viszont most elakadtam. Szeretnék ugy megadni egy változót hogy az futtatás parancsakor kerüljön hozzá. Tehát python akarmi.py alma
És itt az alma lenne a változó amit beviszek a kódba. Ezt hogyan tudnám mecsinálni?
Illetve jol selytem hogy ezt hivják globális változoknak? Ha igen, akkor google-val sem jutottam előrébb a megoldashoz :D
Előre is köszönöm a segitseget. :R

(#872) axioma válasza Pulsar (#871) üzenetére


axioma
veterán

Varj, a valtozonak az erteket akarod futtatasi parameterbol feltolteni, nem? A valtozot letrehozod valamilyen neven, nem azt adod kivulrol a programnak...
Keresni is igy kene, nem a valtozo tulajdonsaga ez, hanem a parameterek atvetelenek szintaktikaja kell szerintem neked.
Szerk. sys.argv, de ez mint mashol is tartalmazza a futtatott script neve't. Igy az elso argumentum [nem param a jo terminologia, bocs] az a sys.argv[1]
sonar: kosz, mobilrol lassu voltam...

[ Szerkesztve ]

(#873) sonar válasza Pulsar (#871) üzenetére


sonar
addikt

system argument a becsületes neve. [link]

A tudást mástól kapjuk, a siker a mi tehetségünk - Remember: Your life – Your choices!

(#874) Pulsar


Pulsar
veterán

Mint emlitettem nem.vagyok nagy programozó, így bocsánat ha nem jól fogalmazok. :) :R
Köszönöm a segitséget, remélem igy már menni fog :) :R

(#875) EQMontoya válasza Pulsar (#874) üzenetére


EQMontoya
veterán

A szép megoldás erre az argparse.
Ezzel tudsz olyanokat csinálni, hogy pl.:
desztillalo.py --gyumolcs gumicsizma --target palinka --force

Same rules apply!

(#876) #82595328


#82595328
törölt tag

Egy nagyon érdekes (számomra nagyon kellemetlen) problémába futottam bele.
A történet:
Írtam egy kisebb programot, ami egy tabulátorral elválasztott szövegfájlból beolvassa sorokat, kiválaszt belőle elemeket, berakja egy listába, azt pedig kiírja egy másik fájlba. Igazából hobbiból, de munkahelyre. A programot Windows 10 írtam, hibátlanul lefutott. Lefordítottam. A munkahelyemen lefuttattam Windows 7-en. Nem működött, vagyis kimaradtak sorok. Jó. Akkor csináljuk másképp. Átírtam ';'-vel elválasztott .csv-re. Otthon hibátlanul működik Windows 10-n. Munkahelyen megint nem. Megint kimaradnak (azt hiszem) ugyanazok a sorok. Először azt gondoltam, hogy a lefordított .exe fut valami hibára, de ezt így nehéz tesztelni, hogy nincs hibaüzenet, ezért tegnap otthon felraktam a Windows 7-t. A hiba .py fájl futtatásakor is jelentkezett. Következő ötletem az volt, hogy a hibakezelés miatt a listaelem változó nem jön létre. Tévedtem, létrejön. Eddig jutottam tegnap. Az a gond, hogy innentől már csak 2 helyen lehet hiba, és egyik sem a programom hibája.
1. Az append fut hibára
2. A kiírás fut hibára.
Ezt még kiderítem.
A kérdésem az, látott már valaki ilyet? Hogy ugyanaz a program ugyanazt a fájlt beolvasva Windows 10-n eltérő eredményt ad mint Windows 7-n?
Ja és nem kódolási hiba. utf-8-cal is ugyanezt csinálja.

foLista = []
with open(name, 'r',encoding="latin-1")as f:
for sor in f:
try:
sor = sor.strip().split(';')
if sor[0] == 'EMPLOYEE:':
neve = sor[4].strip().split(',')
vezeteknev = neve[1]
keresztnev = neve[0]
nev = (vezeteknev+' '+keresztnev)
if sor[0][0] == '2' and len(sor[9]) == 0:
datum = sor[0]
if float(sor[12][-1]) >= 0:
cegnev = sor[0]
kezdes = sor[8]
vege = sor[10]
orak = sor[12]
megjegyzes = sor[13]
listaelem= (nev, datum, cegnev, kezdes, vege, orak, megjegyzes)
foLista.append(listaelem)
except:
continue
lista = list(foLista)
with open('kesz.csv', 'w', encoding="latin-1") as f:
for i in lista:
f.write(';'.join([str(elem) for elem in i]) + '\n')

[ Szerkesztve ]

(#877) #82595328 válasza #82595328 (#876) üzenetére


#82595328
törölt tag

Közben megoldottam, hátha valakit érdekel.
A probléma az volt, hogy a
listaelem= (nev, datum, cegnev, kezdes, vege, orak, megjegyzes)
változóba bekerült megjegyzés string néha " is tartalmazott azaz így nézett ki:
' "szöveg' és ez meghülyítette a .join-t. Mondjuk még mindig fura, hogy Win7-n ez miért baj Win10-n meg miért nem. Na mindegy, javítottam az importot. Így már működik.

[ Szerkesztve ]

(#878) Szenty válasza cousin333 (#870) üzenetére


Szenty
tag

A map azért gyorsabb, mert C-ben van implementálva (cserébe kevésbé olvasható). A list comprehension általános használatra teljesen jó.

(#879) Szenty válasza axioma (#869) üzenetére


Szenty
tag

Javasolt olvasmány: Python Patterns - An Optimization Anecdote

[ Szerkesztve ]

(#880) axioma válasza Szenty (#879) üzenetére


axioma
veterán

Koszi, jo! Igaz, a versenyeken azert ilyen 2-5 konstans szorzok ritkan szamitanak, az algon all vagy bukik (nagyordo). De az array uj nekem, utananezek.

(#881) EQMontoya válasza axioma (#880) üzenetére


EQMontoya
veterán

Ez nem feltétlen igaz, az algoritmustól meg az implementációtól is sok függ. A cikk tényleg jó.

Same rules apply!

(#882) axioma válasza EQMontoya (#881) üzenetére


axioma
veterán

Nyilvan vannak extrem esetek: anno amig az xrange() helyett range()-t hasznaltam (2.7) a for ciklusnak, es osszejott valami huzosabb kombinacio, na akkor neztem nagyot hogy miert lassu... igen, alapveto dolgokkal tisztaban kell lenni, de egy 2-es konstans szorzo tenyleg nem jellemzo hogy szamit, vagy nagyon max par %-nyi pontot lehet veszteni vele (a tobbi teszteset lefut).
Masreszt azert en algoritmusokrol szolo versenyekrol beszelek, ott a kezdo feladatok utan a naiv algo mint megoldas nem fog ugyse bejonni... valami pluszt kell belevinni.

(#883) EQMontoya válasza axioma (#882) üzenetére


EQMontoya
veterán

Tisztában vagyok vele, voltam pár progverseny döntőjében (Ericsson, NNG, stb), és hidd el, sokat tud számítani a megfelelő algoritmus megtalálása után némi bitbaszkurálás, amivel mondjuk 3 óráról leviszed a futási időt félre. :)

A legutóbbi nagyobb cucc, amit Pythonban csináltam, több gigás logfile-okat parse-ol fel. Nem árt ésszel csinálni.

[ Szerkesztve ]

Same rules apply!

(#884) cousin333 válasza EQMontoya (#883) üzenetére


cousin333
addikt

Ha már optimalizálás, tud valaki javasolni egyszerűen használható grafikus könyvtárat, amivel mindenféle interaktív grafikonok készíthetők és könnyen elboldogul több millió adatponttal?

Amiket néztem: matplotlib (jó, de nem túl gyors), Seaborn (kb. ugyanaz), Plot.ly (netes, fizetős is, nem érdekel), Bokeh (ezt még nem ismerem eléggé), Vispy (ez lenne a favoritom, de még mindig félkésznek tűnik). Jó lenne valami, ahol a data.plot()-nél nem sokkal bonyolultabb szerkezetekkel célt lehet érni.

"We spared no expense"

(#885) justmemory válasza cousin333 (#884) üzenetére


justmemory
senior tag

Szia!

Én a matplotlib-et használom; jól paraméterezhetô, nem bonyolult, jól illesztetô a python programkörnyezetbe. Tény, hogy lehetne gyorsabb.

--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---

(#886) Fido01


Fido01
aktív tag

Helló!

Teljesen amatőr vagyok a témában (oly annyira, hogy abban sem vagyok biztos hogy Python kell nekem a gondomhoz)
Szóval adódott egy probléma a munkahelyemen, eddig úgy nézett ki a dolog, hogy 1-1 dokumentum elkészítésekor a fájl belekerült a "küldendő" mappába majd mikor egy honlapon feltöltésre került automatikusan átkerült az "elküldött" mappába így átláthatóbbá téve a feltöltéseket mivel a "küldendő" mappában mindig csak az szerepelt ami még nem lett online közzétéve, ez azonban néhány (rajtam kívülálló) okból megváltozott és most már a "küldendő" mappa tartalma nem törlődik a feltöltést követően.

Első körben csak simán írtam erre egy batch scriptet amit minden alkalommal lefuttatok mikor feltöltöttem egy fájlt, ez működik is, egyszerű és rettentő unalmas.

Meg lehet oldani valahogyan ezt a problémát úgy, hogy ez a folyamat automatikusan lefusson minden alkalommal a feltöltést követően?

Kieg.: sem a honlap sem pedig a program amivel a dokumentumok készülnek nem módosíthatóak.

Köszönöm szépen.

(#887) EQMontoya válasza Fido01 (#886) üzenetére


EQMontoya
veterán

Szerintem csak úgy, hogy ha le tudod valamilyen úton-módon kérdezni, hogy mi van fent a honlapon. Pl. rest api, vagy egy sima http get, aztán regexxel parse-olsz htmlt építesz belőle egy szép kis DOMot, és kitúrod belőle az adat.

Ezt az adatot összeveted a mappád tartalmával, és ha van a mappában olyan, ami már fent van, akkor move. Az egészet meg lehet egy timerre / cron jobra kötni.

Same rules apply!

(#888) Fido01 válasza EQMontoya (#887) üzenetére


Fido01
aktív tag

Köszönöm a választ ettől tartottam, hogy valamilyen szinten hozzá kell férni a honlap adataihoz amire nem sok esélyt látok, tekintve hogy gov.hu-s :D
Mindenesetre futok egy kört hátha sikerült valamit kiokoskodni ezen elv alapján.

(#889) cadtamas


cadtamas
tag

Úgy látom a kérdésemet inkább itt kellett volna feltennem.

Szeretnék egy kígyós tkinter programot írni. A Gerard Swinnen könyvből tanulok pythonul. (Ez az első programnyelvem). Még csak a 100. oldal környékén járok, így az ismereteim nem túl mélyrehatóak. :)

Elakadtam egy egyszerű problémánál és nem jövök rá mit rontok el.

def kocka_mozgato():
global x, y, xt, yt,
i = 0
xt,yt=x,y
while i < n:
if i==0:
x[0]=x[0]+iranyx*racs
y[0]=y[0]+iranyy*racs
if i!=0:
x[i]=xt[i-1]
y[i]=yt[i-1]
can1.coords(kockak[i], x[i], y[i], x[i] + racs, y[i] + racs)
i += 1

abl1.after(1500, kocka_mozgato)

ez rajzolná ki a mozgó kígyó testét, szeretném úgy megoldani, hogy eltárolom a kígyó testének x,y koordinátáit egy xt,yt listában, hogy később a kígyó teste innen olvassa ki, hogy mely pizícióra kell mozognia, de valamiért a listák összes eleme felveszi a [0] pozíció értékét.
Lehet, hogy inkább péknek kellett volna mennem. A liszt nem csinál ilyet.

[ Szerkesztve ]

(#890) cousin333 válasza cadtamas (#889) üzenetére


cousin333
addikt

Hát, lehet, hogy rosszul látom, de az xt,yt=x,y sor hatására szerintem annyi történik, hogy az xt nem olyan lesz, mint az x, hanem maga lesz az x csak másik elnevezéssel. Magyarul amint módosítod az egyiket, módosul a másik is. Így az if máshogy elnevezett else ága (a második if) az első elemmel másolja felül az összes többit.

Nem teljesen világos nekem a program működése, de ha a listában egy elem kimegy, egy másik meg be, de a többi marad, akkor azt másolgatnám, hanem csak az utolsó elemet törölném, az elsőt meg hozzácsapnám. Erre a legmegfelelőbb típus mondjuk nem a list, hanem a deque, mondjuk ez azért elég speciális és tudtommal inkább teljesítmény okokból létezik. A te kígyód meg sosem lesz olyan hosszú, hogy ez problémát jelentsen... ;)

Listával valahogy így tudsz elé beszúrni egy új elemet:

x = uj_x0 + x[:-1]

[ Szerkesztve ]

"We spared no expense"

(#891) cadtamas válasza cousin333 (#890) üzenetére


cadtamas
tag

Basszus, igazad van!
Leteszteltem python interpreterben.
Sose gondoltam volna, hogy a listák így működnek.

>>> x=[1,2,3]
>>> y=x
>>> x[0]=5
>>> x
[5, 2, 3]
>>> y
[5, 2, 3]
>>>

Nagyon köszönöm!!!
Ezt a deque módszert még nem említette a könyv.
Keresek más megoldást. De legalább tudom, hogy mi okozza a problémát.

update:

így már működik:

def kocka_mozgato():
global x, y,xt,yt
i = 0
xt,yt=[],[]
while i < n:
xt.append(x[i])
yt.append(y[i])
if i==0:
x[0]=x[0]+iranyx*racs
y[0]=y[0]+iranyy*racs
if i!=0:
x[i]=xt[i-1]
y[i]=yt[i-1]
can1.coords(kockak[i], x[i], y[i], x[i] + racs, y[i] + racs)
i += 1
abl1.after(1500, kocka_mozgato)

[ Szerkesztve ]

(#892) EQMontoya válasza cousin333 (#890) üzenetére


EQMontoya
veterán

Ez azért van, mert a lista mutable típusú.

x = [1, 2, 3]
y = x
y.append(4)
print x //[1, 2, 3, 4]

Erre való a copy.deepcopy fv.

Fontos tudni, hogy minden kollekció így működik, illetve osztályok példányai is.
Kivételek pl.: int, str, frozenset.

[ Szerkesztve ]

Same rules apply!

(#893) cadtamas


cadtamas
tag

Újabb problémával szembesültem.
A fájlkezelésnél/létrehozásnál tartunk és ha létrehozok egy .txt fájlt, akkor az ékezetes karakterek helyére hülye szimbólumokat rak.pl: F�rfi;
És amikor visszaolvastatom a fájl tartalmát, ugyanezt olvassa vissza.

Mit lehet tenni, hogy megfelelően kódolja a létrehozott fájlt?
Az első sorom ezzel kezdődik:
# -*-coding:utf-8;-*-
windows-os pycham.

(#894) cousin333 válasza cadtamas (#893) üzenetére


cousin333
addikt

A fájlbeli coding sor tudtommal a forrásfájl karakterkódolását definiálja.

Kezdjük azzal a kérdéssel, hogy hogyan írod/olvasod a fájlt? Ha a klasszikus open függvénnyel, akkor annak van egy encoding paramétere, amit célszerű megadni. A lehetséges kódolások listája (bár kicsit régi): [link]. Innen az UTF-8 vagy a cp1250 ajánlott.

ui: Mindez a Python 3.x szériára vonatkozik, de remélhetőleg azt használod...

[ Szerkesztve ]

"We spared no expense"

(#895) cadtamas válasza cousin333 (#894) üzenetére


cadtamas
tag

Nagyon köszönöm! :R

(#896) szucstom


szucstom
őstag

Sziasztok!

Most lehet, totál hülyének fogtok nézni, hogy egy totál egyszerű kiíratást nem tudok megcsinálni, de már agybajt kapok, amiért nem sikerül. Adott egy python-os könyv, melyben vannak példák. Ezeket én próbálom megcsinálni, de kb. a második sor után mindig vmi hibát ír ki folyamatosan. (nem a legszebben lesz leírva, de igyekszem)

// a=150
// if(a>100):
// print "a meghaladja a szazat"

Na, a print sor után enter, majd jön a hibaüzenet: SyntaxError: Missing parentheses in call to print.

Ez mit takarhat?

PS4 ID: Z0D14C_1990; Manjaro KDE

(#897) cousin333 válasza szucstom (#896) üzenetére


cousin333
addikt

Használd a Programkód kapcsolót.

Az a problémád, hogy a könyv, amit használsz, a Python 2.7-ről (vagy még régebbiről) szól, te viszont valamelyik 3-as változatot használod. Abban a print már függvény, ezért kell a zárójel. Tehát helyesen:

a = 150

if a > 100:
print("a meghaladja a szazat")

"We spared no expense"

(#898) szucstom válasza cousin333 (#897) üzenetére


szucstom
őstag

Nice. Köszi :) 3.6-os verzióhoz van könyv?

PS4 ID: Z0D14C_1990; Manjaro KDE

(#899) cousin333 válasza szucstom (#898) üzenetére


cousin333
addikt

Könyv szempontjából elsősorban az a kérdés, hogy 2-es vagy 3-as verzió, az alverziók kevésbé számítanak. Ez azért is jó, mert pl. a 3.6 vadonat új, könyv aligha van hozzá, de szerencsére a korábbiak is jók: [link]

Értelemszerűen a mindenkori legfrissebb, de inkább referenciának mintsem tanulásra való oldal a hivatalos Python dokumentáció: [link]

[ Szerkesztve ]

"We spared no expense"

(#900) szucstom válasza cousin333 (#899) üzenetére


szucstom
őstag

Köszönöm a segítséget :) remélem nem lesz terhetekre, ha esetlegesen zavarok itt a kérdéseimmel :) (most kezdem az ismerkedést, szóval mondhatni egyenlőre nulla a tudásom ilyen téren)

PS4 ID: Z0D14C_1990; Manjaro KDE

Copyright © 2000-2024 PROHARDVER Informatikai Kft.