Názory ke článku Python - 3. lekce
10. 6. 2005
Díky, pěkný.
Možná by to chtělo víc probrat fci split() a zřejmě protikus join().
V manuálu je jich několik druhů, ale nestíhám to angličtinou.
10. 6. 2005
Uvidím, zkusím, i když bych radši, abyste podobné věci zatím programovali sami, protože to není složité. Abyste se naučili tak důležitou algoritmizaci, základní programovací postupy, a ty se právě cvičí na těchto věcech. Zkus to: pomocí for, if , while... udělat split i join v těch nejzákladnějších podobách. Apropo bez angličtiny to stejně dál nepůjde ;-)
Poradil jsem si bez joinu, ale asi by to snim bylo hezčí.
Pokud se tedy používá ke slučování řetězců.
viz. úkol
10. 6. 2005
FOR ALL:
Úkoly please bez češtiny v řetězcích, nebo to udělejte správně, jak je psáno v článku - všechny 3 kroky, jinak mi to píše paznaky.... Zkuste si to sami spustit alespoň ve dvou prostředích (DOS (pod windows) + Windows) a uvidíte. Nechme si češtinu na okenní aplikace, tam je to již bez problémů....
11. 6. 2005
dotaz: "Kolik obsahuje znaků a slov?" - Počet znaků = délka řetězce nebo délka řetězce bez mezer ? (Hnidopich :-) )
odpoved: mezera je taky znak, casto neviditelny, ale presto zabira misto
11. 6. 2005
Bylo by to jistě kratší,ale pokud mohu soudit, pro začátečníka je lepší, když to udělá pěkně "pěšky" - jako ty. A tak ztrácíš závislost na všelijakých funkcích, a nevzdáváš problém, pokud funkci nebo modul nedokážeš sehnat - prostě si to napíšeš sám. ;-)
V poradně najdou zájemci doplňkový úkol k této kapitole.
http://poradna.programujte.com/viewtopic.php?t=204
12. 6. 2005
Řešení zasílejte na geon@programujte.com s předmětem "zašifrovaný text - Python 3. lekce". Tak cca za 1 měsíc zveřejníme v Poradně výsledky. Případné dotazy a nápověda v Poradně.
Zdravim,
zkusil jsem to správné použití češtiny,
ale nefunguje mi to u Inputu.
dotaz = u"Kolik kusů ?:"
x = input (dotaz)
vrací v Dosu pod Win chybu - znak na pozici 9 ordinal not in range (128) ......
2. jde to v příkazu print použít nějak přímo? (ne přes string)
Je to již vedeno jako bug...
Řešení je následující:
dotaz = u"Kolik kusů ?:"
print dotaz,
x = input ()
Doufam že zbylé dvě zásady máš OK. Funguje?
Ano tou obklikou print >input to funguje.
Ten bod 2 vlastně funguje OK, ale tim, že jsem to zkoušel v jednom příkladu i s tim inputem tak na print u"áéíóů" ani nedošlo.
Mám potíž s tabulátorem.
Vypisuji 10 výsledků na řádek pomocí "\t", ale poslední
už mi skočí na další řádek.
Dá se programově nastavit krok tabulátoru?
Pokud vím, tak ne.
Snad by se to dalo, pokud používáš více tab za sebou, např. '\t'*pocet, tak programově ošetřit proměnnou počet.
Anebo to programově ošetřit celé, tedy si vytvořit svůj tab, nelépe jako funkci. Pamatovat si na jakých pozicích mají taby být, počítat na jaké jsi aktuální pozici, a vkládat příslušný počet mezer. Mnoho štěstí. :-)
A ještě existuje metoda řetězců expandtabs(): viz help
příklad: "toto\tje\tale\tspousty\ttabu".expandtabs(4)
Aby to řádně fungovalo, mělo by být číslo v závorce větší než délka nejdelšího řetězce.
Takže netiskout rovnou, ale vytvořit takový řetězec, a pak ho takto vytisknout.
26. 6. 2005
Vyzkoušel jsem, expandtabs(x) funguje, když chci vytisknout naráz předpřipravený řádek.
Nefunguje, ale v tomhle případě:
<pre>
for i in range(1, 11):
for j in range(1, 11):
c=i*j
print "%d\t"%(c),
print "\n"
</pre>
musíš si ho předpřipravit a ne rovnou tisknout
radek=''
radek=radek+"%d\t"%(c)
radek= radek+"\n"
print radek.expandtabs(4)
radky vložit na správná místa se správným odsazením:-)
28. 2. 2006
cauec. jsem zacatecnik, a zajimalo by mne, jak mam vypsat treba nasledujici:
<pre>for znak in veta:
print znak</pre>
tak, aby se to nevypisovalo po radcich.
diky moc
<pre>for znak in veta:
print znak,</pre>
ta čárka na konci způsobí, že seto bude tisknout za sebou. Také ale způsobí, že dělá mezeru - znaky budou od sebe odděleny mezerou. I to se pak dá ale řešit ;-)
Jaká je syntaxe psaní znaků pomocí jejich decimálních kódů?
Znám to z pascalu: write(#65) mi vypíše "A"
Nevím jestli to napsal dost srozumitelně, moc se v tom nevyznám.
19. 11. 2006
mam malicky problem v tej ulohe neviem ako mam spravit abymi vypisalo opacny text...a este neviem ako spravit zeby a=A mal som prikaz
for znak in veta:
if znak=="a":
"a"="A"
ale hlasi mi chybu prosim poradte
Pro zkušenější programátory jistě neznamená problém . Já jsem začátečník a u příkladu na split . Pod nadpisem pokročilejší funkce chybí : print veta2 , aby začátečník věřil komentáři o vypsání seznamu slov .)
ty do "a" přiřazuješ "A" :-) a to přece nejde. To je jako kdybys chtěl do jedničky dát dvojku (1=2) a to je nesmysl. Správně by to mělo být:
for znak in veta:
if znak=="a":
znak="A"
...doufám, v Pythonu neprogramuju, ale takhle mi to příjde logické.
Vymyslel jsem tenhle kod na psaní textu pozpatku. Ale píše to s mezerami mezi jednotlivýma písmenkama... Dá se ty mezery "vyhodit"?
veta="Python je skvely objektove orientovany, interpretovany a interaktivni programovaci jazyk."
i=0
pocet=len(veta)
print "\n"
for i in range(1,pocet+1):
print veta[pocet-i],
5. 8. 2007
nechci psát řešení přímo do diskuze, kdyžtak mi napiš. nápověda.:
print veta[pocet-i], nedávej rovnou print, nejprve to ulož do proměnné (použij způsob počítání z předchozí lekce) a print použij až na tuto proměnnou
14. 12. 2007
To m4rt4n: Stale mi to vypisuje pod seba neviem ako mam spravit aby my to pislo do riadku
8. 4. 2009
Jejda, dal jsem se do toho až ted a jediný co jsme vymyslel na nepovinný úkol, tak je tohle
seznam=""
jetam=0
for znak in veta:
#print "znak",znak
for znak1 in seznam:
if znak==znak1: jetam=1
if jetam==0: seznam=seznam+znak
jetam=0
print seznam
funguje to, ale není tu nikdo, kdo by ukázal elegantnější řešení:(
9. 6. 2009
Koukám, že co člověk, to jiné řešení :-) Jsem doufala, že tu naleznu nějakou pomoc, ale kopírovat cizí nápad se mi nechce, tak si doopravím to své a pak zašlu, zdali tu ještě funguje opravování úkolů :-)
12. 11. 2009
znaky = [ ]
for x in veta:
if x not in znaky:
znaky += [x]
print znaky
bych rekla ze takhle je to hezci:)
3. 12. 2009
Tak az dotedka jsem vsechno chapal, ale ten domaci ukol teda ne.
Nevim a nikde v tutorialu nevidim, jak spocitat kolik je tam a, e, ..atp
diky za radu
Reagoval na komentář od uživatele luci :
Mne tvoj kod nevratil jeden zoznam znakov ale mnozstvo zoznamov, kde prave ten posledny je ten hladany. Teda zoznam znakov. A nic viac.
ja som skusil vyuzit techniku mojich prarodicov - naokolo blizsie. Ale vrati mi to jeden zoznam. Dfm. ze dobre.
ch=[]
for y in range(0,len(veta)):
counter=0
for z in range(y+1,len(veta)):
if veta[y]==veta[z]:
counter=counter+1
if counter==0:
ch=ch+[veta[y]]
else:
ch=ch
Taky mám problém s tím vypisováním pozpátku.
Když jsem to zkusil dát do proměnné, tak, že uloží do proměnné písmeno u kterého právě je a pak ho vypíše, tak to psalo na každý řádek samostatně, takže za tu proměnnou v print jsem musel dát čárku a tím byl efekt stejný, jako bez proměnné. Hmm
A jedna maličkost, jak to tu je s tím opravováním úkolů? At nemusím ztrácet čas jejich odesiláním, jestli to nefunguje...
25. 2. 2010
Reagoval na komentář od uživatele lekiller :
myslím že je to čitelné, ješte by se to nicméně dalo optimalizovat:-)
Aya
#Vytisknete vetu v obráceném poradí písmen.
veta="Python je skvely objektove orientovany, interpretovany a interaktivni programovaci jazyk."
vetapozpatku=""
for i in range(len(veta)-1,-1,-1):
vetapozpatku=vetapozpatku+veta[i]
print vetapozpatku
25. 2. 2010
Reagoval na komentář od uživatele lekiller :
jak to je s odesíláním úkolů nevím, nicméně ted jsem se pustil do tohoto tutoriálu abych si oprášil znalosti kvůli jednomu mému projektu... jestli chceš zpětnou vazbu či konzultace tak nemám problém :-)
Zkuste větu zkomprimovat (odeslání textu mobilem)
Každé slovo začíná velkým písmenem a mezery se vypustíAMezerySeVypustí.
<POMOC>
- mezera nemusí být jediný znak, ukazující na začátek nového slova!
- 1.znak slova nemusí být písmeno
Povolíme-li použití funkce pro převod znaku na číselný ASCII kod: kod=ord(znak)
a pro převod nazpět: znak=chr(kod)
male_p=range(ord("a"),ord("z"))
velke_p=range(ord("A"),ord("Z"))
abeceda=male_p+velke_p
posun=ord("A")-ord("a") ### [malé] + posun -> [VELKÉ] ###
veta="Python je skvely objektove orientovany, interpretovany a interaktivni programovaci jazyk."
nova_veta=""
Slovo=True
for zn in veta:
Pismeno=Slovo * (ord(zn) in male_p)
Slovo= zn==" "
nova_veta+=chr(ord(zn)+posun*Pismeno)[Slovo:]
print nova_veta
Funguje perfektně (i při výskytu čísel a jiných nepísmenných znaků ve větě) ...ale neumí zvětšit ěščřžýá atd. 24. 10. 2010
Mne funguje aj toto :)
new3 = veta.title()
print new3.replace(' ','',)
30. 11. 2010
Reagoval na komentář od uživatele Aya :
Asi nejsnadněji lze větu pozpátku vytisknout takhle :-)
print veta[::-1] #vypise vetu pozpatku
28. 2. 2011
Ahoj, mam (pravdepodobne dost trivialni) problem - kdyz ctu xml z internetu, zlobi me cestina:
# -*- coding: utf-8 -*-
import urllib
stranka=urllib.urlopen("http://www.jizni-morava.cz/xml/objekty.php?kategorie=120")
print stranka.readlines()
Muzete mi prosim poradit?
DIky
21. 3. 2011
Vytiskněte větu v obráceném pořadí písmen:
for y in (range(len(veta))):
x = x - 1
y += 1
print (veta[x],end='')
Na týchto tutoriáloch sa začínam učiť programovať, je to geniálne spracované.
Ďakujem =) Chcel by som sa spýtať, či by šlo danú úlohu spraviť aj jednoduchšie.
Extra úkol (jaké všechny znaky jsou ve větě) lze řešit dle mého názoru velmi jednoduše i bez seznamů, ale nechci sem psát řešení abych nezkazil lidem radost že na to přijdou sami; jen napovím že na to stačí jediný příkaz :-)
(Vyzkoušeno v Py 2.7.1)
7. 1. 2014
Skoro nic mi nefunguje :-(((
>>> barva=raw_input('Jaka je tva oblibena barva?: ')
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
barva=raw_input('Jaka je tva oblibena barva?: ')
NameError: name 'raw_input' is not defined