Začátečník a problémy – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Začátečník a problémy – Python – Fórum – Programujte.comZačátečník a problémy – Python – Fórum – Programujte.com

 

peXtr0
Newbie
1. 7. 2011   #1
-
0
-

Zakládám toto téma, protože python se učím sám a v průběhu učení budu mít více otázek, tak abych tady nezaložil 1000 témat. Potřebuji poradit s tímhle



# jde o násobení náhodných čísel od 1 do 10
import random
dobre = 0 # kvůli počtu chyb po posledním příkladu
spatne = 0 # kvůli počtu chyb po posledním příkladu
promena1 = random.randint(1,10)
promena2 = random.randint(1,10)

print ("Kolik je", promena1, "x", promena2, "?")
odpoved = input("Zadejte cislo: ")
odpoved = int(odpoved)
print ("Zadal jste cislo:", odpoved)
if odpoved == promena1 * promena2:
print ("Odpovedel/a jste spravne.")
dobre = dobre + 1
else:
print ("Odpovedel/a jste spatne, spravny vysledek je:", promena1 * promena2)
spatne = spatne + 1


Potřebuji poradit s tím jak toto opakovat 10x (aby se program 10x zeptal na náhodný příklad). Vím, že půjde o cyklus for, ale na googlu jsem nedohledal. Dále bych potřeboval vědět jak napíšu #. Díky za odpověď.

Nahlásit jako SPAM
IP: 89.203.165.–
KIIV
~ Moderátor
+43
God of flame
1. 7. 2011   #2
-
0
-

To peXtr :
k opakovani: hledej akzvany cyklus
k #: uvnitr retezce se to jako komentar brat z principu nesmi, takze mezi "...# .." to byt klidne muze

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peXtr0
Newbie
1. 7. 2011   #3
-
0
-

Vždyť jo našel jsem cyklus for, ale nevím jak ho zakomponovat sem.

Nahlásit jako SPAM
IP: 89.203.165.–
KIIV
~ Moderátor
+43
God of flame
1. 7. 2011   #4
-
0
-

no jak asi.. pred to, co se ma opakovat pridas for, VSE co se ma opakovat odsadis o jednu "pozici" dal
tj kdyz tam mas:

A
B
C
D

a chces opakovat kdo vi kolikrat B, C:

A
for (dopln si sam - bys mohl zvladnout) :
B
C
D

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peXtr0
Newbie
1. 7. 2011   #5
-
0
-

Omg jako bych to nevěděl... Víš proč sem dávám ten kód? Abych to mohl použít v něm, ale v tomto kódu nevím jak...

Nahlásit jako SPAM
IP: 89.203.165.–
KIIV
~ Moderátor
+43
God of flame
1. 7. 2011   #6
-
0
-

To peXtr : no jestli to nedokazes, tak urcite nevis jak ..
ja sem tak trochu i ucitel... a tim ze to za tebe vyresim te akorat poskodim - kdyz to nezvladnes podle toho co uz ted mas, tak se budes bud muset zacit snazit (tj. experimentovat), nebo se na to vykaslat - protoze pak nezvladnes nic a jediny, co tu budem delat, ze to za tebe budem muset resit

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peXtr0
Newbie
1. 7. 2011   #7
-
0
-

Já našel u cyklu for jen toto:

mujSeznam = [1,2,3,4,5,1000]

for x in mujSeznam:
print ("Tady je cislo:", x)

Myslím si, že když nemám téměř žádné zkušenosti s programováním nemohu z tohoto cyklus zakomponovat do mého kódu. Najde se tu někdo kdo by to udělal? Myslím, že je otázka chvíle...:-)

Nahlásit jako SPAM
IP: 89.203.165.–
liborb
~ Redaktor
+18
Guru
1. 7. 2011   #8
-
0
-

# jde o násobení náhodných čísel od 1 do 10 

import random
dobre = 0 # kvůli počtu chyb po posledním příkladu
spatne = 0 # kvůli počtu chyb po posledním příkladu

for i in range(1, 11):
promena1 = random.randint(1,10)
promena2 = random.randint(1,10)
print ("Kolik je", promena1, "x", promena2, "?")
odpoved = input("Zadejte cislo: ")
odpoved = int(odpoved)
print ("Zadal jste cislo:", odpoved)
if odpoved == promena1 * promena2:
print ("Odpovedel/a jste spravne.")
dobre = dobre + 1
else:
print ("Odpovedel/a jste spatne, spravny vysledek je:", promena1 * promena2)
spatne = spatne + 1


EDIT: http://www.ibiblio.org/g2swap/byteofpython/read/for-loop.html

Nahlásit jako SPAM
IP: 78.80.52.–
peXtr0
Newbie
1. 7. 2011   #9
-
0
-

Až takhle jednoduchý, díky moc :-)

Nahlásit jako SPAM
IP: 89.203.165.–
KIIV
~ Moderátor
+43
God of flame
1. 7. 2011   #10
-
0
-

To peXtr : a ted si schvalne precti, co jsem ti psal o tom, jak to udelat :D

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
peXtr0
Newbie
1. 7. 2011   #11
-
0
-

no stejně sem tě vůbec nepochopil :D

Nahlásit jako SPAM
IP: 89.203.165.–
peXtr0
Newbie
1. 7. 2011   #12
-
0
-

Tak jsem v tom našel další problém

for i in range(1, 11):

promena1 = random.randint(1,10)
promena2 = random.randint(1,10)
print ("Kolik je", promena1, "x", promena2, "?")
odpoved = input("Zadejte cislo: ")
odpoved = int(odpoved)
print ("Zadal jste cislo:", odpoved)
if odpoved == promena1 * promena2:
print ("Odpovedel/a jste spravne.")
dobre = dobre + 1
else:
print ("Odpovedel/a jste spatne, spravny vysledek je:", promena1 * promena2)
spatne = spatne + 1


Mám tam tyhle dva cykly, zkoušel jsem mnoho věcí, ale nejde to. Vždy se jako první dokončí cyklus for a pak teprve příchází řada na if. Takže jestli je to správně nebo špatně se uživatel dozví až nakonci programu. Jak udělat aby za každým příkladem bylo zda je dobře/špatně? Aspoň malou nápovědu :D...

Nahlásit jako SPAM
IP: 89.203.165.–
liborb
~ Redaktor
+18
Guru
peXtr0
Newbie
1. 7. 2011   #14
-
0
-

???

Nahlásit jako SPAM
IP: 89.203.165.–
liborb
~ Redaktor
+18
Guru
1. 7. 2011   #15
-
0
-

Jednak tam vidím pouze jeden cyklus, nikoliv 2 jak píšeš.

A odpověď na tvojí druhou otázku je viz link. Dokonce to není malá nápověda, ale velká.

Nahlásit jako SPAM
IP: 78.80.52.–
peXtr0
Newbie
1. 7. 2011   #16
-
0
-

jeden je for a druhý je if

Nahlásit jako SPAM
IP: 89.203.165.–
liborb
~ Redaktor
+18
Guru
1. 7. 2011   #17
-
0
-

for je cyklus a if je podmínka, takže jeden cyklus a jedna podmínka

Nahlásit jako SPAM
IP: 78.80.52.–
peXtr0
Newbie
1. 7. 2011   #18
-
0
-

jj, ale je to anglicky

Nahlásit jako SPAM
IP: 89.203.165.–
peXtr0
Newbie
1. 7. 2011   #19
-
0
-

tak jsem zkoušel mnoho věcí a ne a ne na to přijít, to bude tím že nemám žádné zkušenosti..

Nahlásit jako SPAM
IP: 89.203.165.–
nervak0
Věrný člen
1. 7. 2011   #20
-
0
-

Něco máš jinak než liborb. Určitě to najdeš...

Nahlásit jako SPAM
IP: 213.211.51.–
peXtr0
Newbie
1. 7. 2011   #21
-
0
-

ee, mam to stejně, problém je, že jestli je to správně nebo ne mi to vypíše až u posledního příkladu

Nahlásit jako SPAM
IP: 89.203.165.–
nervak0
Věrný člen
1. 7. 2011   #22
-
0
-

No, možná to rozhodil zdejší systém, ale kód ve tvém příspěvku není stejný a chování programu tomu odpovídá.

Nahlásit jako SPAM
IP: 213.211.51.–
peXtr0
Newbie
1. 7. 2011   #23
-
0
-

jo, ale já si to předělal

Nahlásit jako SPAM
IP: 89.203.165.–
nervak0
Věrný člen
1. 7. 2011   #24
-
0
-

Aha...

Nahlásit jako SPAM
IP: 213.211.51.–
peXtr0
Newbie
1. 7. 2011   #25
-
0
-

nikdo neví?

Nahlásit jako SPAM
IP: 89.203.165.–
yetty_001
~ Redaktor
+5
Super člen
1. 7. 2011   #26
-
0
-

Programování je občas o hledání malých odlišností od správnosti. Ty máš navíc tu výhodu, že jsi dostal i funkční ukázku, jak to má vypadat. Tak to ber jako něco na způsob hry "najdi deset rozdílů". Každý znak, každá mezera, všechno...

Nahlásit jako SPAM
IP: 90.183.40.–
peXtr0
Newbie
1. 7. 2011   #27
-
0
-

omg chápe tady vůbec někdo co potřebuju?

Nahlásit jako SPAM
IP: 89.203.165.–
yetty_001
~ Redaktor
+5
Super člen
1. 7. 2011   #28
-
+1
-
Zajímavé

Bez obalu - potřebuješ začít přemýšlet a přestat se vymlouvat na to, že jsi začátečník a chtít od každého hned všechno vyřešené. Musíš pochopit, jak ten kód funguje, projít si ho řádek za řádkem, laborovat, zkoušet.

Nahlásit jako SPAM
IP: 90.183.40.–
peXtr0
Newbie
1. 7. 2011   #29
-
0
-

jo a co sem dělal celý odpoledne?

Nahlásit jako SPAM
IP: 89.203.165.–
peXtr0
Newbie
3. 7. 2011   #30
-
0
-

pls

Nahlásit jako SPAM
IP: 89.203.165.–
Chrasty
~ Redaktor
+4
Posthunter
3. 7. 2011   #31
-
0
-

Apríl byl 1. dubna, ne?

Jestli to fakt myslíš vážně a není to vtip, tak přestaň pořád opakovat, že jako začátečník nemáš šanci to pochopit a podívej se na svůj a kód od liborb znova, ten rozdíl je tam vidět na první pohled (napovím, má to co dělat se slovíčky if a else, resp. s řádky na kterých jsou). Sice říkáš, že sis to opravil, ale nevím nevím, to by se ten programoval jak má.

Nahlásit jako SPAM
IP: 193.179.196.–
JoDiK
~ Anonymní uživatel
987 příspěvků
3. 7. 2011   #32
-
0
-

To peXtr :
Jestlis na to fakt koukal celý odpoledne, tak budeš potřebovat nový brýle...
Zkus to if a else taky odsadit na stejnou úroveň zleva jako je zbytek těla cyklu for...

Nahlásit jako SPAM
IP: 88.100.43.–
peXtr0
Newbie
3. 7. 2011   #33
-
0
-

To JoDiK : Ty jsi zlatý člověk, já to jen neměl odsazené :D...

Nahlásit jako SPAM
IP: 89.203.165.–
peXtr0
Newbie
3. 7. 2011   #34
-
0
-

Tak a hned mám další dotaz, potřebuji udělat aby aplikace nespadla když někdo napíše jiný znak než číslo.

Myslel jsem na př if promena != a nwm co sem... xD

Nahlásit jako SPAM
IP: 89.203.165.–
Carduus0
Návštěvník
8. 7. 2011   #35
-
0
-

Tak jsem se nad tvým dotazem zapřemýšlel a musím říct, že mi to dalo jako začátečníkovi pořádnou "fušku" něco vymyslet.

odpoved = input("Zadajte cislo") jsem nahradil odpoved = raw_input("Zadajte cislo: ") jelikož u input to čeká pouze číslo(typ int...abych se přiznal nevím jakého slova je to zkratka), a když zadáš písmeno/slovo nebo něco jiného, tak bude očekávat, že to slovo má v proměnné nastavené číslo. raw_input bere "jakoby vše", ale dává je do typu string( zkráceně str).

Takže je to jasné, aby tě to prozatím vzalo i slovo/písmeno musíš tam mít raw_input. No, a teď jsem si lámal hlavu co dál...nemůžeš udělat tohle:

if type(odpoved) == type(int):
    blablabla

 protože i čísla nyní máš v string typu, což ti nepomůže. Kdyby jsi tam pouze změnil ten raw_input, tak by ti to každou odpověď bralo jakou špatnou. (např. Kolik je 1 x 3? Ty zadáš 3 (ve string typu) ale počítač by rád výsledek pouze v int typu, takže jakoby jsi zadal špatný výsledek)

Tak já to vyřešil ještě jinak :

if "pismeno/znak" in odpoved:
    None
elif "pismeno/znak in odpoved:
    None

místo pismeno/znak by jsi napsal písmeno nebo znak a takhle by jsi vypisoval všechny znakya písmena, co jdou napsat (kromě číslic) a nakonec by jsi napsal toto:

else:
    odpoved = odpoved(int)
Nahlásit jako SPAM
IP: 109.235.1.–
Carduus0
Návštěvník
8. 7. 2011   #36
-
0
-

Mimochodem to, co jsem napsal konkrétně tohle mi nešlo:

if type(odpoved) == type(int):
    blablabla

neví někdo náhodou proč?

Vím, že to co jsem napsal je jenom nouzové řešení a určitě by to šlo udělat jednou řádkou (a ne vypisováním celé abecedy), ale nic lepšího mne nenapadlo a pořád lepší napsat něco než nic. Jsem také pouze začátečník a skoro nic o Pythonu nevím, takže je docela dost možné, že v tom co jsem napsal jsou chyby.Proto bych i rád, kdyby mě ostatní uživatelé opravili.

Nahlásit jako SPAM
IP: 109.235.1.–
rAdo0
Newbie
9. 7. 2011   #37
-
0
-

#36 Carduus
No mam dost vysoke promile v sebe ale mam pocit ze neves co znamena type() type() ti vracia iba typ ktory je v zatvorke ked tam mas retazec tak vrati retazec ked tam mas cele cislo tak ti vrati int ale asi sa na to pozrem az rano ked vytriezvem :D 

Nahlásit jako SPAM
IP: 178.41.237.–
Ahoj30
Návštěvník
10. 7. 2011   #38
-
+1
-
Zajímavé

#34 peXtr
Jestli nechceš aby ti ten program spadl stačí když odpověď nebudeš převádět pomocí int() na čísla, tu podmínku nebudeš testovat s čísly, ale s řetězci. Aby si změnil číslo např: 25 na řetězec  napiš:

str(25) # změní se na "25"
str(2 + 3)  # změní se na "5"

?

Jestli  napíšeš jako odpověď písmeno, program ji vyhodnotí jako špatnou odpověď a ne jako překlep.

Nebo zkus tuhle stránku, kde je toho pro python docela dost, tedy pro začátečníky. http://www.geon.wz.cz/buwralug/        na ten problém, aby ti program nespadl, když se pokouší písmeno změnit na číslo zkus konkrétně tenhle odkaz :  http://www.geon.wz.cz/buwralug/e-errors.html    

Nahlásit jako SPAM
IP: 78.45.112.–
melamber777
~ Anonymní uživatel
45 příspěvků
16. 7. 2011   #39
-
0
-

taky jsem začátečník v pythonu a tohle jsem hledal

Nahlásit jako SPAM
IP: 213.19.108.–
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, 13 hostů

Podobná vlákna

Začátečník — založil Yohaku

Začátečník — založil Martin

Začátečník — založil Empty

C++ a začátečník — založil Mr.Boss3D

Zacatecnik — založil sa54d

 

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