PYTHON -> NOTATKI Z ZAJĘĆ (1 i 2)

PYTHON -> NOTATKI Z ZAJĘĆ (1 i 2)
PYTHON -> NOTATKI Z ZAJĘĆ

ZAJĘCIA 1

DEFINICJA :

Python to język programowania ogólnego zastosowania cechujący się bogactwem bibliotek (czyli mamy sporo "gotowców") i czytelną, zwięzłą składnią (dzięki czemu jest relatywnie łatwy w nauce).

Należy do języków z mechanizmem automatycznego zarządzania pamięcią (co również ułatwia naukę).

Jest językiem interpretowanym (nie wymaga kompilacji przed uruchomieniem) co ułatwia przenoszenie aplikacji w nim napisanych na różne platformy (Windows, Linux, MacOS...) kosztem wydajności.

Cechuje się : PRZYSTĘPNOŚCIĄ, CZYTELNOŚCIĄ, BOGACTWEM "GOTOWCÓW", SZYBKOŚCIĄ TWORZENIA ZA JEGO POMOCĄ

Cechy te sprawiają, że jest to jeden z najpopularniejszych języków i często jest polecany osobom zaczynającym naukę programowania. Przyczynił się też do popularyzacji zastosowań AI i jest szeroko wykorzystywane w nauce, statystyce.

ZASTOSOWANIE PYTHONA (przykłady):

  • indeksowanie danych
  • AI
  • analiza danych, data science
  • zarządzanie infrastrukturą
  • rekomendacje, profilowanie, przeszukiwanie, indeksowanie stron
  • obróbka danych
  • automatyzacje wysyłki
  • tworzenie usług / mikroserwisów
  • "klej" dla innych aplikacji
  • automatyzacja

Python wykorzystywany jest przez takie firmy jak: Google (indeksowanie stron, przeszukiwanie), RedHat(automatyzacja, narzędzia systemowe / np Firewall, narzędzia do obsługi chmury), Meta, Instagram (zbudowany przede wszystkim na Pythonie / framework Django, utrzymują własny interpreter jęz. python / Cinder), Uber(backend), twilio (obsługa przez biblioteki pythona, analiza danych połączeń), Industrial Light & Magic (język do łączenia narzędzi wykorzystywanych do VFX, narzędzia do zarządzania zasobami, język skryptowy aplikacji 3D, testy i audyty zasobów), Spotify, Netflix, Dropbox (aplikacja na komputery stacjonarne, automatyzacje), Amazon (monitorowanie infrastruktury, AI analiza i przetwarzanie danych), NASA, Pinterest, Goldman Sachs, YouTube (kontrola video, szablony kontrolne, dostęp do danych, profilowanie).

NIE DLA!!! : aplikacji mobilnych, gier komputerowych (WOLNY)!!! przeglądarki komputerowe nie potrafią w prosty sposób zrozumieć Pythona ("rozmawiają" w HTML, CSS, JavaScript), słaby do frontendu!!!

SUBIEKTYWNE ZESTAWIENIA ZASTOSOWAŃ PYTHONA:

++ Python będzie dobry d0:

  • uczenia maszynowego / AI
  • inżynierii i analizy danych
  • backend'u aplikacji internetowych
  • automatyzacji (skrypty, DevOps)
  • web-scraping'u

+- Python będzie ok do:

  • aplikacji na komputery stacjonarne
  • programowania mikrokontrolerów
  • przy niektórych aplikacjach mobilnych

-- Python jest raczej niewskazany do:

  • aplikacji systemowych
  • aplikacji mobilnych
  • gier
  • frontend'u

*Stack Overflow survey (strona wykorzystywana przez programistów do zadawania pytań lub poszukiwania informacji i rozwiązań

PYTHON NA CODZIEŃ --> automatyzacja powtarzalnych czynności (np. dodawanie użytkowników), upraszczanie w np. wpisywaniu wielu maili, tworzenie botów, API (?), gierka PONG, składanie dokumentacji,

Python możemy traktować jak naukę języka obcego. Celem języka przy programowaniu jest:

  • poinstruowanie komputera jak ma coś wykonać / wydawanie poleceń (np. dodaj 2+2)
  • opisanie stanu obiektu ("Ten przedmiot w sklepie jest niedostępny")
  • ustawienie jego cechy/właściwości ("ustaw wartości ceny na 12zł")
  • prośba o podanie stanu/wartości

Jakimi środkami się komunikujemy = SŁOWA UŁOŻONE W ZDANIA

czasownik –> opisanie czynności –> funkcja/metoda

rzeczownik –> nazwanie rzeczy –> obiekt/zmienna

przymiotnik –> opisanie rzeczy –> wartość atrybutu

GRAMATYKA w Pythonie JEST BARDZO WAŻNA!!! (komputer nigdy nie domyśli się sam z siebie z kontekstu o co nam chodziło), np Python jest wyczulony na WCIĘCIA W TEKŚCIE - linijki tekstu umieszczone na tym samym poziomie wcięcia rozpatruje jako BLOKI, które trzeba traktować wspólnie.

PODSTAWOWA STRUKTURA "ZDANIA":

funkcja( ciało funkcji ) –> trochę jak: orzeczenie(podmiot)

print(mojazmienna)

*POLECAJKA = YouTube : CS50 (https://www.youtube.com/@cs50)

*https://www.humblebundle.com/books

*https://www.fanatical.com/en/bundle/books

*notatki = https://joplinapp.org/ , https://www.notion.com/ , https://obsidian.md/ , https://excalidraw.com/

Na czym najlepiej się skupić na początku nauki Pythona = INSTRUKCJE WARUNKOW, PĘTLE, STRUKTURY DANYCH!!!

ĆWICZENIA Z ZAJĘĆ:

imie = input("Podaj swoje imię: ")
print("Witaj!" , imie)

miles2km.py

mile = float(input("Wprowadź odległość w milach: "))

PRZELICZNIK = 0.621371

km = mile / PRZELICZNIK

print("Wartość w km to: ", km)

*input = użytkownik sam wpisuje dane do np. obliczenia czegoś

kostki.py

from random import randint

ilosc_scianek = 20
wyniki= []

print(f"Iloma kostkami o {ilosc_scianek} sciankach mam rzucić?")
ilosc_rzutow = int(input("Wprowadz liczbę kostek: "))

for rzut in range(ilosc_rzutow):
    wynik_rzutu = randint(1, ilosc_scianek)
    wyniki.append(wynik_rzutu)

print(f"Uzyskano: {wyniki}")

ZAJĘCIA 2

*PCEP - Certified Entry-Level Python Programmer (Exam PCEP-30-0x) - exam syllabus

ZMIENNE

= można porównać do "słoika z etykietą" (miejsce w pamięci komputera zarezerwowane na przechowywanie jakiejś zawartości, które możemy w jednoznaczny sposób odnaleźć/wskazać; ZMIENNA = ETYKIETKA na słoiku

Deklaracja zmiennej:

nazwa = zawartość, która ma być przechowywana pod tą nazwą, np

mojzwierzak = "pies"

WAŻNE!!!

  • nazwa NIE MOŻE zawierać większości znaków specjalnych (*ASCII Table)
  • NIE UŻYWAMY w nazwie spacji
  • NIE UŻYWAMY polskich liter w nazwie (polskich znaków)
  • nazwa NIE MOŻE składać się wyłącznie z cyfr lub zaczynać od nich
  • w Pythonie przyjęte jest pisanie nazw zmiennych MAŁĄ LITERĄ, raczej nie używamy dużych liter (inni programiści mogliby pomyśleć, że jest to klasa)
  • gdy nazwa składa się z kilku słów –> oddzielamy je "_" (tzw. podłogą)
  • # na początku linii = komentarz (nie jest brane pod uwagę przy odczytywaniu kodu)
  • przydatny skrót = Ctrl + / => przy zaznaczeniu kilku linijek kodu, możemy szybko zamienić go w komentarz(#) i na odwrót
  • dobrze jest używać nazw, które dobrze obrazują jaka jest zawartość danej zmiennej
  • znak "=" oznacza w języku Pythona "przypisanie"

Zmienna może być MODYFIKOWALNA ("otwarty słoik") i NIEMODYFIKOWALNA ("zamknięty słoik") –>

-> ZMIENNA MODYFIKOWALNA = zmienna ("etykieta") nie przeskoczy na nową zawartość, tylko istniejąca zawartość zostanie zaktualizowana

-> ZMIENNA NIEMODYFIKOWALNA = zmienna ("etykieta") przeskoczy na nową zawartość, a stara nie zostanie zmodyfikowana (jeśli dla starej zawartości nie dodamy zmiennej / etykiety, to wtedy Python ją automatycznie usuwa -> Garbage Collector)

Na to samo miejsce w pamięci komputera (na tą samą zawartość) może wskazywać kilka ZMIENNYCH! (na słoiku może być więcej niż jedna etykieta).

a=1
b=a
b=b+9

print("Zmienna a ma wartość: ",a)
print("Zmienna b ma wartość: ",b)

#a=1
#b=10

-> przyjmuje się, że liczby są takim słoikiem, którego zawartości nie można zmienić

-> [] => LISTA, np a = [1]

a=[1]
b=a
b.append(9)

print("Zmienna a ma wartość: ",a)
print("Zmienna b ma wartość: ",b)

#a=[1,9]
#b=[1,9]

-> przykład: b.append(9) => oznacza DOPISANIE do zawartości b liczby 9

Dynamiczne typy zmiennych

Zadeklarowana zmienna MOŻE zmienić swój typ - np. coś co wskazywało na liczbę chwilę później może wskazywać na tekst. Czyli w Pythonie taka operacja wykona się poprawnie:

moja_zmienna = 1
moja_zmienna = "pies"

Mimo tej możliwości którą daje Python zazwyczaj dobrą praktyką jest trzymanie pod utworzoną zmienną jednego typu danych.

-> nazwa zmiennej może wskazywać inną zmienną, np.

moj_zwierzak = "pies"
domowy_rozrabiaka = moj_zwierzak

Print

  • służy do wyświetlania na ekranie reprezentacji obiektu (np. do wyświetlania tekstu)
  • składnia wygląda następująco:

print(zawartość_do_wyświetlenia)

zdanie = "To jakiś tekst."
print(zdanie)

#wyświetli się: To jakiś tekst.

Input

  • służy do umożliwienia użytkownikowi wprowadzenia jakiejś zawartości
  • wszystko co zostanie wprowadzone w ten sposób będzie traktowane jako tekst(!), jeśli chcemy wprowadzić z wykorzystaniem input liczbę musimy dokonać konwersji z tekstu na np. liczbę całkowitą, lub zmiennoprzecinkową
  • składnia wygląda następująco:

nazwa_zmiennej = input ("opcjonalny_komunikat dla użytkownika")

imie_gracza = input("Wprowadź imię: ")

brudnopis.py

#liczba1 = input("Podaj pierwszą liczbę: ")
#liczba2 = input("Podaj drugą liczbę: ")

#print(liczba1+liczba2)

# stwórz zmienną o nazwie moje_zwierze przechowujaca obiekt tekstowy kot

moje_zwierze = "kot"
print(moje_zwierze)


# # stworz zmienna o nazwie jakas_liczba przechowujaca liczbe calkowita 123

jakas_liczba = 123
print(jakas_liczba)

# # stworz zmienna o nazwia ulamek przechowujaca 1.25

ulamek = 1.25
print(ulamek)

# # stworz zmienna o nazwie imie umozliwiajaca uzytkownikowi wpisanie swojego imienia
# # po uruchomieniu aplikacji

imie = input("Podaj swoje imię: ")



# # majac stworzona zmienna imie z cwiczenia 1
# # wyswietl komunikat witajacy uzytkownika
# # np. jesli uzytkownik wprowadzi imie Przemek to
# # wyswietl mu "Witaj Przemek"

print("Witaj "+imie)

# # popraw poniższy kod tak żeby uzyskać
# # poprawny wynik dodawania liczbowego - czyli 5

zmienna1 = "2"
zmienna2 = "3"
print(int(zmienna1) + int(zmienna2))

zmienna1 = 2
zmienna2 = 3
print(zmienna1+zmienna2)


# # majac zmienna o nazwie hejzmienna przechowujaca wartos Hej!
# # napisz kod wyswietlajacy Hej! 5 razy po sobie

# hejzmienna = "Hej!"
# print(hejzmienna+hejzmienna+hejzmienna+hejzmienna+hejzmienna)
hejzmienna = "Hej!"
print(hejzmienna*5)


# popros uzytkownika o podanie 2 liczb całkowitych
# i przechowaj te wartości w zmiennych.
# podaj wynik dodawania tych liczb

# liczba_cal1 = input("Podaj pierwszą liczbę całkowitą: ")
# liczba_cal2 = input("Podaj drugą liczbę całkowitą: ")
# wynik = int(liczba_cal1)+int(liczba_cal2)
# print(wynik)

liczba_cal1 = int(input("Podaj pierwszą liczbę całkowitą: "))
liczba_cal2 = int(input("Podaj drugą liczbę całkowitą: "))
print(liczba_cal1+liczba_cal2)

*https://www.perplexity.ai/

Typy podstawowe

-> określają wspólne cechy obiektów, metody z nimi związane; dzięki nim programiści wiedzą jakie operacje na nich są dozwolone (a jakie nie). Są więc bardzo przydatnym środkiem komunikacji przy pisaniu aplikacji. Python obsługuje następujące typy podstawowe:

Liczby całkowite (integer, w skrócie int)

Liczy naturalne (1, 2, 3, 4...) i przeciwne do nich (-1, -2, -3) oraz zero.

 Przypisując do zmiennej liczbę całkowitą po prostu podajemy ją po znaku równości np.

moja_liczba = 12

Liczby zmiennoprzecinkowe (float)

Liczby zapisane z "częścią ułamkową". Ważne - część ułamkowa zapisana jest po KROPCE, nie po przecinku.

moja_liczba = 22.15

Ciągi znaków (string)

Seria znaków zapisana między cudzysłowami pojedynczymi, lub podwójnymi (nie można ich jednak mieszać!) np.

moj_tekst = "To tylko tekst."

Wartości logiczne (bool)

Wartości prawda / fałsz zapisane jako True / False (istotna jest wielkość znaków!).

gra_gotowa =  True

Podstawowe operacje:

  • dodawanie (+) [int, float, string, bool]
  • odejmowanie (-) [int, float, bool]
  • mnożenie (*) [int, float, string (ale!!!), bool]
  • dzielenie (/) [int, float]
  • modulo (%) (reszta z dzielenia) [int, float]

!!! W przypadku ciągu znaków (string) możemy wykonać operację mnożenia przez liczbę - powtórzy nam to dany tekst wskazaną ilość razy. Nie można jednak mnożyć ciągu znaków przez ciąg znaków

!!! Wartości logiczne True / False są równoważne 1 i 0 - stąd też da się wykonać operacje dzielenia, czy modulo... z założeniem, że nie dzielimy przez 0

Możliwe jest zmienienie stringu na liczbę całkowitą !!!

zmienna1 = "6"
zmienna2 = "3"
print(int(zmienna1) + int(zmienna2))

#wyskoczy nam wynik dodawania liczb całkowitych, czyli 9
print("1" + "1")
print(1+1)

#11
#2

bmi.py

# waga = input("Podaj wagę w kg: ")
# wzrost = input("Podaj wzrost w metrach: ")
# bmi = int(waga) / float(wzrost) ** 2
# print(bmi)

# masa_ciala = float(input("Podaj masę ciała w kg: "))
# wzrost = float(input("Podaj wzrost w m: "))

# bmi = masa_ciala / wzrost**2
# zaokraglony = round(bmi, 2)
# print("Twoje BMI wynosi:", zaokraglony)

masa_ciala = float(input("Podaj masę ciała w kg: "))
wzrost = float(input("Podaj wzrost w m: "))

# bmi = masa_ciala / wzrost**2

# print("Twoje BMI wynosi: %.2f" % bmi )

#formated string
# print(f"Twoje BMI wynosi: {bmi}")
print(f"Twoje BMI wynosi: {masa_ciala / wzrost**2}")

kostki.py

from random import randint

ilosc_scianek = int(input("Wprowadź liczbę całkowitą informującą o ilości ścianek kostki: "))
wyniki= []

print(f"Iloma kostkami o {ilosc_scianek} sciankach mam rzucić?")
ilosc_rzutow = int(input("Wprowadz liczbę kostek: "))

for rzut in range(ilosc_rzutow):
    wynik_rzutu = randint(1, ilosc_scianek)
    wyniki.append(wynik_rzutu)

print(f"Uzyskano: {wyniki}")

Do czego wykorzystałabym Pythona:

  • stworzenie aplikacji umożliwiającej łatwe znalezienie wydarzenia artystycznego, po podaniu odpowiednich danych, takich jak miejscowość, zasięg w jakim powinno wyszukiwać tych wydarzeń, wyszukiwanie ze względu na konkretną datę (lub zakres czasowy), w którym chcemy uczestniczyć w jakimś wydarzeniu, itd.
  • aplikacja pomagająca wdrożenie dobrych nawyków, np. 10-minutowy spacer, wydzielenie godziny na zaznajomienie się z jakimś nowym programem itd.
  • automatyzacja wysyłanych newsletterów związanych z firmą