Warning
This page is located in archive.

Den 2

Opakování

# Vojta
# revize riskoana
utrata = int(input("Zadejte vasi utratu: "))
if (utrata >= 0):
    padesat = utrata//50
    zbytek = utrata%50
    dvacet = zbytek//20
    zbytek = zbytek%20
    deset = zbytek//10
    zbytek = zbytek%10
    pet = zbytek//5
    zbytek = zbytek%5
    dva = zbytek//2
    zbytek = zbytek%2
    jedna = zbytek
    celkem = padesat+dvacet+deset+pet+dva+jedna
    print("Celkem je potreba " + str(celkem) + " minci")
    print("Pocet minci o hodnote 50 Kc:", padesat)
    print("Pocet minci o hodnote 20 Kc:", dvacet)
    print("Pocet minci o hodnote 10 Kc:", deset)
    print("Pocet minci o hodnote 5 Kc:", pet)
    print("Pocet minci o hodnote 2 Kc:", dva)
    print("Pocet minci o hodnote 1 Kc:", jedna)
else:
    print("Přestaň chlastat, píšeš pak nesmysly")

Alternativa s rozšířením

Možná by bylo hezké používat trochu míň proměnných, jako v následujícím řešení, kde je oštetřeno i nevypisování nulových hodnot.

# riskoana
utrata = int(input("Zadejte vasi utratu: "))
if (utrata >= 0):
    celkem = 0
    a = utrata//50
    celkem +=a
    utrata %= 50
    if a != 0:
        print("Pocet minci o hodnote 50 Kc:", a)
    a = utrata // 20
    celkem += a
    utrata %= 20
    if a != 0:
        print("Pocet minci o hodnote 20 Kc:", a)
    a = utrata // 10
    celkem += a
    utrata %= 10
    if a != 0:
        print("Pocet minci o hodnote 10 Kc:", a)
    a = utrata // 5
    celkem += a
    utrata %= 5
    if a != 0:
        print("Pocet minci o hodnote 5 Kc:", a)
    a = utrata // 2
    celkem += a
    utrata %= 2
    if a != 0:
        print("Pocet minci o hodnote 2 Kc:", a)
    celkem += utrata
    if utrata != 0:
        print("Pocet minci o hodnote 1 Kc:", utrata)
    if celkem != 0:
        print("Celkem je potreba ", celkem, " minci")
    else: 
        print("Kámo, proč mi říkáš, že šetříš a neutrácíš?")
else:
    print("Zaporna utrata? Asi ti nekdo dluzi ;)")


For cyklus

Rozcvička

# riskoana
# revision: kubikji2
n = int(input("Zadej prirozene cislo N: "))
if n > 0:
    ##########################
    print("Bod 1")
    for i in range(n):
        print("Ahoj")
 
    ##########################
    print("Bod 2")
    for i in range(0, n):
        print (i)
 
    ##########################
    print("Bod 3 var 1.")
    for i in range(0, n+1):
        print (i)
 
    print("Bod 3 var 2.")
    for i in range(0, n+1):
        print (i)
 
    ##########################
    print("Bod 4")
    for i in range(n, 0, -1):
        print (i)
 
    ##########################
    print("Bod 5 var 1.")
    for i in range(n, 0-1, -1):
        print (i)
 
    print("Bod 5 var 2.")
    for i in range(n, 0, -1):
        print (i)
    print(0)
else:
    print("Co delat se zapornym cislem nebo nulou?")


Úkol 0

# riskoana
# revision: kubikji2
n = int(input("Zadej nejvyssi prirozene cislo serie: "))
if n > 0:
    for i in range(1, n + 1):
        print(str(i))
else:
    print("Se zapornymi cisly zde nepracujeme, doprogramuj si to, jestli chces ;)")


Úkol 1

# Vojta
# revision: riskoana, kubikji2
n = int(input("Zadej prirozene cislo N: "))
if n > 0:
    for i in range(1, n):
        print (str(i) + ", ", end='')
    print (n)
else:
    print("Bylo zadano zaporne cislo.")


Úkol 2

# Vojta
# revision: riskoana, kubikji2
n = int(input("Zadej prirozene cislo N: "))
if n > 0:
    for i in range(n, 1, -1):
        print (str(i) + ", ", end='')
    print ("1")
else:
    print("Nebylo zadano kladne cislo.")


Úkol 3

# riskoana
# revision: kubikji2
n = int(input("Zadejte cele cislo: "))
sum = 0
for i in range(0, n+1):
    sum += i
print("Soucet cisel je: ", sum)


Rozšíření 3.1

# riskoana
# revision: kubikji2
x = int(input("Zadejte prvni cele cislo serie: "))
y = int(input("Zadejte posledni cele cislo serue: "))
Sum = 0
for i in range(x, y+1):
    Sum += i
print("Součet je: ", Sum)


Úkol 4

# Vojta
# revision: riskoana, kubikji2
faktorial = int(input("Zadejte cislo na faktorizaci: "))
if (faktorial >= 0):
    if faktorial == 0:
        print("n! = 1")
    else:
        vysledek = faktorial
        for i in range (faktorial-1, 0, -1):
            vysledek = vysledek*i
        print("n! = ", vysledek)
else:
    print("Pro zaporna cisla neni faktorial definovan.")


Úkol 5

# riskoana
# revision: kubikji2
 
n = int(input("Napiste prirozene cislo: "))
 
if (n < 1):
    print("Zkus kladne cislo.")
 
elif (n == 1):
    print("1 neni prvocislo.")
 
else:
    for i in range (2, n):
        if (n%i == 0):
            break
    # pokud jsme dojeli na konec for-cyklu (i je n-1) a nenasli
    # jsme zadne cislo, ktere deli n, tak jde o prvocislo
    if i == n-1:
        print('{} je prvocislo.'.format(n))
    else:
        print("Cislo " + str(n) + " je slozene cislo.")

Úkol 5 alternativní řešení

elegantnější řešení pro ty, kdo chtějí optimalizovat

# riskoana
# revision: kubikji2
 
n = int(input("Napiste prirozene cislo: "))
s = int(n**(1/2)+1) # s jako square root
# tento konstrukt zajistí, že prověřujete čísla jen do maximálního možného, kterým dané číso může být dělitelné
# možno taky použít
# s = int(math.sqrt(n)+1)
# nebo
# s = math.ceil(math.sqrt(n)) kde ceil je zaokrouhlování nahoru
 
if n < 1:
    print("S timto cislem si neumim poradit. ¯\_(ツ)_/¯")
 
else:
    # kontrolní proměnná, podle které se na závěr rozhodne, jestli je dané číslo prvočíslem
    checker = False 
 
    if n == 1:
        checker = True
    else:
        for i in range (2, s):
            if n%i == 0: # pokud je zbytek po dělení 0, číslo není prvočíslem
                checker = True
                break
 
    if checker: # stejné jako 'if checker == True'
        print("Cislo neni prvocislem.")
    else:
        print("Jde o prvocislo.")


Vnořené cykly

Úkol 0

# riskoana
vyska = int(input("Zadejte vysku: "))
sirka = int(input("Zadejte sirku: "))
 
if vyska > 0 and sirka > 0:
    for i in range(0, vyska):
        for i in range(0, sirka):
            print("*", end="")
        print()
else:
    print("Nekladne rozmery? Delas si srandu?")


Úkol 1

# riskoana
x = int(input("Zadejte x: "))
y = int(input("Zadejte y: "))
 
if x > 0 and y > 0:
    for i in range(y):
        for j in range(x):
            print("[" + str(j) + "," + str(i) + "]", end="")
        print()
else:
    print("Vstup neni validni, tak sorry no (╯°□°)╯︵ ┻━┻")


Úkol 2

# riskoana
velikost = int(input("Zadej velikost ctverce: "))
if (velikost > 1):
    for a in range (0, velikost):
        for b in range (0, velikost):
            if (a == b) or (a + b == velikost - 1):
                print("1", end=" ")
            else:
                print("0", end=" ")
        print()
else:
    print("Poprosim o nejake validni cislo.")


Úkol 3

# riskoana
n = int(input("Zadej velikost obrazce: "))
if (n > 1):
    for i in range (1, n+1):
        for j in range (0, i):
            print("X ", end="")
        print()
else:
    print("Poprosim o nejake validni cislo.")


Úkol 4

# kubikji2, riskoana
 
size = int(input("Zadej velikost: "))
for i in range(0, size):
    # vypis tolik mezer, kolikaty mame radek
    # (nejhornejsi radek je nulty)
    for j in range(0, i):
        print("  ", end="")
    # zbytek radku vypln "X"
    for j in range(0,size-i):
        print("X ", end="")
    print("")


Úkol 4 alternativní řešení

# kubikji2
 
N = int(input("Zadejte velikost: "))
 
for y in range(N):
    for x in range(N):
        # x == y je hlavni diagonala, x > y jsou body nad hlavni diagonalou
        if x >= y:
            print("X ", end="")
        else:
            print("  ", end="")
    print()


Úkol 5

# riskoana
n = int(input("Zadej velikost obrazce: "))
if (n > 1):
    for k in range(n):
        print("X", end="")
    print()
    for i in range(n-2):
        print("X", end="")
        for j in range(n-2):
            print(" ", end="")
        print("X")
    for l in range(n):
        print("X", end="")
else:
    print("Poprosim o nejake validni cislo.")

Úkol 5 alternativní řešení

# kubikji2
 
N = int(input("Zadejte velikost: "))
 
for y in range(N):
    for x in range(N):
        # x == 0    je svisla leva cara
        # x == N-1  je svisla prava cara
        # y == 0    je vodorovna horni cara
        # y == N-1  je vodorovna dolni cara
        if (x == 0) or (x == N-1) or (y == 0) or (y == N-1):
            print("X ", end="")
        else:
            print("  ", end="")
    print()

Úkol 6

# author kubikji2
 
N = int(input("Zadejte velikost: "))
 
for y in range(N):
    for x in range(N):
        # x == 0    je svisla leva cara
        # x == N-1  je svisla prava cara
        # y == 0    je vodorovna horni cara
        # y == N-1  je vodorovna dolni cara
        if (x == 0) or (x == N-1) or (y == 0) or (y == N-1):
            print("X ", end="")
        # x == y          je hlavni diagonala
        # x == (N-1) - y  je vedlejsi diagonala
        elif (x == y) or (x == N-1-y):
            print("X ", end="")
        else:
            print("  ", end="")
    print()


Úkol 7

# riskoana
# revision: kubikji2
max_n = int(input("Napiste cele cislo: "))
 
if max_n < 1:
    print("Tak to zkusime znova, jo?")
else:
    for n in range(2, max_n):
        s = int(n**(1/2)+1)
        checker = False
        if n == 1:
            checker = True
        else:
            for i in range(2, s):
                if n % i == 0:
                    checker = True
                    break
        if checker:
           continue
        else:
            print(n)


Práce s textovým řetězcem

Úkol 1

# riskoana
# revision: kubikji2
 
# textovy retezec ...
txt = input("Zadej cele cislo k rozdeleni: ")
# ... a jeho delka
n = len(txt)
 
# finalni vypis
for i in range(n):
    # na kazde treti misto od konce chceme pridat mezeru ...
    # ... a zaroven nas nezajima prvni misto (pripad delky delitelne 3)
    if (n-i) % 3 == 0 and i > 0:
        print(" ", end="")
    # vypis znaku
    print(txt[i], end="")
# zaverecne zalomeni
print()


Úkol 2

# riskoana
# revision: kubikji2
text = input("Zadej text k cenzure: ")
digits = "0123456789"
 
for i in range(len(text)):
    isNum = False
    for j in range(len(digits)):
        if text[i] == digits[j]:
            isNum = True
    # kdyz je cislo, prihod cenzuru...
    if isNum:
        print("*", end="")
    # ... jinak vypis znaku
    else:
        print(text[i], end="")
# finalni vypis zalomeni radku
print()


Úkol 3

# riskoana
text = input("Zadejte text: ")
slova = 1
for i in range(len(text)):
    if text[i] == " ":
        slova +=1
 
print("znaky: " + str(len(text)) + ", slova: " + str(slova))


Úkol 4

# riskoana
bin = input("Zadejte cislo ve dvojkove soustave: ")
dec = 0
 
for i in range(len(bin)):
    if int(bin[i]) == 1:
        dec += 2 ** (len(bin) - i - 1)
 
print("Cislo v desitkove soustave ma hodnotu:", dec)


Volitelné

Úkol 1

# riskoana
n = int(input("Zadejte prirozene cislo: "))
a = 1 #první 3 členy posloupnosti
b = 1
c = 2
if n < 1:
    print("Tak delas si ze me srandu nebo...?")
elif n == 1:
    print(a)
 
elif n == 2:
    print(b)
else:
    for i in range(1, n-2):
        a=b
        b=c
        c=a+b
    print(c)


Úkol 2

# Vojta, fixed by LaSer
a = int(input("Zadej prirozene cislo a: "))
b = int(input("Zadej prirozene cislo b: "))
 
for i in range (1, b + 1):
    if (a % i == 0) and (b % i == 0):
        cislo = i
        print(cislo)

Úkol 2 alternativní řešení

a trochu jiná varianta:

# riskoana
a = abs(int(input("Prvni cele cislo: "))) #použití absolutní hodnoty zajistí, že opravdu dostaneme přirozené číslo
b = abs(int(input("Druhe cele cislo: ")))
 
if a > b:
    a, b = b, a
 
if a==0 and b==0:
    print("Delitelem je kazde cele cislo.")
else:
    d = 1 # číslem 1 budou obě čásla rozhodně dělitelná
    for i in range(2, a + 1): #range nastavena do menšího z čísel
        if a % i == 0 and b % i == 0:
            d = i
    print(d)


courses/pri-bootcamp/solutions/day2.txt · Last modified: 2022/09/14 10:41 by kubikji2