Laboratorium 2 – Zmienne, stałe – Ekskluzywna sieć, kalkulator

Zmienne, stałe – Ekskluzywna sieć, kalkulator

Do przygotowania przed zajęciami

* Python dla każdego. Podstawy programowania. – Michael Dawson – Helion **R** – Rozdział 1. Wprowadzenie. Koniec gry.

Cel i tematyka zajęć

Drugie laboratorium ma na celu utrwalenie wiadomości z pierwszego laboratorium oraz wprowadzenie następujących elementów:
* zmienne,
* stałe,
* typy danych,
* format.

– Zadanie przypominające

* Napisz program, który na podstawie podanego przez użytkownika napięcia i oporności obliczy jaki prąd płynie w układzie przedstawionym na poniższym rysunku. Pamiętaj, że wzór na prąd to I = U/R gdzie U to napięcie a R to oporność (rezystancja). Wyświetl poniższy rysunek nim pobierzesz informacje od użytkownika.

________
| |
| _|_
_|_ | |
----- U | R |
| |___|
---------|


Stałe w Pythonie

Stałe w sposobie deklaracji różnią się tylko konwencją nazw. Zmienne nazywamy używając małych liter, zaś stałe używamy stosując wielkie litery

MY_CONSTANT = 10 #stała liczbowa
MY_CONSTANT_STRING = 'moja stała' #stała zawierająca łańcuch znaków

Zmienne w Pythonie

Jak dowiedzieli się Państwo na poprzednim laboratorium zmienne deklaruje się bez podania ich typu, np.:


my_variable = 5 #zmienna liczbowa
my_variable = 'moja zmienna' #zmienna zawierająca łańcuch znaków

– Typy zmiennych

W Pythonie rozróżniamy dwie podstawowe grupy typów:
* numeryczne typy danych,
* tekstowe typy danych.

Numeryczne typy danych

Wśród numerycznych typów danych rozróżniamy następujące typy:
* int (integer),
* float,
* complex.
Wykorzystujemy je w następujący sposób:

age = 10
age = int(age)
print("Masz ", age*365, " dni.")


weigh = input("Podaj swoją wagę ")
weigh = float(weigh)
moon = weigh/6
print("Na księżycu ważyłbyś ", moon)


complex_number = complex('1+2j') #liczbę zespoloną wpisujemy BEZ spacji

Tekstowe typy danych

Dane typu tekstowego (string) wpisuje się w następujący sposób:


name = "Agnieszka"

Na danych tego typu możemy wykonywać kilka operacji:

-Działania na łańcuchach znaków

Prócz działań poznanych na poprzednich laboratoriach możemy wykonywać następujące działania:
* dodawanie łańcuchów, proszę sprawdzić zobaczycie Państwo na ekranie po wykonaniu tego programu:

name = 'Agnieszka'
name += ' Kowalska'

* powielanie łańcuchów innym sposobem, proszę sprawdzić zobaczycie Państwo na ekranie po wykonaniu tego programu:

name = 'Agnieszka '
name *= 2

* zmiana wielkości liter w łańcuchu, proszę sprawdzić zobaczycie Państwo na ekranie po wykonaniu tego programu:

name = 'agnieSzka koWalSka'
print(name.title())
print(name.upper())
print(name.lower())

* rozdzielanie łańcuchu na dwa łańcuchy, proszę sprawdzić zobaczycie Państwo na ekranie po wykonaniu tego programu:

name = "Agnieszka koWalska"
print(name.split(' '))

* wycinanie fragmentu łańcucha, proszę sprawdzić zobaczycie Państwo na ekranie po wykonaniu tego programu:

name = "Agnieszka koWalska"

print(name[2])
print(name[:2])
print(name[0:3])
print(name[1:4])
print(name[-3])
print(name[-3:])
print(name[-3:-1])
print(name[:-2])




print('{0}, {1}, {2}'.format('a', 'b', 'c'))
print('{}, {}, {}'.format('a', 'b', 'c'))
print('{2}, {1}, {0}'.format('a', 'b', 'c'))
print('{2}, {1}, {0}'.format(*'abc'))
print('{0}{1}{0}'.format('abra', 'cad'))

-Działania na liczbach

Podstawowymi operatorami matematycznymi są:
* dodawanie,
* odejmowanie,
* dzielenie,
* mnożenie,
* reszta z dzielenia (modulo),
* potęgowanie.


liczba1 = 5
liczba2 = 8

suma = liczba1 + liczba2
roznica = liczba2 - liczba1
iloczyn = liczba1 * liczba2
iloraz = liczba1 /liczba2
modulo = liczba1 % liczba2
potegowanie = liczba1 ** liczba2

print(suma)
print(roznica)
print(iloczyn)
print(iloraz)
print(modulo)
print(potegowanie)


– Działania matematyczne

Prócz dostępnych w pythonie działań arytmetycznych możemy korzystać z działań dostępnych w następujących modułach:
* https://pl.python.org/docs/lib/module-math.html – math
* https://pl.python.org/docs/lib/module-cmath.html – cmath dla liczb zespolonych
Proszę zapoznać się z obiema bibliotekami i odpowiedzieć na pytania:
* jaka funkcja służy do obliczania sinusa, cosinusa i tangensa dla podanego kąta

– Instrukcja warunkowa

W języku python istnieje instrukcja warunkowa **if**
* najprostsza postać instrukcji if

# Hasło
# Demonstruje instrukcję if

print("Witaj w systemie firmy Bezpieczny Komputer SA")
print("-- bezpieczeństwo to podstawa naszego działania\n")

password = input("Wprowadź hasło: ")

if password == "sekret":
print("Dostęp został udzielony")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

* używanie instrukcji if – else

# Hasło
# Demonstruje instrukcję if

print("Witaj w systemie firmy Bezpieczny Komputer SA")
print("-- bezpieczeństwo to podstawa naszego działania\n")

password = input("Wprowadź hasło: ")

if password == "sekret":
print("Dostęp został udzielony")
else:
print("Nie masz uprawnień do tego zasobu")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

* instrukcja if -elif – else

# Komputer nastrojów
# Demonstruje klauzulę elif

import random

print("Wyczuwam Twoją energię. Twoje prawdziwe emocje znajdują odbicie na moim ekranie.")
print("Jesteś...")

mood = random.randint(1, 3)

if mood == 1:
# szczęśliwy
print( \
"""
-----------
| |
| O O |
| < |
| |
| . . |
| `...` |
-----------
""")
elif mood == 2:
# obojętny
print( \
"""
-----------
| |
| O O |
| < |
| |
| ------ |
| |
-----------
""")
elif mood == 3:
# smutny
print( \
"""
-----------
| |
| O O |
| < |
| |
| .'. |
| ' ' |
-----------
""")
else:
print("Nieprawidłowa wartość nastroju! (Musisz być naprawdę w złym humorze).")

print("...dzisiaj.")


input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

– Pętla while – program Symulator Trzylatka

Pętla while ma następujące wywołanie

while warunek:
co ma wykonać

Przykład

# Symulator trzylatka
# Demonstruje pętlę while

print("\tWitaj w 'Symulatorze trzylatka'\n")
print("Ten program symuluje rozmowę z trzyletnim dzieckiem.")
print("Spróbuj przerwać to szaleństwo.\n")

response = ""
while response != "Dlatego.":
response = input("Dlaczego?\n")

print("Aha, już wiem.")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

– Drugi program – “Ekskluzywna sieć”

Dzięki programowi Ekskluzywna sieć poznacie Państwo łączenie warunków w instrukcji if


# Ekskluzywna sieć
# Demonstruje operatory logiczne i warunki złożone

print("\tEkskluzywna Sieć Komputerowa")
print("\t Tylko dla członków!\n")

security = 0

username = input("Użytkownik: ")

password = input("Hasło: ")

if username == "M.Dawson" and password == "sekret":
print("Cześć, Mike!")
security = 5
elif username == "S.Meier" and password == "cywilizacja":
print("Hej, Sid!")
security = 3
elif username == "S.Miyamoto" and password == "mariobros":
print("Co u Ciebie, Shigeru?")
security = 3
elif username == "W.Wright" and password == "simsowie":
print("Jak leci, Will?")
security = 3
elif username == "gość" or password == "gość":
print("Witaj, Gościu!")
security = 1
else:
print("Nieudana próba logowania. Nie jesteś taki wyjątkowy.\n")

input("\n\nAby zakończyć program, naciśnij klawisz Enter.")

– Zadania do samodzielnego wykonania na laboratorium

* Napisz kalkulator wykonujący proste działania (dodawanie, odejmowanie, mnożenie, dzielenie) na podstawie liczb podanych przez użytkownika,
* Rozbuduj kalkulator z poprzedniego zadania o możliwość wyboru działania jakie ma wykonać, oraz o potęgowanie i modulo,
* Zmodyfikuj program Symulator trzylatka tak aby nie miało znaczenia jaka kombinacja dużych i małych liter występuje w Dlatego, w celu zakończenia działania pętli,
* Napisz program który na podstawie numeru PESEL poda – datę urodzenia, oraz płeć. Podpowiedź: za płeć odpowiada 10 cyfra numeru PESEL – parzysta – żeńska, nieparzysta – męska, jeśli w na pozycji 3-4 liczba jest z zakresu 21-32 to znaczy, że właściciel tego numeru urodził się od 2000 roku.
* Napisz program implementujący grę w mini lotto: użytkownik wybiera 3 liczby z zakresu 0-9, zaś komputer losuje 6 liczb z tego zakresu i sprawdza wygraną, ilość trafionych liczb jest wyświetlana na ekranie.

Zadanie dodatkowe

Dla zainteresowanych – napisz grę w zgadnij jaka to liczba: komputer losuje liczbę z zakresu 0-100, a użytkownik ma ją odgadnąć. Po każdej wpisanej odpowiedzi komputer informuje użytkownika czy odpowiedział poprawnie, a jeśli nie to wyświetla informację o tym czy liczba jest mniejsza czy większa od podanej przez użytkownika. Dodatkowo po odgadnięciu liczby poda w ilu próbach udało się użytkownikowi odgadnąć liczbę.

– Przykłady używane na laboratoriach

Przykłady pochodzą z książki
* Podstawową książką wykorzystywaną na laboratorium będzie: „Python dla każdego. Podstawy programowania Wydanie III”, autor Michael Dawson, Wydawnictwo Helion **(R)**

Zadanie domowe

**Wszystkie zadania domowe należy archiwizować ponieważ w dalszej części laboratoriów będziecie je Państwo rozbudowywać**
* Filmy:
* https://www.youtube.com/watch?v=OhYjlH2LCas
* https://www.youtube.com/watch?v=LKkbjmuNJVU
* https://www.youtube.com/watch?v=pHZlmBN1YaE
* Napisz kalkulator w którym użytkownik będzie mógł wybrać jedno z sześciu działań poprzez wpisanie działania (wybór ma działać niezależnie od kombinacji wielkich i małych liter w słowie).
* Napisz fragment kodu mający na celu porównanie Ataku (suma ataku (1-10 – wybranego przez autora kodu) oraz rzutu kością K20) z obroną.
* Python dla każdego. Podstawy programowania. – Michael Dawson – Helion **R** – Rozdział 2. i 3.