Matematika – Python – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Matematika – Python – Fórum – Programujte.comMatematika – Python – Fórum – Programujte.com

 

Michal
~ Anonymní uživatel
666 příspěvků
15. 11. 2020   #1
-
0
-

Ahoj, mám kod a chtěl bych aby po 10 příkladech kod skončil a napsal kolik příkládů bylo špatně a dobře, pomůže mi prosím někdo ? Děkuji


import random
import time

print("="*100)
print("Nasobeni             = 1")
print("Scitani              = 2")
print("Odcitani             = 3")
vyber = int(input("Vyber si             : "))
if vyber == 1:
    print("="*100)
    print("Lehka = 1")
    print("Tezka = 2")
    obtiznost1 = int(input("Vyber si obtiznost: "))
    if obtiznost1 == 1:
        while True:
            a = random.randint(1, 9)
            b = random.randint(1, 9)
            print(a,"*",b)
            f = int(input("Kolik to je?: "))
            x = 1
            l = a*b
            if f == l:
                print("Správně")
            else:
                print("Špatně")
    if obtiznost1 == 2:
        while True:
            a = random.randint(1, 20)
            b = random.randint(1, 20)
            print(a,"*",b)
            f = int(input("Kolik to je?: "))
            l = a*b
            if f == l:
                print("Správně")
            else:
                print("Špatně")
if vyber == 2:
    print("="*100)
    print("Lehka = 1")
    print("Tezka = 2")
    obtiznost1 = int(input("Vyber si obtiznost: "))
    if obtiznost1 == 1:
        while True:
            a = random.randint(1, 30)
            b = random.randint(1, 30)
            print(a,"+",b)
            f = int(input("Kolik to je?: "))
            l = a+b
            if f == l:
                print("Správně")
            else:
                print("Špatně")
    if obtiznost1 == 2:
        while True:
            a = random.randint(1, 200)
            b = random.randint(1, 200)
            print(a,"+",b)
            f = int(input("Kolik to je?: "))
            l = a+b
            if f == l:
                print("Správně")
            else:
                print("Špatně")
if vyber == 3:
    print("="*100)
    print("Lehka = 1")
    print("Tezka = 2")
    obtiznost1 = int(input("Vyber si obtiznost: "))
    if obtiznost1 == 1:
        while True:
            a = random.randint(1, 30)
            b = random.randint(1, 30)
            print(a,"+",b)
            f = int(input("Kolik to je?: "))
            l = a+b
            if f == l:
                print("Správně")
            else:
                print("Špatně")

    if obtiznost1 == 2:
        while True:
            a = random.randint(1, 200)
            b = random.randint(1, 200)
            print(a,"-",b)
            f = int(input("Kolik to je?: "))
            l = a-b
            if f == l:
                print("Správně")
            else:
                print("Špatně")
 

Nahlásit jako SPAM
IP: 77.242.90.–
gna
~ Anonymní uživatel
1545 příspěvků
15. 11. 2020   #2
-
0
-

Cyklus while se dá ukončit příkazem break. Takže bys tam mohl mít počitadlo a po dosažení nějakého maxima to breaknout.

Ale spíš bych doporučil prostě použít cyklus for.

for _ in range(10):
    provede se 10x

A při vyhodnocování odpovědí zase budeš aktualizovat nějaké počitadlo správných odpovědí.

A máš tam 6x stejný kod, zkus podmínit jen to, co se liší.

import random

print("="*100)
print("Nasobeni             = 1")
print("Scitani              = 2")
print("Odcitani             = 3")
operace = int(input("Vyber si             : "))

print("="*100)
print("Lehka = 1")
print("Tezka = 2")
obtiznost = int(input("Vyber si obtiznost: "))

if operace == 1:
    operator = "*"
    maxoperand = 9 if obtiznost == 1 else 20
elif operace == 2:
    operator = "+"
    maxoperand = 30 if obtiznost == 1 else 200
else:
    operator = "-"
    maxoperand = 30 if obtiznost == 1 else 200

spatne, spravne = 0, 0
for _ in range(10):
    a = random.randint(1, maxoperand)
    b = random.randint(1, maxoperand)
    priklad = "%d %s %d" % (a, operator, b)
    vysledek = eval(priklad)

    print(priklad)
    odpoved = int(input("Kolik to je?: "))

    if odpoved == vysledek:
        print("Správně")
        spravne += 1
    else:
        print("Špatně")
        spatne += 1

print("Správně", spravne)
print("Špatně", spatne)
Nahlásit jako SPAM
IP: 213.211.51.–
Michal
~ Anonymní uživatel
666 příspěvků
15. 11. 2020   #3
-
0
-

#2 gna
Díky moc

Nahlásit jako SPAM
IP: 77.242.90.–
gna
~ Anonymní uživatel
1545 příspěvků
16. 11. 2020   #4
-
0
-

Ta úvaha s breakem byl nějaký brain-fart. To sice jde, ale samozřejmě by se taková situace řešila přímo v hlavičce toho cyklu -- while pocet < maximum. To jen pro doplnění   

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

Podobná vlákna

Matematika — založil Peter D.

MATEMATIKA — založil Tomáš

Matematika — založil joskoo

Matematika — založil Adam

Matematika — založil David

 

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