Jump to content

Search the Community

Showing results for tags 'python'.

  • Search By Tags

    Oddělujte čárkami
  • Search By Author

Content Type


Fórum

  • Obecné
    • Všeobecné
    • Všechno možné
  • Programování
    • Poradna
    • Návody
    • Tvorba
    • Hledám programátora
  • Herní oblast
    • Poradna
    • Jak na to?
    • Herní kontext
    • Herní zážitky
    • Komunita
  • Grafika
    • Poradna
    • Návody
    • Tvorba
  • Ostatní
    • Hardware a software
    • Hledám/nabízím
    • Archiv
    • 3D Tisk

Calendars

  • Kalendář Pawno.cz

Categories

  • Verze

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Web


Facebook


Jabber


Skype


Steam


Twitter


Github


Pastebin

Found 2 results

  1. Zdravím, vytvářím slicer pro speciální 3D tiskárnu. Pro správnou funkčnost potřebuji vytvořit skript, který dokáže vygenerovat spirálu na povrchu tělesa. Ta poté bude sloužit pro určení trajektorie tiskové hlavy. Dokáži zajistit, aby byla povrch tělesa rozdělen na jednotlivé vrstvy (křivky) o konstantní vzdálenosti. Tyto křivky dokáži rozdělit na body, které mají od sebe stejnou vzdálenost (na křivce). Problém nastává u generování spirály. Jako možné řešení mě napadlo z každé vrstvy bodů vybrat jeden vhodný bod: a) určením vzdálenosti mezi zvoleným bodem na jedné vrstvě a všemi ostatními na vrstvě, která leží o hladinu výše. Vyberu druhý nejvzdálenější bod a tím bych mohl dosáhnout spirály. Problém: body nemusí ležet na trajektorii připomínající spirálu (může se to různě klikatit podle toho, jestli další bod bude ležet "vpravo nebo vlevo". Problém taky může nastat u zakřivených povrchů, kdy nemusí platit to, že druhý nejbližší bod bude právě ten, který potřebuji do spirály. b.) určení bodu pomocí vektoru. Zvolím si vektor, ve kterém by měla spirála začínat a jeho změnu budu v každém dalším kroku porovnávat. V každé vrstvě pak budu hledat nejbližší bod, který leží u konce vektoru. Problém: přechod mezi nerovnoběžnými plochami, prudké změny tvaru povrchu - vektor bude směřovat absolutně mimo požadovaný směr. c) počítání bodů - pokud vím, kolik bodů leží v každé křivce a vím, kterým směrem chci spirálu vést, mohu si napočítat, kolikátý bod v určité vrstvě je ten vhodný. Problém: u tělesa s více plochami, které nejsou stějně vysoké, toto aplikovat nejde Nenapadá někoho další způsob, jak by se dalo docílit spirály na povrchu tělesa, které se skládá z několika (různě velkých a různě orientovaných) ploch? Kdybych se někde v textu nevyjádřil přesně a něco jste nepochopili, tak pište. Už se s tím trápím pár týdnů a můj mozek sem tam odejde na dovolenou Případně dodám další info, pokud bude třeba Díky moc za tipy a rady. Mějte se Petr EDIT: obrázek k problému - jednoduché těleso (povrch kvádru) Mám síť bodů na povrchu tělesa, po kterých musím vytvořit spirálu. https://imgur.com/a/3AgpX REWARD: Kdo mi s tím poradí, toho zvu na pivo REWARD #2: Platím 3 piva!
  2. Obtížnost: Osnova: 1. Úvod; 2. Charakteristika a vlastnosti jazyka; 3. Odlišnosti oproti jiným jazykům; 4. Užitečné odkazy; 5. Závěr. 1. Úvod Zdravím, po delší pauze jsem se rozhodl, že rozjedu nový seriál, tentokrát zaměřený na jazyk Python. Tento jazyk mě hodně baví a rád bych vás do něj trochu zasvětil. Třeba vás zaujme stejně jako mě. Předem bych chtěl varovat, že se nebude jednat o návody psané pro začátečníky s programováním, očekávám již nějakou programátorskou zkušenost. Nebudu dělat podrobné výklady té či oné části jazyka, budu uvádět jen důležité a věcné informace. Postupně projdu různá témata – základní konstrukce jazyka, práci s regulárními výrazy, objektově orientované programování, podpora funkcionálního programování v Pythonu a různé zajímavé možnosti jazyka. Většina návodů bude psána pro verzi 3 a vyšší. V případě, že se daná vlastnost/funkce jazyka vyskytuje od určité verze, budu se snažit tuto informaci uvést. K úvodním informacím by to bylo vše, v tomto návodu se podíváme na charakteristiku jazyka a poté si uvedeme rozdíly oproti jiným jazykům. 2. Charakteristika a vlastnosti jazyka Nerad bych nudil táhlou historií vývoje, takže zmíním jen dva zajímavé fakty – Python se vyvíjí již od konce 80. let minulého století a jeho autorem je nizozemský programátor Guido van Rossum. Tímto máme historii pokrytou. Nebolelo to, že? Každý programovací jazyk má svou charakteristiku. Je-li řeč o Pythonu, jako první zmíním, že se jedná o víceúčelový vysokoúrovňový skriptovací jazyk. Co je vysokoúrovňový jazyk vysvětlovat nebudu (hodně zjednodušeně – není to C ani assembler), stejně tak to bude s pojmem skriptovací (to si můžete vygooglit ). Co bych ale rád rozebral je všestrannost Pythonu. Python totiž nemá jedno konkrétní zaměření. Lze si v něm vytvořit okenní aplikaci (PyQT, tkinter), stejně tak i testovací skripty ke studentským projektům (vysokoškoláci pochopí). Uplatnění má i při vývoji webových stránek a her. Pokročilí programátoři jej využívají i pro strojové učení. Python můžete zkrátka využít (či zneužít) ke všem možným, nemožným, legálním i nelegálním programátorským nápadům. Nyní se zaměřme na jeho konkrétní vlastnosti, které bychom měli znát. Dobré je vědět, že je multiplatformní. Pro ty, kdo se s tím slovem nikdy nesetkali – Python skripty vám budou fungovat i jinde než na Windows (na Linuxu, Mac OS X i dalších). Abychom tyto ale skripty mohli vůbec spustit, budeme potřebovat interpret (ke stažení zde). V tuto chvíli bych měl asi říct, že je to tedy interpretovaný jazyk; to je taky z části pravda. Bez interpretu se neobejdeme, nicméně Python při spuštění skriptu generuje soubory, tzv. bytecode, jež jsou poté interpretovány. Proto bude lepší říct, že Python využívá to nejlepší z obou světů, tedy kompilace i interpretace. Z programovacího hlediska by nás mohlo zajímat, že Python nevyžaduje deklaraci proměnných a využívá tzv. dynamického typování, což znamená, že nejenže nemusíme deklarovat, ale také nebudeme pevně určovat datový typ. Zkrátka si do proměnných uložíme, co se nám zrovna bude hodit. S datovými typy také souvisí silná typová kontrola. Tím vám chci naznačit, abyste hned zapomněli na veškerou černou magii z Javascriptu ("1" + 2 - "3" + "4" == "94") a podobných jazyků. V Pythonu nelze sčítat či odčítat řetězce s čísly a podobně. Často vyzdvihovanou vlastností Pythonu je také to, že podporuje více paradigmat. Pokud jste se teď zhrozili při slově paradigma, nebojte se, nejde o nic strašného. Programovací paradigma si představte jako způsob řešení a zápisu dané úlohy. Existuje hodně paradigmat – procedurální (Pawn), objektově orientované (Java), logické (Prolog), funkcionální (Haskell)... Některé spolu souvisejí, některé jsou nadřazené jiným, další jsou přesným opakem jiných. Nebudu vám v tom dělat guláš, pro zájemce je tu třeba tento článek. A co tedy Python z toho všeho umožňuje? Úlohy v Pythonu lze řešit procedurálně, ale máme možnost využít i objektově orientované programování; do jisté míry umožňuje Python i funkcionální programování (o tom třeba později). 3. Odlišnosti oproti jiným jazykům Teď už víme o základních vlastnostech Pythonu. V této druhé části návodu se podíváme na rozdíly oproti jiným známým jazykům. Žádné středníky Na konci příkazů a výrazů se, na rozdíl od jazyků jako C, Java či PHP, nepíše středník: // kód v C int n = 5; printf("Proměnná 'n' má hodnotu %i", n); # kód v Pythonu n = 5 print("Proměnná 'n' má hodnotu", n) Odsazení namísto složených závorek Většina jazyků se syntaxí jazyka C (C/C++, C#, Java, PHP, Pawn atd.) využívá ke tvorbě bloků složené závorky. V Pythonu se bloky tvoří dvojtečkou za příkazem (if, else, for, while...) a odsazením (běžně 4 mezery): // kód v C if(promenna < 1) { printf("Hodnota proměnné je menší než 1."); return 1; } # kód v Pythonu if promenna < 1: print("Hodnota proměnné je menší než 1.") return 1 and, or, not Logické operátory se nejčastěji zapisují jako && (and), || (or) a ! (not). V Pythonu se tyto operátory zapisují and, or a not: // kód v C if(promenna1 && promenna2 || !promenna1 && !promenna2) # kód v Pythonu if promenna1 and promenna2 or not promenna1 and not promenna2: Pozměněné názvy příkazů Tohle nebude žádná raketová věda, jen se tu a tam změnilo písmenko či slovíčko. Příklad 1: Namísto else if se píše elif. Příklad 2: Namísto catch u zachytávání výjimek máme except. Příklad 3: Poznámky se píší za mřížku #, ne za dvě lomítka //. Příklad 4: Zkuste najít. Chybějící struktury a operátory Ačkoliv vás to asi překvapí, v Pythonu neexistují jisté struktury a operátory, které jsou v ostatních jazycích běžné. Jedná se o struktury switch, do-while a operátory ++ a --. Není to ale nic, co by nešlo nahradit jiným kódem: # kód v Pythonu # náhrada switche if promenna == 1: print("Je to jedna") elif promenna == 2: print("Je to dva") else: print("Je to Bůh ví co") promenna += 1 # náhrada ++ Ternární operátor ?: Mnozí z vás používají ternární operátor ?: pro tvorbu "inline podmínek". Ani tento operátor v Pythonu není, místo něj je tu konstrukce if-else: // kód v C promenna = 1 < 2 ? 1 : 0; // podmínka ? pravda : nepravda # kód v Pythonu promenna = 1 if 1 < 2 else 0 # pravda if podmínka else nepravda Funguje úplně stejně (podmínky lze řetězit), jen se změnilo pořadí operandů. 4. Užitečné odkazy Zde máte několik užitečných odkazů, mimo jiné odkaz na stažení interpretu Pythonu, bez kterého jeho skripty nespustíte: • stažení interpretu Pythonu; • oficiální dokumentace Pythonu; • oficiální dokumentace Pythonu (pro starší verzi 2.7); • kurz Pythonu na Codeacademy; • vývojové prostředí PyCharm (od JetBrains). 5. Závěr A tím pro dnešek končím. Tento text byl jen lehkým úvodem do Pythonu, měli jsme možnost oťukat si trochu jeho syntaxi a uvést jeho vlastnosti. V příštím návodu se budeme věnovat konstrukcím v Pythonu. Pokud jste narazili na nějakou chybu, nějaký překlep nebo se chcete na něco zeptat, případně mi napsat jen tak, jen do toho.
×
×
  • Create New...