IB111 Úvod do programovaní skrze python 6. Autor: Slavomír Krupa, Text inšpirovaný Valdemarom Švábenským Input Input ★ Funkcia s jedným parametrom, ktorá načíta vstup ★ Výpíše hodnotu svojho parametru a vráti hodnotu načítanú z klávesnice (zo shellu) ★ vráti premennú typu string ★ Chceme int? Ako skontrolovať či je v poriadku? age = input("Enter your age:") String ★ Pred pretypovaním vhodné overiť či je vôbec možné ★ Funkcie overujú aké znaky daný string obsahuje ★ isalpha() - len znaky abecedy ★ isdecimal() - len číslice (pretypovanie na int) ★ isalnum() - obsahuje len znaky abecedy a číslice ★ pretypovanie na float ?? Content check a = char.isalpha() b = char.isdecimal() c = char.isalnum() a = True b = False c = True char = "aA" Content check a = num.isalpha() b = num.isdecimal() c = num.isalnum() a = False b = True c = True num = "7355608" Content check a = mix.isalpha() b = mix.isdecimal() c = mix.isalnum() a = False b = False c = True mix = "A245b" Content check a = flt.isalpha() b = flt.isdecimal() c = flt.isalnum() a = False b = False c = False d = True flt = "25.4" d = flt.replace(".", "", 1).isdecimal() Search Linear search ★ Ak je počet prvkov zoznamu, algoritmus spraví najviac porovnaní (teda skontroluje najviac prvkov) ○ S rastúcim predpokladáme lineárny nárast počtu krokov algoritmu ○ Pre 1000000 prvkov maximálne 1000000 krokov Zdroj: http://www.oxfordmathcenter.com/drupal7/node/31 Binary search Binary search ?Pair programming? Hra ★ Máme dvoch hráčov, A a B ★ A si myslí prirodzené číslo od 1 do ★ B tipuje čísla ★ A odpovedá: moje číslo je menšie/rovné/väčšie ako tvoj tip ★ Akú stratégiu má B použiť, aby čo najrýchlejšie uhádol? Úloha 1 ★ Hráč A = počítač („myslí“ si číslo od 1 do ) ★ Hráč B = používateľ (tipuje čísla) ★ Nemusíte riešiť ošetrenie vstupu ★ (príklad na ďaľšom slide…) Úloha 1 >>> guess_number(10) Enter your guess( or 0 to end) : 5 My number is lower Enter your guess( or 0 to end) : 3 My number is lower Enter your guess( or 0 to end) : 1 My number is greater Enter your guess( or 0 to end) : 2 You won on 4 attempt. ★ Hráč A = používateľ (myslí si číslo od 1 do ) ★ Hráč B = počítač (pýta sa, či je hľadané číslo menšie, rovné alebo väčšie ako jeho tip) ★ Nemusíte riešiť ošetrenie vstupu ★ (príklad na ďaľšom slide…) Úloha 2 Úloha 2 >>> guess_number_pc(10) Think of number from 1 to 10 Is your number lower (-1), equal (0) or greater (1) than 5 ? 1 Is your number lower (-1), equal (0) or greater (1) than 8 ? -1 Is your number lower (-1), equal (0) or greater (1) than 6 ? 1 Your number is 7 Úloha 3 ★ Naprogramujte funkciu pre binárne vyhľadávanie (bez slajdov z prednášky) ★ Fungujúcu aj pre nezoradené zoznamy ○ Použite sort >>>binary_search( 7, [1, 4, 5, 7, 9]) True >>>binary_search( 8, [1, 4, 5, 7, 9]) False >>>binary_search( 7, [7, 5, 9]) True ★ Do funkcie z Úlohy 3 pridajte počítadlo krokov (iterácií hlavného cyklu) ★ Rátajte počet iterácií pre veľké vstupné zoznamy ★ Vytvorte si samostatnú funkciu, ktorá vygeneruje zoznam čísel a vráti ★ Analyzujte výsledky ako v DÚ 2 Úloha 4 ★ Naprogramujte funkciu pre lineárne vyhľadávanie ★ Pridajte počítadlo iterácií ★ Analyzujte výsledky ako v Úlohe 4 Úloha 5 Úloha 1* ★ Rozšírte úlohu 1 o kontrolu vstupu >>>guess_number( 10) Enter your guess( or 0 to end) : adad Wrong input enter again Enter your guess( or 0 to end) : 565a Wrong input enter again Enter your guess( or 0 to end) : 22 My number is lower Enter your guess( or 0 to end) : ★ Hráč A = počítač („myslí“ si číslo od 1 do a odpovedá, či je hľadané číslo menšie, rovné alebo väčšie ako tip B) ★ Hráč B = počítač (tipuje čísla) Úloha 2* Credits Special thanks to all the people who made and released these awesome resources for free: Presentation template by SlidesCarnival Photographs by Unsplash