September discount week
Tento týden až 80% sleva na e-learning týkající se jazyka C
50 % bodů zdarma na online výuku díky naší Slevové akci!

Diskuze: Zadane cislo vyjadrit jako soucet ctvercu.

Aktivity (3)
Avatar
Hrabě
Člen
Avatar
Hrabě:11. srpna 11:48

Zadane cislo vypisuju jako soucet ctvercu - to me funguje, ale rad bych v pripade, ze dane cislo nelze vyjadrit jako soucet ctvercu vypsal treba "Nejde!", ale jen jednou ne v kazde iteraci.
Uz na to cumim dlouho a pro vlastni oci nevidim.

Diky za radu.

Zkusil jsem:

def soucet_ctvercu(n):
    for i in range(1, n+1):
        if (i**(1/2)) % 1 == 0 and ((n-i)**(1/2)) % 1 == 0:
            print(n, "=", i, " + ", n-i)
    #print("Nejde to.")

soucet_ctvercu(13)
print("---")
soucet_ctvercu(14)
 
Odpovědět
11. srpna 11:48
Avatar
Radek Veverka
Redaktor
Avatar
Odpovídá na Hrabě
Radek Veverka:11. srpna 12:25

Tak jakmile máš nalezeno, můžeš ukončit vykonávání celé funkce:

def soucet_ctvercu(n):
    for i in range(1, n+1):
        if (i**(1/2)) % 1 == 0 and ((n-i)**(1/2)) % 1 == 0:
            print(n, "=", i, " + ", n-i)
            return
    print("Nejde to.")

soucet_ctvercu(13)
print("---")
soucet_ctvercu(14)
 
Nahoru Odpovědět
11. srpna 12:25
Avatar
Hrabě
Člen
Avatar
Odpovídá na Radek Veverka
Hrabě:11. srpna 12:46

Omlouvam se, nenapsal jsem to do zadani uplne presne: je potreba vypsat soucet vsech moznosti, returnem pri prvnim vyskytu to ukoncim a to nechci.

Editováno 11. srpna 12:49
 
Nahoru Odpovědět
11. srpna 12:46
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
Radek Veverka
Redaktor
Avatar
Odpovídá na Hrabě
Radek Veverka:11. srpna 12:57

Tak po cyklu zkontroluj, jestli jsi něco našel alespoň jednou:

def soucet_ctvercu(n):
    nalezeno = False
    for i in range(1, n+1):
        if (i**(1/2)) % 1 == 0 and ((n-i)**(1/2)) % 1 == 0:
            print(n, "=", i, " + ", n-i)
            nalezeno = True
    if (nalezeno == False):
         print("Nejde to.")

soucet_ctvercu(13)
print("---")
soucet_ctvercu(14)
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět
11. srpna 12:57
Avatar
Hrabě
Člen
Avatar
Hrabě:11. srpna 13:14

Super, dekuju :-)

 
Nahoru Odpovědět
11. srpna 13:14
Avatar
Hrabě
Člen
Avatar
Hrabě:11. srpna 13:44

jen jeste mala uprava, abych nezapocital mezi scitance 0, tak jsem upravil range (1, n)

def soucet_ctvercu(n):
    nalezeno = False
    for i in range(1, n):
        if (i**(1/2)) % 1 == 0 and ((n-i)**(1/2)) % 1 == 0:
            print(n, "=", i, " + ", n-i)
            nalezeno = True
    if (nalezeno == False):
         print("Nejde to.")

soucet_ctvercu(13)
print("---")
soucet_ctvercu(14)
 
Nahoru Odpovědět
11. srpna 13:44
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.