Re
Nemrég kezdtem a Pythonal ismerkedni, és kicsit elakadtam az alábbi feladatnál, amely azt kéri, hogy defináljunk egy függvényt, amely megfordítja az argumentumként megadott karakter sorrendjét...
Az én (hibás)programom itt:
>>> def fordit(szo):
x = len(szo)
i = x
betu = ''
vissza = ''
while i > 1:
szo[i] = betu
vissza = vissza + betu
i = i -1
return vissza
>>> a = 'pd'
>>> fordit(a)
A hibaüzenet meg ez:
Traceback (most recent call last):
File "
", line 1, in -toplevel-
fordit(a)
File "
", line 7, in fordit
szo[i] = betu
TypeError: object does not support item assignment
Vki tudna segíteni? Előre is köszönöm
- 1760 megtekintés
Hozzászólások
A behúzások sehogysem jelennek meg...
- A hozzászóláshoz be kell jelentkezni
>>> a = 'abcdefghijkl'
>>> backwards = ''
>>> for index in range(len(a)):
... backwards += a[-index-1]
...
>>> print backwards
lkjihgfedcba
- A hozzászóláshoz be kell jelentkezni
ez tetszik..
nem akarok pofátlan lenni, de esetleg nem tudnál segíteni, hogy az én fenti programom is müködjön? tehát a while ciklussal is?
- A hozzászóláshoz be kell jelentkezni
miért ragaszkodsz a while ciklushoz? ez nem c sem java. ez a mennyország! :D
- A hozzászóláshoz be kell jelentkezni
igen tudom... 1-2 hete foglalkozok csak pythonnal, de már a szivem csücske..
..hát azért ragaszkodom annyira hozzá, mert most nyálazgatom Gérard Swinnen "Tanuljunk meg programozni Python nyelven" c. könyvét...
és szertném megcsinálni a feladatot..
- A hozzászóláshoz be kell jelentkezni
Én 2 napja kezdtem ugyanbból a könyvből!
- A hozzászóláshoz be kell jelentkezni
dettó... három napja tanulmányozom, ezen a feladaton agyaltam volna most de lelöttétek a poént :)
juteszembe a csillagos feladatnak mi lett végülis megoldása? csak mert nem igazán sikerült :(
- A hozzászóláshoz be kell jelentkezni
# -*- coding:Utf-8 -*-
# ---------------------
a = 0
while (a < 7):
... a = a + 1
... b = 0
... print ''
... while (b < a):
...... b = b + 1
...... print '*',
Ugye ez az első nyelv amit tanulsz?
- A hozzászóláshoz be kell jelentkezni
próbálkoztam c-vel de elég bonyolultnak tünt :) de amit értek (koppkopp) az úgyérzem ez :)
- A hozzászóláshoz be kell jelentkezni
Szerintem a Python első nyelvnek is nagyon jó.
Javaslom nézz meg néhány általános algoritmusokat oktató irodalmat is.
Pl: http://zeus.nyf.hu/~akos/adatszerk/adatszerk.ppt
http://zeus.nyf.hu/~akos/adatszerk/adatszerk.doc
Igaz ugyan, hogy Turbo Pascal nyelven adja a példákat, de az elég könnyen érthető.
Vagy ezt http://www.cs.bme.hu/~kiskat/algel/
- A hozzászóláshoz be kell jelentkezni
okés meglesem köszi!
- A hozzászóláshoz be kell jelentkezni
Itt a te programod működő változata:
def fordit(szo):
x = len(szo)
i = x-1 # Mert a tömbindex 0-tól indul
betu = ''
vissza = ''
while i >= 0 :
betu = szo[i]
vissza = vissza + betu
i = i - 1
return vissza
a = 'abc'
print fordit(a)
# Persze a tabulátorokat a fórummotor elnyeli.
- A hozzászóláshoz be kell jelentkezni
valóban működik..
köszönöm a segítségeket!
- A hozzászóláshoz be kell jelentkezni
Ugyan nem pontosan a kérdésedre a válasz, de azt hiszem a legegyszerűbb megoldás:
bash-3.00$ python
Python 2.4.2 (#1, Sep 29 2005, 15:28:01)
[GCC 4.0.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> s = "abcdef"
>>> s[::-1]
'fedcba'
>>>
- A hozzászóláshoz be kell jelentkezni
Ezt akartam először én is tanácsolni a kis piton-nebulónak, de sztem elsőre sok(k) lett volna. Elvégre ő while - ciklus alapú megoldást akart, igaz bűn benne sztringet 10 sorban megfordítani, de ez már egy másik topic témája is lehetne. Brilliáns eszköz.
- A hozzászóláshoz be kell jelentkezni
hello
lenne egy kérdésem
nem értem, hogy miért nem megy az alábbi program:
a = [ 1 , 2 ] # elso tomb
b = [ 4 , 3 ] # masodik tomb
i = 0 # ideiglenes tarolo
n = 0 # szamlalo, a[n] illetve b[n] a lenyeg
m = 0 # max szama az a tombnek
# START
m = len ( a )
while ( ( n - 1 ) != m ):
__i = a [ n ]
__b [ n ] = i
__n = n + 1
print b
tulajdonképpen bármilyen program amivel próbálkoztam azzal ugyanitt akadok el: tombböl tömbbe nem tudok másolni.
Traceback (most recent call last):
File "int.py", line 16, in ?
i = a [ n ]
IndexError: list index out of range
hogyan lehetne megoldani a másolást?
a segitseget elore is köszönöm
- A hozzászóláshoz be kell jelentkezni
túlindexelsz, vazze.
while ( ( n - 1 ) != m ):
helyett legalább:
while ( ( n + 1 ) != m ):
- A hozzászóláshoz be kell jelentkezni
tombböl tömbbe nem tudok másolni
ha az a osszes elemet b-be akarod masolni, akkor:
ad 1: b=a. ilyenkor a b tomb merete felveszi a meretet.
ad 2: b[0:len(a)]=a. ilyenkor b merete nem csokken.
- A hozzászóláshoz be kell jelentkezni
tulajdonképpen ezt a programot ide írtam szeléltetni hogy mi nem megy :) gyakorlatban olyanok szktak lenni hogy mondjuk a[n] másolni b[m]-be, hogy m,n=2,6 például.
- A hozzászóláshoz be kell jelentkezni
>>>
>>> s1 = [1,2,3,4,5]
>>> s2 = [11,22,33,44,55,66]
>>> s1[3:4]=s2[1:3]
>>> s1
[1, 2, 3, 22, 33, 5]
>>>
flame on
A C,C++,Pascal,Java stb.-ben megszokott megoldásoknál (csinálok egy jó kis while/for ciklust) általában vannak elegánsabb módok.
flame off
Olvasd el (jó alaposan) a tutorial-t és a library reference-ből a második fejezetet.
Csak érdekességként:
http://www.python.org/doc/essays/list2str/
Szerintem fontos - rövid - olvasmányok még:
http://www.python.org/doc/essays/styleguide/
http://www.python.org/dev/peps/pep-0020/
- A hozzászóláshoz be kell jelentkezni