3.lekce - zpřeházení písmen ve větě – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

3.lekce - zpřeházení písmen ve větě – Python – Fórum – Programujte.com3.lekce - zpřeházení písmen ve větě – Python – Fórum – Programujte.com

 

19. 11. 2006   #1
-
0
-

V čem je chyba? Trochu jsem se zamyslel a složil toto:

#-*- coding: iso-8859-2 -*-

veta = "Haló, haló. Zkouška zkouška .. 1, 1, 1, jó, jó, jó, pozor všechny kočiči dámy... víte co právě poslouchám?"
veta_2 = veta
pocet_pismen = len(veta)
i = 0
j = 1
while i < pocet_pismen:
veta_2[pocet_pismen-j]=veta[i]
i += 1
j += 1
print veta_2 #jde mi o invertování posloupnosti znaků ve větě
Přijde mi to logické, ale nějak to 'nefachá'. Ještě otázka > existuje v pythonu něco jako i++ nebo musím zapisovat i+=1?

PS: programovat neumím - Python je můj první pokus a asi bude chyba v tom, že znám tak maximálně len() :)

Nahlásit jako SPAM
IP: ...–
geon0
Grafoman
19. 11. 2006   #2
-
0
-

řetězce jsou *neměnné". To znamená, že nelze dělat:



veta="ahoj"
veta[0]="b"

V Pythonu to nelze a má to své důvody (jedním z nich je možnost použití řetězců jako indexátorů).

Musíš to vždy udělat tak, aby ti vznikl řetězec nový. Nap?.:


veta=veta.replace("a","b")
print veta
# nebo
veta="b"+veta[1:]
print veta


Přestože to vypadá, že původní veta a nová veta jsou stejné (stejně se jmenují), jsou to dva odlišné řetězce, jen se stejně jmenují. Možná by bylo, z hlediska tohoto vysvětlení, psát: novaveta=veta.replace("a","b").

Další věc - while je vhodný, když předem neznáš počet opakování, jinak je daleko přehlednější (=méně možných chyb, lepší srozumitelnost, vyšší produktivita) cyklus for


for znak in veta:
print znak


Python je hodně o srozumitelnosti - řekni upřímně, kdybys i++ neznal z C, jak bys na to asi koukal? Z toho důvodu není ani moc používán syntax i+=1. Většinou se opravdu píše i = i + 1. CO ztratíš na dvou znacích navíc, získáš na přehlednosti (viz výše).

Nahlásit jako SPAM
IP: ...–
geon. volume doprava.
19. 11. 2006   #3
-
0
-

Díky moc za vysvětlení.
i+=1 místo i = i+1 píšu abych si to procvičil a ve škole nekazil písemky z C ale je pravda že to moc přehledné není

Nahlásit jako SPAM
IP: ...–
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

Počet písmen vo vete — založil kristián

Po 2 vete konec — založil Anonym

Slova ve vete — založil karl

Nejkratší slovo ve větě. — založil JaNevimCoDelat

 

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