Skip to content

exercises for book Automating Boring Stuff with Python

Notifications You must be signed in to change notification settings

karol-glomski/ABS_exercises

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 

Repository files navigation

0. PyCharm i Python są ściągnięte i zainstalowane.

1. Tworzymy nowy projekt (File/New Project w pasku na górze).

2. Uruchamiamy konsolę Pythona:

python_console1 albo na pasku Tools/Python or Debug Console

3. ćwiczenia (wszystko co jest zaznaczone w ten sposób: 3 + 3 wpisujemy w konsolę Pythona (bez komentarzy)):

'matematyka i takie tam'

  1. 2 + 2
  2. 3 * 2
  3. 5**2
  4. 5**3
  5. 2 + 6**2
  6. generalnie wniosek jest taki, ze Python potrafi wykonywać matematyczne operacje
  7. (2+6)**2 - nawiasy też działają
  8. 10/2
  9. 10/1
  10. 10/0 - ERROR ZeroDivisionError: division by zero
  11. 11/3
  12. 11//3 (dwa znaki dzielenia), zwróci 3 (czyli dwa znaki dzielenia zostawiają tylko część całkowitą wyniku)
  13. 21%5 - zwraca tylko resztę z dzielenia
  14. 100%5

wyrazy (inaczej "stringi" (od angielskiego string of characters, czyli łańuch znaków)):

  1. 'abc'
  2. 'łódź' - rozumie polskie znaki
  3. '😀' - rozumie emotikonki
  4. 'abc' + '.txt' - potrafi dodawać wyrazy
  5. 'Cześć' + 'Python' - trzeba uważać na spacje
  6. 'abc '*10 - potrafi 'mnożyć' wyrazy (twórcy Pythona uznali, że skoro mnożenie liczb, np. 3 * 3 = 3 + 3 + 3, to 'abc' * 3 = 'abc' + 'abc' + 'abc', stąd można 'mnożyć' wyrazy)
  7. 'abc' + 3 - ERROR TypeError: can only concatenate str (not "int") to str (po prostu twórcy Pythona uznali, że w przeciwieństwie do mnożenia, dodawanie wyrazów do liczb nie ma sensu)
  8. str(3)
  9. 3

jaka jest różnica między wynikiem 8. a 9.? - różnica jest subtelna, 8. ma cudzysłów, 9. nie ma czyli 8. jest rozumiane jako wyraz (string) a 9. jako liczba

  1. 'abc' + str(3) - teraz już dodajemy wyraz do wyrazu
  2. 'abc' + '3' - tak też można, bo cyfra 3 jest w cudzysłowie

liczby z przecinkiem (float)

  1. 10/2
  2. 2+3

różnica jest taka, że raz mamy 5.0 a raz bez zera 5, bo Python nie traktuje ich tak samo (powód nie jest trywialny i nie ma co na razie tracic na to czasu, kiedyś do tego wrócimy)

  1. 'abc '* 5.0 - ERROR TypeError: can't multiply sequence by non-int of type 'float'

podsumujmy jakie rodzaje danych rozróżnia Python:

  • int - liczby całkowite (ang. integers)
  • float - liczby z przecinkiem (dziwna nazwa, powód jak wyżej było wspomniane nie jest trywialny i kiedyś do tego wrócimy)
  • str - wyrazy (ang. string, w pythonie )

zmienne

  1. name = 'James'
  2. age = 35
  3. 'Cześć' + name
  4. 'twój wiek: ' + age - ERROR
  5. 'twój wiek: ' + str(age) - konwertujemy liczbę (int) na wyraz (str)
  6. age - dalej int
  7. age = str(age) - konwertujemy zmienną age do str
  8. age - teraz już w zmiennej age jest str
  9. number_1 = 10
  10. number_2 = 20
  11. sum_of_numbers = number_1 + number_2
  12. sum_of_numbers
  13. average_of_numbers = sum_of_numbers/2
  14. average_of_numbers
  15. 'average_of_numbers' - proszę zwrócić uwagę na cudzysłów!
  16. average_of_number - ERROR - proszę zwrócić uwagę na literówkę - brak litery 's' na końcu

dobra, co tu się dzieje? w 14. mówimy Pythonowi "pokaż co jest w zmiennej average_of_numbers, dlatego zwraca nam liczbę w 15. mówimy Pythonowi "zwróć mi wyraz 'average_of_numbers'", ponieważ average_of_numbers jest objęte w cudzysłów! a 16. Python rozumie jako "pokaż co się znajduje w zmiennej average_of_number, tylko że zrobiliśmy literówkę, więc taka zmienna nie istenieje! dlatego błąd jaki wyświetli Python brzmi NameError: name 'average_of_number' is not defined

  1. average_of_numbers = 100
  2. average_of_numbers
  3. average_of_numbers = 'jakis wyraz'
  4. average_of_numbers

jak widać, na początku average_of_numbers to był float (liczba z przecinkiem), a w 17. powiedzieliśmy Pythonowi "włóż do zmiennej average_of_numbers liczbę 100 (która jest typu int), potem włożyliśmy do niej wyraz 'jakis wyraz'

nazewnictwo zmiennych

  1. name = 'James'
  2. naMe = 'Arthur'
  3. name
  4. naMe - czyli wielkość liter robi różnicę
  5. _age = 41 - można zacząć od znaku _
  6. name_1 = 'James' - może zawierać cyfry
  7. 1name = 'James' - ERROR - ale nie na pierwszy miejscu
  8. name-of-person = 'James' - ERROR - nie może zawierać myślinika -
  9. name_of_person = 'James' - ale może zawierać _

Pierwszy program

Na razie zostawiamy konsolę Pythona i będziemy pisać w pliku.

image

skopiuj i wklej ten kod do PyCharma, potem wciśnij Shift+F10 (albo kliknij na zieloną strzałkę): image

print('Hello, world!')

teraz automatycznie powinno otworzyć się okno "Run" z tekstem "Hello, world!": image

tutaj używamy wbudowanej funkcji print(), która wyświetla nam to co do niej włożymy w okienku "Run"; w tym wypadku włożyliśmy do niej string 'Hello, world!'

dodajmy ten fragment i wciśnijmy zielony strzałkę

name = input()
print(f"Witaj {name}")

powinno wyświetlić się znowu okno "Run", teraz trzeba tam kliknąć myszką i wpisać swoje imię i wcisnąć Enter

image image

tutaj używamy wbudowanej funkcji input(), która służy do tego, że można w okienku "Run" wpisać jakąś wartość i potem tej wartości użyć w programie jak to zrobiliśmy wyżej; czyli Python zatrzyma się na tym fragmencie name = input() dopóki nie wpiszemy czegoś w okienko "Run" i wciśniemy Enter, dopiero po tym wykona kolejne części kodu

teraz dodajmy ten fragment, uruchamiamy program, wpisujemy swoje imię:

name_length = len(name)
print(f'Liczba liter w Twoim imieniu to {name_length}')

image

4. na koniec usuwamy stworzony projekt w PyCharmie (usuwamy folder)

About

exercises for book Automating Boring Stuff with Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published