Liczby losowe i pętla while w języku Python

Podobne dokumenty
Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Pętla for. Wynik działania programu:

Algorytmy i struktury danych

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Podstawy Programowania C++

Wstęp do informatyki- wykład 7

Bloki anonimowe w PL/SQL

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

JAVAScript w dokumentach HTML - przypomnienie

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

lekcja 8a Gry komputerowe MasterMind

Instrukcje sterujące

Definicje wyższego poziomu

Programowanie - instrukcje sterujące

Wstęp do programowania

Wykresy i interfejsy użytkownika

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Konstrukcje warunkowe Pętle

Zapis algorytmów: schematy blokowe i pseudokod 1

Języki i metody programowania

1 Podstawy c++ w pigułce.

Programowanie w Turbo Pascal

Cw.12 JAVAScript w dokumentach HTML

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Paradygmaty programowania

Pętle instrukcje powtórzeo

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Pętle. Programowanie komputerowe

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

ECDL Podstawy programowania Sylabus - wersja 1.0

JAVA?? to proste!! Autor: wojtekb111111

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Wstęp do informatyki- wykład 6

KURSY PROGRAMOWANIA DLA DZIECI

Algorytm. a programowanie -

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy programowania skrót z wykładów:

Wskazówki dotyczące zmiennych, tablic i procedur 1

Warsztaty dla nauczycieli

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

KURSY PROGRAMOWANIA DLA DZIECI

4. Funkcje. Przykłady

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

LibreOffice Calc VBA

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Blockly Kodowanie pomoc.

JAVAScript w dokumentach HTML (2)

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

Podstawy bioinformatyki 2017/18

1 Podstawy c++ w pigułce.

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi.

Budowa i generowanie planszy

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Instrukcja warunkowa i złoŝona.

3. Instrukcje warunkowe

3 Przygotował: mgr inż. Maciej Lasota

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Pętle. Dodał Administrator niedziela, 14 marzec :27

Java Podstawy. Michał Bereta

7. Pętle for. Przykłady

Instrukcje cykliczne (pętle) WHILE...END WHILE

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

zdarzenie losowe - zdarzenie którego przebiegu czy wyniku nie da się przewidzieć na pewno.

WHILE (wyrażenie) instrukcja;

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Struktura pliku projektu Console Application

Wstęp do programowania

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

WHILE (wyrażenie) instrukcja;

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Modelowanie rynków finansowych z wykorzystaniem pakietu R

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

- wszystkie elementy - wszystkie elementy

Podstawy Programowania Podstawowa składnia języka C++

Wstęp do programowania

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

DECLARE VARIABLE zmienna1 typ danych; BEGIN

ForPascal Interpreter języka Pascal

Podstawy programowania w Pythonie

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Bash - instrukcje warunkowe, pętle i funkcje

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

System operacyjny Linux

PHP w-3. Sterowanie w PHP

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Transkrypt:

Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1

Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak nieprzewidywalność w programach komputerowych jest ciekawa (zmiana strategii przeciwnika itd). Jednym z przykładów takiej nieprzewidywalności są liczby losowe. 2

Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak nieprzewidywalność w programach komputerowych jest ciekawa (zmiana strategii przeciwnika itd). Jednym z przykładów takiej nieprzewidywalności są liczby losowe. Pułapka W językach programowania liczby losowe są generowane na podstawie wzoru matematycznego, więc nie są one prawdziwie losowe. Mówi się o nich, że są to liczby pseudolosowe i wystarczają w przypadku większości aplikacji. 2

Przykładowy kod programu losujący liczby Weźmy następujący kod programu: import random die1 = random.randint(1,6) die2 = random.randrange(6) total = die1 + die2 print("wyrzuciles ", die1, " oraz ",die2, " razem ", total) raw_input() 3

Import modułu random Linijka import random jest załadowaniem modułu. Moduły są to pliki, które zawierają kod przeznaczony do wykorzystywania w innych programach. W przypadku modułu random jest on odpowiedzialny za funkcję związane z generowaniem liczb pseudolosowych. 4

Funkcja randint() Moduł random zawiera funkcję randint(), która generuje losową liczbę całkowitą. Funkcja randint() wymaga podania dwóch argumentów w postaci liczb całkowitych i zwraca losową liczbę całkowitą o wartości mieszczącej się w przedziale wyznaczonym przez argumenty do które one należą. Tak więc randint(1,6) wylosuje jedną z liczb: 1,2,3,4,5 lub 6. 5

Funkcja randrange() Moduł random zawiera również funkcję randrange(), która generuje liczbę całkowitą. Istnieje kilka sposobów wywołania funkcji randrange(), ale najprostszym jest użycie pojedyńczego argumentu w postaci dodatniej liczby całkowitej. Wówczas wylosowana zostanie liczba całkowita z przedziału <0,liczba_w_argumencie>. Tak więc wynikiem randrange(6) będzie jedna z liczb: 0,1,2,3,4 lub 5. 6

Klauzula elif Rozważmy następujący kod programu: import random number = random.randint(1,3) if number == 1: print("wylosowano liczbe 1") elif number == 2: print("wylosowano liczbe 2") else: print("wylosowano liczbe 3") raw_input() 7

Klauzula elif Rozważmy następujący kod programu: import random number = random.randint(1,3) if number == 1: print("wylosowano liczbe 1") elif number == 2: print("wylosowano liczbe 2") else: print("wylosowano liczbe 3") raw_input() Program losuje jedną z liczb 1,2,3 oraz sprawdza, która liczba została wylosowana. 7

Klauzula elif Instrukcja if z klauzulami elif może zawierać ciąg warunków do sprawdzenia przez program. Warto zauważyć, że pierwszy warunek zapisuje się przy pomocy if, ale pozostałe warunki sprawdza się przy użyciu klauzuli elif. Klauzula else jak wiemy dotyczy pozostałych warunków nie wymienionych w instrukcjach if oraz elif. Pułapka Ważną cechą instrukcji if zawierającej klauzulę elif jest fakt, że gdy tylko okaże się, że jakiś warunek ma wartość True, komputer wykona odpowiadający mu blok kodu i nastąpi wyjście z instrukcji. To oznacza, że zostanie wykonany tylko jeden blok kodu. 8

Podsumowanie instrukcji służących do rozgałęziania kodu Instrukcja if <warunek>: <blok_kodu> if <warunek>: <blok_kodu_1> else: <blok_kodu_2> if <warunek1>: <blok_kodu_1> elif <warunek2>: <blok_kodu_2>... elif <warunek N>: <blok_kodu_n> else: <blok_kodu_else> Opis Instrukcja if. Jeśli <warunek> jest spełniony, <blok_kodu> jest wykonywany W przeciwnym przypadku jest pomijany Instrukcja if z klauzulą else. Jeśli jest spełniony, Wykonywany jest <blok_kodu_1>. W przeciwnym przypadku Wykonywany jest <blok_kodu_2 Instrukcja if z klauzulą elif i opcjonalną klauzulą else Wykonywany jest blok pierwszego spełnionego warunku Jeśli żaden warunek nie jest spełniony, wykonywany jest blok opcjonalnej klauzuli else 9

Tworzenie pętli w programie Przypuśćmy, że chcemy utworzyć program, który będzie pytał nas o wprowadzenie liczby dopóki nie wprowadzimy liczby 0. Program ma zakończyć działanie dopiero w momencie wprowadzenia liczby 0 przez użytkownika. W tym wypadku program będzie potrzebował następującej instrukcji: Dopóki nie wprowadziłeś liczby 0 wprowadzaj liczbę. To powtarzanie czynności w programowaniu nazywamy pętlami. W Pythonie istnieją różne pętle, ale szczególnie używa się pętli while oraz for. 10

Przykładowy program z użyciem pętli while Program z poprzedniego slajdu może wyglądać następująco: number = "" while number!= 0: number = int(raw_input("podaj liczbe calkowita: ")) print("wprowadziles liczbe zero. Koncze program!") raw_input() 11

Pętla while Format pętli while wygląda bardzo podobnie jak instrukcja if. Jedyna różnica polega na zastępieniu słowa if słowem while. Natomiast w obu typach instrukcji, jeśli warunek jest spełniony, blok kodu (a w przypadku pętli while blok kodu nazwiemy ciało pętli) jest wykonywany. Lecz w instrukcji while komputer sprawdza warunek i wykonuje blok kodu raz po raz dopóki warunek nie okaże się fałszywy. Jest to charakterystyczna cecha dla pętli. 12

Rola wartownika Pętle while są często kontrolowane przez wartownika - zmienną używaną w warunku i porównywaną z jakąś inną wartością lub wartościami. W naszym przykładzie role wartownika pełni zmienna number. Uwaga Wartownik musi być utworzony przed wykonaniem pętli while!!! Upewnij się, że istnieje możliwość, iż warunek pętli przyjmie w pewnym momencie wartość True. W przeciwnym wypadku ciało pętli może się nigdy nie wykonać. Unikaj pętli nieskończonych, czyli takich w których nigdy nie zajdzie w warunku pętli wartość True. 13

Przykłady błędnych pętli Rozważmy następujący kod programu: number = 0 while number!= 0: number = int(raw_input("podaj liczbe calkowita: ")) print("wprowadziles liczbe zero. Koncze program!") raw_input() W tym przypadku pętla nigdy się nie wykona! 14

Przykłady błędnych pętli Rozważmy następujący blok programu: number = 10 while number!= 0: print("liczba: ", number) number -= 3 print("petla sie skonczyla. Koncze program!") raw_input() Ten program nigdy się nie zakończy. Dlaczego? 15

Debugowanie programu Poprzedni program zawierał błąd logiczny. Z reguły błędy logiczne są trudne do wykrycia przez programistę. Jedynym wyjściem jest śledzenie programu. Śledzenie (lub inaczej debugowanie) polega na tym, że symuluje się pracę programu i robi się dokładnie to, co program, podążając śladem każdej instrukcji oraz rejestrując wartość przypisywanym zmiennym. W ten sposób krok po kroku można dokładnie zrozumieć, co się dzieje w każdym jego miejscu i wykryć okoliczności, które prowadzą do błędów. 16

Poprawiona wersja poprzedniego programu number = 10 while number > 0: print("liczba: ", number) number -= 3 print("petla sie skonczyla. Koncze program!") raw_input() 17

Program na istnienie zmiennej Rozważmy następujący kod programu: number = int(raw_input("witaj. Podaj liczbe calkowita: ")) if number: print("podales liczbe: ", number) else: print("nie podales liczby!") raw_input() 18

Sprawdzanie czy istnieje zmienna Wiersz if number nie jest porównywalna z jakąkolwiek inną wartością. Gdy dochodzi do wyznaczenia liczby traktowanej jako warunek, wartość zero oznacza False, a dowolna inna wartość True. Tak więc powyższa linia jest równoważna if number!= 0, ale pierwsza wersja uważana jest za bardziej elegancką i intulicyjną. Główna zasada przy sprawdzeniu istnienia zmiennej jest następująca: Każda wartość pusta lub zerowa jest traktowana jako False, natomiast pozostałe są traktowane jako True. Dotyczy to także liczb ujemnych. 19

Korzystanie z warunków złożonych Warunki używane do tej pory były warunkami prostymi - składały się tylko z jednej operacji. Proste warunki można łączyc ze sobą przy pomocy operatorów logicznych. W ten sposób połączone ze sobą warunki proste stają się warunkami złożonymi. 20

Korzystanie z warunków złożonych Warunki używane do tej pory były warunkami prostymi - składały się tylko z jednej operacji. Proste warunki można łączyc ze sobą przy pomocy operatorów logicznych. W ten sposób połączone ze sobą warunki proste stają się warunkami złożonymi. Przykład: number = 0 while number >= 0 and number <=100: number = int(raw_input("podaj liczbe spoza zakresu <0,100>: ") print("podales: ", number. Wychodze z programu!) raw_input() 20

Operator and Wiersz while number >= 0 and number <=100: składa się z dwóch warunków prostych. Po pierwsze zmienna number musi być większa bądź równa 0 oraz mniejsza bądź równa 100. W tym przypadku użytkownik musi wprowadzić inną liczbę. Program wyjdzie z pętli, kiedy nie będą spełnione obydwa warunki jednocześnie! To charakteryzuje użycie operatora and. 21

Operator or Rozważmy następujący kod programu: number = 0 while number >= 100 or number <=0: number = int(raw_input("podaj liczbe spoza zakresu (0,100): ") print("podales: ", number. Wychodze z programu!) raw_input() 22

Operator or Rozważmy następujący kod programu: number = 0 while number >= 100 or number <=0: number = int(raw_input("podaj liczbe spoza zakresu (0,100): ") print("podales: ", number. Wychodze z programu!) raw_input() Wiersz while number >= 100 or number <=0: składa się także z dwóch warunków prostych. Po pierwsze jeśli zmienna number będzie większa od 100 lub mniejsza od zera, to użytkownik zostanie poproszony o wprowadzenie liczby. W tym przypadku wejście z pętli zajdzie jeśli będzie spełniony przynajmniej jeden z warunków prostych. 22

Operator not Rozważmy następujący kod programu: number = -1 while not number >= 0: number = int(raw_input("podaj liczbe wieksza od zera: ")) print("podales: ", number. Wychodze z programu!) raw_input() 23

Operator not Rozważmy następujący kod programu: number = -1 while not number >= 0: number = int(raw_input("podaj liczbe wieksza od zera: ")) print("podales: ", number. Wychodze z programu!) raw_input() Wiersz while not number >= 0: składa się z jednego warunku prostego.jeśli zmienna number nie będzie większa od 0, to użytkownik zostanie poproszony o wprowadzenie liczby. 23

Bibliografia Micheal Dawson, PYTHON dla każdego. Podstawy programowania. Wydanie III, Helion, 2014. 24