# coding: utf8 # Seminár 02 -- podmienky, zoznamy, cykly """ 0. CONSOLE INPUT """ person = input('Enter your name: ') print('Hello', person) """ 1.PODMIENKY: 1A: if -- definovanie podmienky `if` nám umožní vykonať blok kódu iba v prípade že výraz v podminke je vyhodnotený ako pravdivý: if (podmienka): odsadený blok kódu sa vykoná ak podmienka == True """ name = "Bob" if (name == "Bob"): print ('what a nice name, Bob!') # if name is Bob, this is printed def money(money): if (money < 30): print ('Ostaň doma') print('Máš {0},-Kč'.format(money)) money(int(input('Mám:'))) """ 1B: if, elif, else -- REŤAZENIE PODMIENOK `else` -- definuje blok kódu ktorý sa vykoná ak pôvodná podminenka == False: if (podmienka): čo sa má vykonať ak podmienka == True else: čo sa má vykonať ak podmienka == False """ def money2(money): if (money < 30): return ('Máš {0},-Kč, ostaň doma'.format(money)) else: return ('OK') print(money2(0)) """ `elif` -- pridáva ďalšiu podmienku if (podmienka1): čo sa má vykonať ak podmienka1 == True elif (podmienka2): čo sa má vykonať ak podmienka1 == False ale podmienka2 == True else: čo sa má vykonať ak sú obe false """ def teplomer(teplota): if (teplota > 50): return ('radšej ostaň doma') elif (teplota < -25): return ('radšej ostaň doma') elif (teplota < 0): return ('vezmi si aspoň bundu') else: return ('pekný deň') print(teplomer(-22)) """ 1C: and, or -- ROZŠÍRENIE PODMIENKY LOGICKÝMI OPRÁTORMI """ temperature = 20 if (temperature > 50 or temperature < -25): print ('radšej ostaň doma') elif (temperature < 0): print ('vezmi si aspoň bundu') else: print ('pekný deň') # iný príklad have_weapon = True policeman = True polite = True if (have_weapon and not polite): print ('a bank is waiting') if (policeman and not have_weapon): print ('get a weapon, quick!') if (polite and policeman): print ('take care near the bank') """ 1D: VNORENÉ PODMIENKY """ feeling_sick = True money = 150 car = False if (feeling_sick): if (car): print ('drive to the hospital') elif (money > 100000): print ('take taxi, whatever') else: print ('take a bus') else: if (car and money > 100): print ('plan a trip somewhere') else: print ('at least you are not sick') """ 2. ZOZNAMY Zoznamy sú dátové štruktúry na ukladanie hodnôt. Položky zoznamu môžu byť rôznych dátových typov, zozmamy môžeme triediť. 2A: DEFINOVANIE ZOZNAMU Používame hranaté zátvorky a oddeľujeme čiarkami. """ # zoznam textových reťazcov should_buy = ['carrot', 'milk', 'eggs', 'yogurt'] # zoznam čísel scores = [12, 15, 5, 13, 42, 13] # zoznam so zmiešanými hodnotami a_mix = ['elephant', 'jacket', 154, True, 'R602', 0.00789] """ 2B: PRÍSTUP K POLOŽKÁM ZOZNAMU Položky zoznamu majú svoje indexy. """ activities = ['sleeping', 'eating', 'commuting', 'working', 'meeting', 'working', 'commuting', 'showering', 'sleeping'] print (activities[0] ) print (activities[2:4]) print (activities[-2]) """ 2B: ZMENA POLOŽIEK ZOZNAMU """ my_favourite_animals = ['raindeer', 'frog', 'sheep', 'tiger'] my_favourite_animals[1] = 'dog' print(my_favourite_animals) my_favourite_animals[1:3] = ['cat', 'camel'] print(my_favourite_animals) """ insert(index, položka) -- vkladáme novú položka na miesto v zozname, ostatné položky sa posunú, insert teda nič nemaže """ todo_list = ['buy eggs', 'buy milk', 'go home', 'prepare pancakes'] todo_list.insert(1, 'buy oil') print(todo_list) """ append(item) -- pridáme položku na koniec zoznamu """ items_on_my_desk = ['pen', 'paper', 'coffee'] items_on_my_desk.append ('another paper') print(items_on_my_desk) """ 2C: MAZANIE POLOŽIEK ZOZNAMU del -- mazanie na základe indexu """ my_friends = ['Bob', 'David', 'John', 'Alice'] del my_friends[1] print(my_friends) my_friends = ['Bob', 'David', 'John', 'Alice'] del my_friends[1:3] print(my_friends) my_friends = ['Bob', 'David', 'John', 'Alice'] del my_friends[1:] print(my_friends) """ remove() -- mazanie podľa hodnoty položky, vymaže sa prvý výskyt """ my_friends = ['Bob', 'David', 'John', 'Alice'] my_friends.remove('David') print(my_friends) busses = [21, 15, 13, 15, 23, 10, 5, 4, 21] busses.remove(21) print(busses) """ 2D: ĎALŠIE OPERÁCIE SO ZOZNAMAMI len() -- dľžka zoznamu """ my_friends = ['Bob', 'David', 'John', 'Alice'] print('I have {0} friends'.format(len(my_friends))) """ sčítanie zoznamov """ my_vegetables = ['carrot', 'potato'] your_vegetables = ['tomato'] our_vegetables = my_vegetables + your_vegetables + ['spinach'] print(our_vegetables) """ `in` -- je položka v zozname? """ print ('green' in ['blue', 'red', 'yellow']) print (25 in [1,5,36,25]) """ max(), min() """ regions_population = [1562, 45847, 15454, 1521, 48572, 876, 6797] print(max(regions_population)) print(min(regions_population)) """ 2E: METÓDY PRE ZOZNAMY count() """ chars = ['a', 'b', 'c', 'b', 'a', 'a', 'b', 'c'] print (chars.count('b')) """ index() """ places = ['Ghana', 'Togo', 'Niger', 'Liberia'] print(places.index('Togo')) """ reverse() """ chars = ['a', 'b', 'c', 'd', 'e'] chars.reverse() print(chars) """ 2F: KONVERZIA ZOZNAMOV split() -- text >> zoznam, voliteľný parameter je separátor """ a_text = 'Prague, Munchen, Vienna, Berlin, Skopje' a_list = a_text.split(', ') print(a_list) """ join() -- zoznam >> text, voliteľný parameter je separátor """ route = ['Brno', 'Breclav', 'Bratislava', 'Gyor', 'Budapest'] print ('recommended route is :' ' - '.join(route)) """ 2F: ZOZNAM V ZOZNAME -- MATICE """ # príklad -- parkovací dom # parkovací rad -- zoznam miest parking_area = ['car1', 'car2', 'car3'] print(parking_area[2]) # poschodie v parkovacom dome -- zoznam radov (2D matica) car_park = [ ['car1', False, False], ['car2', 'car3', 'car4'], ['car5', False, 'car6'] ] print(car_park[0][2]) # parkovací dom -- zoznam poschodí (3D matica) parking_building = [ [ ['car1', False], ['car2', 'car3'] ], [ [False, False], [False, 'car4'] ], [ ['car5', False], ['car6', 'car7'] ] ] print(parking_building[1][0][1]) """ 3.CYKLY 3A: FOR Základná iterácia -- opakujeme daný blok kódu pre každú položku v definícii. Cyklus for vie iterovať cez položky v danej sekvencii (zoznam, text), poradie dané poradí položiek v sekvencii. """ alphabet = 'abcdefghijklmnopqrstuvwxyz' for letter in alphabet: print(letter) invited_people = ['Bob', 'Alan', 'Emily', 'Gustav'] for invited_person in invited_people: print ('send invitation letter to', invited_person) """ range() umožňuje nastaviť počet opakovaní vytvorením zoznamu """ for vertex in range(3): print(vertex) """ range() akceptuje 1 až 3 argumenty """ range(5) # -> 0, 1, 2, 3, 4 range(2,8) # -> 2, 3, 4, 5, 6, 7 range(4,18,3) # -> 4, 7, 10, 13, 16 """ dva spôsoby iterovania zoznamu """ names=['Bob', 'Alan', 'Emily', 'Gustav'] for name in names: print(name) for i in range(len(names)): print(i) print(names[i]) """ podmienka v rámci cyklu """ edges_in_polygon = [2,4,7,3,6] for polygon in edges_in_polygon: if polygon == 3: print ('this is a triangle') elif polygon > 10: print ('complex polygon, need to generalize') print("normal polygon") """ vytvorenie nového zoznamu pomocou cyklu """ # pozveme len ľudí s menami začínajúcimi na A people = ['Alice', 'Antonny', 'Bob', 'Cecilia', 'Bernard', 'David', 'Alex'] people_invited = [] for person in people: if person[0] == 'A': people_invited.append(person) print(people_invited) """ ďalšie príklady """ # dľžka reťazce ako parameter pre range() students_id = [17, 56, 123, 4578, 265, 5] students_points = [4, 7, 2, 12, 5, 13, 33, 66] for i in range(len(students_id) - 1): print ('student with id' , students_id[i] , 'has', students_points[i], 'points') # vnorené cykly chars1 = ["a", "b", "c"] chars2 = ["d", "e", "f"] for i in chars1: for j in chars2: print (i + j) # hľadáme pozíciu "car2" parking_slots = [[False, False, "car1"], [False, "car3", False], ["car2", False]] for p in range(len(parking_slots)): for q in range(len(parking_slots[p])): if (parking_slots[p][q] == "car2"): print ("car3 position: ", p, q) """ 3B: WHILE Cyklus prebieha pokým nie je splnená podmienka """ count = 5 while count < 100: count += 30 print('count is changed to', count) print('count is now bigger than 100, it is', count) """ Pozor na nekonečný počet iterácií, napr: i = 5 while i < 6: print (i) Pokiaľ sa dá, je dobré uprednostniť cyklus for. """