3.lekce (vytiskněte větu v obráceném pořadí) – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

3.lekce (vytiskněte větu v obráceném pořadí) – Python – Fórum – Programujte.com3.lekce (vytiskněte větu v obráceném pořadí) – Python – Fórum – Programujte.com

 

Ahoj30
Návštěvník
23. 4. 2010   #1
-
0
-

Přišel jsem na způsob jak napsat tu větu pozpátku :

a='ahoj svete.'
print a[-1],
print a[-2],
print a[-3],
print a[-4],
print a[-5],
print a[-6],
print a[-7],
print a[-8],
print a[-9],
print a[-10],
print a[-11]


Bohužel moji hlavu už nic jiného nenapadlo :(

Prošmejdil jsem diskuzní forum a narazil jsem na řešení jak by to mělo vypadat: http://programujte.com/?akce=diskuze&kam=vlakno&tema=11053-3-lekce

Je tam uvedeno: Zkus tu vetu projet cyklem for.
Pocet opakovani bude roven poctu znaku.
Tisknout budes veta[ ( znak * ( -1 ) ) -1 ] to znamená pozadu


Nemůžu se ale dobelhat k tomu jak by to mělo vypadat.
Nevím jak napsat pocet opakování bude roven poctu znaku.
Mohl by mi tedy někdo napsat jak by to vypadalo správně?

Nahlásit jako SPAM
IP: 213.220.248.–
w3m0
Grafoman
23. 4. 2010   #2
-
0
-

Jednoduše:

veta = "jelenovi pivo nelej."

for x in range(len(veta)+1):
print veta[-x-1],


Pokud se nelíbí mezery:
veta = "jelenovi pivo nelej."

obracene = ""
for pismeno in veta:
obracene = pismeno + obracene

print obracene


Nevím jak to má být správně, tohle mě prostě jen napadlo:)
Hlavně se pořádně podívej, jak to funguje a snaž se to pochopit:)

Nahlásit jako SPAM
IP: 94.112.121.–
Sa Nata A Na. Howgh
Spectator0
Věrný člen
23. 4. 2010   #3
-
0
-

To w3m : zajímavý =) v tom starym threadu píšou v podstatě ti samí lidé jako tady a jde o to samé. S odstupem času koukám, že jsem tam povídal blbiny=)

Nahlásit jako SPAM
IP: 81.19.47.–
. . .
w3m0
Grafoman
23. 4. 2010   #4
-
0
-

Spectator: Zajímavý, například já si na ty moje příspěvky vůbec nepamatuju; A nebýt toho, že jsi napsal, tak bych ten odkaz ani neotevřel.

Nahlásit jako SPAM
IP: 94.112.121.–
Sa Nata A Na. Howgh
Ahoj30
Návštěvník
24. 4. 2010   #5
-
0
-

Zkusil jsem nejdřív 1. příklad:
veta = "jelenovi pivo nelej."
for x in range(len(veta)+1):
print veta[-x-1],

Mezery se mi opravdu nelíbili a navíc to napsalo chybu: index error:string index out of range.
ten 2.řádek (len(veta)+1) to +1 znamená jako že větu vezme od prvniho pismene?
a to print veta [-x-1], to x představuje kolik je tam těch písmen nemělo by to být spíš: print veta [-1-x]
Jako že vezme poslední písmeno to je to -1 až po to první to je to -x.



Radši jsem zkusil 2. příklad:

veta = "jelenovi pivo nelej."
obracene = ""
for pismeno in veta:
obracene = pismeno + obracene

print obracene

Tady jsem zjistil že když místo obracene = pismeno + obracene napíšu obracene = obracene + pismeno
Věta se nenapíše obraceně :) ale stejně mi to nějak není jasné.
Nemělo by se spíš po napsani:
veta = "Jelenovi pivo nelej."
obracene = ""
for pismeno in veta:
obracene = pismeno + obracene

print obracene

Vytisknout to samé ( Jelenovi pivo nelej.), protože to obracene je vlastně nic takže obracene = pismeno + obracene jsou vlastně jen ty písmenka z té věty . Asi to chápu špatně a už jsem se do toho pěkně zamotal nemůže mě prosím z toho někdo vymotat a vysvětlit prosím.

Nahlásit jako SPAM
IP: 213.220.248.–
Ahoj30
Návštěvník
24. 4. 2010   #6
-
0
-

Vím jak tu větu napsat pozpátku ale nevím proč takto.

Nahlásit jako SPAM
IP: 213.220.248.–
filippop0
Návštěvník
24. 4. 2010   #7
-
0
-

Ten druhej příklad je docela jednoduchej...
for pismeno in veta:
#cyklus vlastně rozdělí variable "veta" na jednotlivý znaky a při průchodu každý znak přiřadí do variable "pismeno"
obracene = pismeno + obracene
# tady rozlozené variable "veta" zasel skládáš do nového variable "obracene" a to tak, že každý znak jak je načítán se nepřidává na konec, ale na začátek variable.

Takže prvně tam bude: j, pak ej, pak lej, pak elej, pak nelej, pak onelej, pak vonelej, pak ivonelej...
Ověřit si to můžeš, do toho cyklu dáš vypisování variable:

Pro python 3.1 by to vypadalo takhle:

veta = "Jelenovi pivo nelej."
obracene = ""
for pismeno in veta:
obracene = pismeno + obracene
print(obracene)
#vypíše obracene v průběhu skládání
print(obracene)
#cyklus zkončen, vypíše výsledek

Co mi ale není jasné je, proč se musí deklarovat prázdné variable "obracene", když python by měl být "implicitly typed" - bez nutnosti deklarace?

Nahlásit jako SPAM
IP: 77.78.86.–
filippop0
Návštěvník
24. 4. 2010   #8
-
0
-

To filippop : Nejde tady mazat ani editovat :) Takže omluva za řeklepy...
Aby jsi to mohl ověřit v pythonu 2.7, tak jen print použij bez mezer.
(Proč se učíš Python 2.7 a né novější 3.1?)
Editoval Blujacker: všechno jde, když se chce :-)

Nahlásit jako SPAM
IP: 77.78.86.–
filippop0
Návštěvník
24. 4. 2010   #9
-
0
-

To filippop : Samozřejmě né bez mezer, ale bez závorek /.-)

Nahlásit jako SPAM
IP: 77.78.86.–
Ahoj30
Návštěvník
24. 4. 2010   #10
-
0
-

Já měl python 3.1, ale kvůli tomu že jsem se nemohl dostat přes 0. lekci jsem si tam dal radši starší verzi(2.6). Až pak jsem zjistil že se odehrála změna v tom printu.

Ještě jest-li můžu k tomu obracene = pismeno + obracene
např. u ahoj

veta = 'ahoj'
obracene = ''
for pismeno in veta: # on si teda rozloží ahoj na: a, h, o, j
obracene = pismeno + obracene # pak si tedy a, h, o, j bude skládat od j do toho obracene
print obracene # a tedˇ to vytiskne joha

Pochopil jsem to dobře?

Nahlásit jako SPAM
IP: 213.220.248.–
filippop0
Návštěvník
24. 4. 2010   #11
-
0
-

To Ahoj3 : Myslím že ne až tak dobře /.-)
předně by obracene mělo být = "" a ne jen = ", ale to je asi překlep.
Ano, rozloží si to na a, h, o, j, ale cyklus začne z levé strany. Takže první se zpracuje a.
obracene = pismeno + obracene udělá toto:

nastaví "obracene", jako hodnotu variable "pismeno", které se nyní rovná "a" a přidá k němu hodnotu variable "obracene", které je zatím prázdné = ""
takže na konci provního průchodu cyklem se "obracene" bude rovnat "a"

cyklus přesune na další písmeno, tentokráte "h"
nastaví "obracene", jako hodnotu variable "pismeno", které se nyní rovná "h" a přidá k němu hodnotu variable "obracene", které je z předchozího průchodu "a"
takže na konci druhého průchodu cyklem se "obracene" bude rovnat "ha"

Takhle to projde až na konec.

***********************

No, zatím jsi u třetí lekce, takže přejít na vyšší verzi by neměl být takový problém. Já sám s Python taky začínám, ale řekl jsem si že učit se starou verzi je ve chvíli kdy existuje novější zbytečné. Nejedu úplně podle lekcí, protože né všechno budu potřebovat, ale když budeš chtít, můžeme to procházet společně - určo nám to půjde líp. A v komentářích na konci lekcí jsem taky (myslím) viděl nutné změny 2.4->3.1.

Nahlásit jako SPAM
IP: 77.78.86.–
Ahoj30
Návštěvník
24. 4. 2010   #12
-
0
-

Aha už to tedy chápu díky moc.
Já zatím zůstanu u Python 2.6 nevím v čem je verze 3.1 lepší, ale řekl bych že mně bude stačit 2.6.
Nevím jestli bych se s 3.1 mohl řídit těmito lekcemi protože ty změny by mohli být později být i v dalších lekcích problém.
A co ty hodláš dělat v pythonu že nejedeš úplně podle lekcí?
Já si to raději projíždím všechno hezky pomalu :)

Nahlásit jako SPAM
IP: 213.220.248.–
filippop0
Návštěvník
24. 4. 2010   #13
-
0
-

není zač :)
Už přesně nevím v čem je jiná/lepší... Sice o tom je celá stránka http://docs.python.org/py3k/whatsnew/3.1.html, ale jediný co se mi vybavilo je, že je nový Python ještě více objektový, takže už i print je objekt - což mi zní dost cool, in a trendy na to, abych se to začal učit (ne, nevím v čem je krása objektů, funkcionální programování mi prozatím úplně stačí) :)

Každopádně pravý důvod je v tom, že určo opravily nějaký chybky, něco vylepšily a hlavně mi to připadne jako lepší investice do budoucna, protože předpokládám, že časem bude 3.1 rozšířenější a proto se nechci omezovat na 2.6 (protože bych se to nakonec stejně musel naučit). Zvláště když všechno z 2.6 jde udělat i ve 3.1 a moduly u kterých to má smysl jsou také předělány pro novou verzi.

Ikdyž je fakt, že na mé úrovni to bude hlavně o tom, jestli budu tisknout pozdrav jako

print "Ahoj"
, nebo
print("Ahoj")
/.-)

Nahlásit jako SPAM
IP: 77.78.86.–
Ahoj30
Návštěvník
24. 4. 2010   #14
-
0
-

No mně angličtina moc nejde :(

Nahlásit jako SPAM
IP: 213.220.248.–
filippop0
Návštěvník
24. 4. 2010   #15
-
0
-

To Ahoj3 : Což není až takový problém, jen to bude zdržovat. Já myslím, že bez angličtiny se v programování stejně moc neobejdeš... Ne na všechno ti někdo napíše český manuál a určotě to nebude tak rychle a komplexně jako originál od autora, který téměř určitě nebude publikovat česky.
Zdržovat to bude jen proto, že si budeš muset hodně překládat a pokud to nebudeš jen házet do překladače a budeš u toho používat i slovník, tak se to co potřebuješ brzy naučíš (Já se takhle naučil). A pak... Vysoká úrovneň angličtiny k porozumění dokumentace k programovacímu jazyku není až tak nutná.

Nahlásit jako SPAM
IP: 77.78.86.–
w3m0
Grafoman
25. 4. 2010   #16
-
0
-

Co se týče mého příkladu, který jsem uváděl, tak nepoužívám Python 2.7, ale Python 2.4 :)
Chvíli jsem používal 2.5tku, ale z nějakého důvodu mi nevyhovovala, takže jsem začal používat 2.4. A teď jsem nějak zaspal dobu :D

Nahlásit jako SPAM
IP: 94.112.121.–
Sa Nata A Na. Howgh
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 7 hostů

Podobná vlákna

Úloha na pythagorovu větu — založil blbka007

Ako otocit vetu — založil MareceQ

Pořadí Require — založil Akimi Keita

Pořadí vrstev — založil Roman

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý