Násobilka a "podvádění" – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Násobilka a "podvádění" – Python – Fórum – Programujte.comNásobilka a "podvádění" – Python – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
SwoR0
Duch
5. 7. 2011   #1
-
0
-

#1 peXtr
Dobrý den, podle jedné z lekcí o Pythonu jsem si udělal program na násobilku a nelíbí se mi na něm že jde v něm udělat toto : Kolik je 8*5 ? :8*5 . což se mi nevyhovuje. Stačí mi napovědět

import random
print "Welcome"
cislo=0
spatne=0
pocetprikladu=input("Pocet prikladu ? :") # uzivatel si zada pocet prikaldu
while cislo < pocetprikladu:
    prvnicislo = random.randint(2,9)    
    druhecislo = random.randint(2,9)
    vysledek=prvnicislo*druhecislo
    print "Kolik je",prvnicislo, "*", druhecislo, "?",  # vytiskne otazku
    odpoved=input(":")    # uzivatel zada odpoved (lze  zadat "x*y" a uzna to)
    if odpoved==vysledek: #pokud je odpoved zpravne napise zpravne
        print "zpravne"
    else:
        spatne=spatne+1
        print "spatne,vysledek je", vysledek
    cislo=cislo+1
if spatne == 0:
    print "Vyborne,mate 0 chyb."
if spatne > 0:
    print "Mate spatne", spatne*100/pocetprikladu, "% prikladu"
if spatne ==pocetprikladu:
    print "Mel(a) by sis zopakovat zakladku."
input ("Zmacknete enter pro konec")
Nahlásit jako SPAM
IP: 81.200.56.–
Reklama
Reklama
Řešení
Blujacker
~ Moderátor
0
Grafoman
5. 7. 2011   #2
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

#1 SwoR
Problém je v tom, že funkce input vezme vstup a rovnou ho vyhodnotí (vrací int). Možné řešení je použít raw_input, který vrací řetězec.

>>> raw_input()
5*5
'5*5'

Abychom však mohli porovnávat správný výsledek a výstup z funkce raw_input, musíme výstup převést na číslo funkcí int()

>>> x = raw_input()
5
>>> type(x)
<type 'str'>
>>> x=int(x)
>>> x
5
>>> int(x)
5

Samozřejmě by zde ale muselo být nějaké ošetření možného špatného vstupu - uživatel zadal něco jiného než číslo

>>> x = raw_input("5*5")
5*5
>>> int(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''

Takže nějaké to try a except by tam muselo být. Ale špatnými vstupy se zatím asi nemusíte zabývat/

Btw, v pythonu 3.x už funkce raw_input není a nahrazuje ji funkce input -> funkce input potom vrací  už řetězec

Nahlásit jako SPAM
IP: 88.100.163.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
Blujacker
~ Moderátor
0
Grafoman
5. 7. 2011   #3
-
0
-

Takže například:

import random
print "Welcome"
cislo=0
spatne=0
pocetprikladu=input("Pocet prikladu ? :") # uzivatel si zada pocet prikaldu
while cislo < pocetprikladu:
    prvnicislo = random.randint(2,9)    
    druhecislo = random.randint(2,9)
    vysledek=prvnicislo*druhecislo
    print "Kolik je",prvnicislo, "*", druhecislo, "?",  # vytiskne otazku
    odpoved=raw_input(":")    # uzivatel zada odpoved (NElze  zadat "x*y" a NEuzna to)
    try:
        odpoved = int(odpoved)
    except:
        spatne=spatne+1
        print "spatne,vysledek je", vysledek
        cislo=cislo+1
        continue
    if odpoved==vysledek: #pokud je odpoved zpravne napise zpravne
        print "spravne"
    else:
        spatne=spatne+1
        print "spatne,vysledek je", vysledek
    cislo=cislo+1
if spatne == 0:
    print "Vyborne,mate 0 chyb."
if spatne > 0:
    print "Mate spatne", spatne*100/pocetprikladu, "% prikladu"
if spatne ==pocetprikladu:
    print "Mel(a) by sis zopakovat zakladku."
input ("Zmacknete enter pro konec")
Nahlásit jako SPAM
IP: 88.100.163.–
Navštivte server Matematika pro každého
Najdete zde články zabývající se matematikou základních a středních škol a databázi hlavolamů.
Pro vyzkoušení Vaš
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, 25 hostů

Podobná vlákna

Nasobilka, lekce 1 — založil P1trs

Okno a násobilka — založil Vasco

Malá násobilka — založil matej13

Mala násobilka v php — založil Mejzi

 

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