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ě?
Fórum › Python
3.lekce (vytiskněte větu v obráceném pořadí)
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:)
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.
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?
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 :-)
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?
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.
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 :)
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")
/.-)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á.
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
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
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
Moderátoři diskuze