NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 3 - Vícerozměrné seznamy v Pythonu

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Odpovídá na coells
Milan Šmídl:30.12.2015 10:24
print("milduv fraktal")
import turtle#graficke prostredi, turtle se ovlada jednoduchymi prikazy forward atd.
initial = int(input("zadej základní rozmer"))#

def main():
    turtle.forward(initial)#
    turtle.left(90)
    while True:
           turtle.forward(lengh_computation)
           turtle.penup
           turtle.left(180)
           turtle.forward(lengh_computation)
           urtle.pendown
           turtle.forward(lengh_computation)


def lengh_computation(initial):
    while True:
        initial = initial/2
        return initial

Zde jsou dvě funkce a já bych to rád udělal tak, aby se pri každém cyklu (while ve funkci main)vzdálenost pohybu forward zmenšila o polovinu..Výpočet je ve funkci lengh...Jde o to jak se synchronizuji oba cykly, v podstatě bych si přál aby se pro každý cyklus ve funkci main provedl jeden cyklus výpočtu funkce lengh...
zkusil jsem už všemožné kombinace, ruzně jsem si to vyprintovával, ale asi jsem se nějak zacyklil...pokud jsi z toho alespoň trošku moudrý, tak budu opravdu velmi rád za jakýkoliv feedback...měj se pěkně

Editováno 30.12.2015 10:26
 
Odpovědět
30.12.2015 10:24
Avatar
Odpovídá na Milan Šmídl
Milan Šmídl:30.12.2015 10:33

Ps: je mi jasný, že v této podobě to nemůže chodit, je to pouze pro ilustraci co bych jakože rád udělal, zkoušel jsem třeba dvě funkce, kdy výstup jedné je vstupem druhe a naopak a funguji v cyclu, ale neúspěšně..V podstatě nic nefungovalo a už mě to dost flustruje:)

 
Odpovědět
30.12.2015 10:33
Avatar
coells
Tvůrce
Avatar
Odpovídá na Milan Šmídl
coells:30.12.2015 11:43

Fraktály je jednodušší psát pomocí rekurze.
Funkce zpravidla volá sama sebe s upravenými parametry a končí až ve chvíli, kdy je splněna ukončující podmínka.

import turtle

def vlocka(t, delka):
    if delka < 3:
        return
    t.forward(delka / 3)
    t.left(60)
    vlocka(t, delka / 3)
    t.right(120)
    vlocka(t, delka / 3)
    t.left(60)
    t.forward(delka / 3)

t = turtle.Turtle()

delka = 3 * 3 * 3 * 3 * 3 * 3
t.penup()
t.back(delka / 2)
t.pendown()
vlocka(t, delka)
 
Odpovědět
30.12.2015 11:43
Avatar
Odpovídá na coells
Milan Šmídl:30.12.2015 12:05

Díky ti člověče, díky moc..měj se kráásně:)

 
Odpovědět
30.12.2015 12:05
Avatar
Ivan Bilík
Člen
Avatar
Ivan Bilík:4.12.2018 17:42

Dobrýden,dočetl jsem se až do deváté lekce.Udělal jsem si představu o složitosti programování.Mám vnuky a rád bych je získal pro studium elektroniky.Začali jsme Arduinem a trápíme se programem ,který by na Oled displeji vykreslil datum a reálný čas.Našel by se někdo, kdo by nám poslal takový kod? Děkuju Bilík I. email bilik.ivan@seznam.cz

 
Odpovědět
4.12.2018 17:42
Avatar
Jan Koloničný:9.4.2019 15:18

Ahoj,
U těch N-rozměrných polí ať koukám, jak koukám se mi neshoduje obrázek s tím zápisem v programu. Myslím to tak, že strana x má 4 prvky, y taky a z 3 prvky. Takže by to mělo být takhle?

kinosaly = []

for i in range(3):
    kinosal = []
    for j in range(4):
        temp = []
        for k in range(4):
            temp.append(0)
        kinosal.append(temp)
    kinosaly.append(kinosal)

A dále jsem se chtěl zeptat, proč ty zubatá pole jsou přehozená (řádky se sloupcema). Je to kvůli tomu, že sloupce vždy začínají číslem a je to jednodušší pro zápis? Popřípadě jak by zápis vypadal, kdyby například tabulka nezačínala 15kou a bylo by tam místo ní prázdno? Pouze by místo 15 bylo " "?
To znamená, mohlo by to vypadat takhle, kdybych to dělal přesně podle obrázku a nezaměňoval sloupce za řádky?

zubate = [[15, 3, 9, " ", 5], [2, 3, 1, " ", " "], [8, 7, 16, " ", " "], [5, " ", 3, " ", " "], [3, " ", " ", " ", " "]]
for seznam in zubate:
    for prvek in seznam:
        print(prvek, end=" ")
    print(end="\n")
 
Odpovědět
9.4.2019 15:18
Avatar
Michal Novák:29.10.2019 18:17

Tak tady jsem se nějak ztratil...i přes to, že cykly umím třeba v Matlabu, tak tady to fakt nechápu...ta syntaxe mi nejde do hlavy.

Mohl by mi prosím někdo podrobně jak pro blbce vysvětlit tuto syntaxi?

kinosal[2][2] = 1
# 4. řádek
for i in range(1, 4):
kinosal[3][i] = 1
# Poslední řádek
for j in range(0, 5):
kinosal[4][j] = 1

A co znamená (resp. co to dělá)?
temp.append(0)
kinosal.appen­d(temp)
kinosaly.appen­d(kinosal)

 
Odpovědět
29.10.2019 18:17
Avatar
Marián Mídelka:1.1.2020 20:30

No ja som to pochopil takto: kinosal [2][2] je stredný riadok, stredný stĺpec(počítaš riadok aj stĺpec 0,1,2) - doplň 1, kinosál 3 (0,1,2,3) riadok je potom 4 predposlený a namiesto i doplní 1 pre 2až4 stĺpec, kinosál 4 je posledný riadok a namiesto j doplníš 1 od 0 po 4 stĺpec - to je 1 až 5 stĺpec. Pokiaľ ide o temp je to vlastne zoznam, kde doplní 0. Zoznam temp je potom doplnený do zoznamu kinosál a ten je zase doplnený do zoznamu kinosály, čiže všade sa vlastne doplnia nuly. Ja som to pochopil tak a sedí mi to.

Odpovědět
1.1.2020 20:30
Keď niečo nejde, skús niečo iné. Možno to tiež nepôjde!
Avatar
Pavel Dostal
Člen
Avatar
Pavel Dostal:26.1.2020 18:34

Ahoj. Můžete mi někdo poradit, jak dostanu indexy min a maxima? Je možné vyhledávání maxima a minima nějak zjednodušit?

from random import randrange
kinosal = []
for i in range(5):
    temp = []
    for j in range(5):
        cislo=randrange(1,100)
        temp.append(cislo)
    kinosal.append(temp)
mn=mx=temp[0]
for seznam in kinosal:
    for prvek in seznam:
        print(prvek, end="\t")
    print(end="\n")
x=y=index_x=index_mn=0
for seznam in kinosal:
    x+=1
    for prvek in seznam:
        y+=1
        if mx<prvek:
            mx=prvek
            index_maxy=y
            index_maxx=x
        elif mn>prvek:
            mn=prvek
            index_mn=y
            index_mnx=x
print(f'Minimum 2D pole je {mn}, maximum je {mx}.')
print(f'Index minima je x={index_mnx}, y={index_mn}. Index maxima je x={index_maxx}, y={index_maxy}.')
 
Odpovědět
26.1.2020 18:34
Avatar
Richard Hlubuček:10.5.2020 15:52

Super lekce! Jasný a jednoduchý příklad, který dá hodně. Díky gcx11 :)

Odpovědět
10.5.2020 15:52
I have no name, I am but two days old.
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 10 zpráv z 41.