def add_numbers(a, b):
"""
Add two numbers together
Returns
-------
the_sum : type of arguments
"""
return a + b
add_numbers?
output:
Signature: add_numbers(a, b)
Docstring:
Add two numbers together
Returns
-------
the_sum : type of arguments
File: <path>
Type: function
API wystawiające dane godzinowe z kilkudziesięciu stacji pogodowych: https://danepubliczne.imgw.pl/api/data/synop dane (JSON): data i godzina pomiaru, temperatura, prędkość wiatru, kierunek wiatru, wilgotność względna, suma opadu, ciśnienie
pizza = ['pieczarki', 'ser', 'salami', 'sos pomidorowy', 'peperoni']
if 'pieczarki' in pizza:
print('pizza z pieczarkami!')
if 'ananas' not in pizza:
print('pizza bez ananasa!')
output:
pizza z pieczarkami!
pizza bez ananasa!
wiek = 20
if wiek >= 18 and wiek <= 90:
print('jesteś w odpowiednim wieku, żeby pić alkohol!')
elif wiek >90:
print('jesteś za stary za alkohol')
else:
print('jesteś za młody na alkohol')
output:
jesteś w odpowiednim wieku, żeby pić alkohol!
current_users = ['tadeusz', 'krzysiek', 'kamil', 'marysia','stefan', 'barbara']
new_users = ['dominika','ewa','tomasz','kamil']
for new_user in new_users:
if new_user in current_users:
print('Użytkownik ',new_user,' jest zajęty, wybierz innego!')
output:
Użytkownik kamil jest zajęty, wybierz innego!
#wprowadzanie danych z konsoli
wzrost = input('Podaj swój wzrost (w cm): ')
wzrost = int(wzrost)
if wzrost >= 180:
print('jesteś wysoki!')
else:
print('jesteś niski!')
#pętla while
nr = 1
while nr <= 5:
print(nr)
nr += 1
output:
1
2
3
4
5
#pętla while
print("Napisz coś, jak chcesz skończyć napisz 'koniec'")
text = ''
while text != 'koniec':
text = input('wprowadź text: ')
print('wpisałeś: ',text)
#modyfikacja listy w pętli while (dobra praktyka)
niezweryfikowani = ['krzysiek', 'alicja', 'stefania']
zweryfikowani = []
while niezweryfikowani:
uzytkownik = niezweryfikowani.pop()
print('weryfikujemy Pana/Panią: ',uzytkownik.title())
zweryfikowani.append(uzytkownik)
print('\nzweryfikowanie użytkownicy:')
for uzytkownik in zweryfikowani:
print(uzytkownik.title())
output:
weryfikujemy Pana/Panią: Stefania
weryfikujemy Pana/Panią: Alicja
weryfikujemy Pana/Panią: Krzysiek
zweryfikowanie użytkownicy:
Stefania
Alicja
#usuwanie powtarzających się elementów listy
zwierzeta = ['pies', 'kot', 'zaba', 'pies', 'kon', 'pies']
print(zwierzeta)
while 'pies' in zwierzeta:
zwierzeta.remove('pies')
print(zwierzeta)
output:
['pies', 'kot', 'zaba', 'pies', 'kon', 'pies']
['kot', 'zaba', 'kon']
Rozdział 8
#definiowanie funkcji
def powitanie(imie, nazwisko, adres=''): #parametry funkcji
print('\nwitaj towarzyszu!')
print('Imię: ',imie)
print('Nazwisko: ',nazwisko)
if adres:
print('Adres: ',adres)
powitanie('Jan','Kowalski') #argumenty funkcji
powitanie(nazwisko='Kowalski',imie='Jan', adres='ul. Długa 8')
output:
witaj towarzyszu!
Imię: Jan
Nazwisko: Kowalski
witaj towarzyszu!
Imię: Jan
Nazwisko: Kowalski
Adres: ul. Długa 8
#przekazywanie kopii listy do funkcji
def usun_pierwszy(lista):
del lista[0]
lista = ['żaba', 'kangur', 'małpa','słoń']
print(lista)
usun_pierwszy(lista[:]) #przekazujemy kopię listy
print(lista)
usun_pierwszy(lista)
print(lista)
output:
['żaba', 'kangur', 'małpa', 'słoń']
['żaba', 'kangur', 'małpa', 'słoń']
['kangur', 'małpa', 'słoń']
#przekazywanie dowolnej liczby argumentów
def pizza(rozmiar, *dodatki):
print('zamówiłeś pizzę o rozmiarze: ',rozmiar)
print('dodatki: ', end=' ')
for dodatek in dodatki:
print(dodatek, end=' ')
pizza(12, 'salami', 'pieczarki', 'ser')
output:
zamówiłeś pizzę o rozmiarze: 12
dodatki: salami pieczarki ser
#przekazywanie dowolnej liczby argumentów w postaci par klucz-wartość
def pizza(rozmiar, **dodatki):
'''Takes size of pizza and toppings and prints them'''
print('zamówiłeś pizzę o rozmiarze: ',rozmiar)
print('dodatki: ', end=' ')
for key,value in dodatki.items():
print('Klucz: ',key,' Wartość: ',value)
pizza(12, ciasto='grube',ser='mozarella', sos='czosnkowy')
output:
dodatki: Klucz: ciasto Wartość: grube
Klucz: ser Wartość: mozarella
Klucz: sos Wartość: czosnkowy
#import całego modułu
import pizza
pizza.make_pizza(30, 'pepperoni')
#import określonych funkcji
from pizza import make_pizza1, make_pizza2
make_pizza1(30, 'pepperoni')
make_pizza1(40, 'margherita')
#użycie aliasu dla zaimportowanej funkcji
from pizza import make_pizza as mp
mp(30, 'pepperoni')
#import całego modułu
from pizza import *
make_pizza(30, 'pepperoni')
Rozdział 9
#wprowadzenie do klas
class Dog():
"""prosty model psa"""
def __init__(self, name, age): #definicja konstruktora klasy, każda metoda klasy musi mieć parametr self
"""Inicjalizacja atrybutów name i age."""
self.name = name
self.age = age
def sit(self): #definicja metody klasy
"""Symulacja, że pies siada po otrzymaniu polecenia."""
print(self.name.title(),' teraz siedzi.')
def roll_over(self):
"""Symulacja, że pies kładzie się na plecy po otrzymaniu polecenia"""
print(f"{self.name.title()} teraz położył się na plecy!")
my_dog = Dog('Bongo', '7 miesięcy')
print('Mój pies ma na imię: ',my_dog.name.title())
print('Wiek mojego psa: ',my_dog.age)
my_dog.sit()
my_dog.roll_over()
output:
Mój pies ma na imię: Bongo
Wiek mojego psa: 7 miesięcy
Bongo teraz siedzi.
Bongo teraz położył się na plecy!
class Car():
def __init__(self, make, model, year):
"""Inicjalizacja atrybutów opisujących samochód."""
self.make = make
self.model = model
self.year = year
self.odometer = 0 #wartość domyślna argumentu
def drive(self):
"""Rozpoczęcie jazdy"""
print('Jedziemy samochodem!')
def update_odometer(self, odometer):
self.odometer += odometer
def get_details(self):
print('Producent:',self.make,'Model:',self.model,'Rocznik:',self.year)
car1 = Car('yes', 'Octavia', 1999)
car1.drive()
print('Przebieg przed aktualizacją:', car1.odometer)
car1.update_odometer(20)
print('Przebieg po aktualizacji:', car1.odometer)
car1.update_odometer(20)
print('Przebieg po aktualizacji:', car1.odometer)
output:
Jedziemy samochodem!
Przebieg przed aktualizacją: 0
Przebieg po aktualizacji: 20
Przebieg po aktualizacji: 40
#dziedziczenie
class ElectricCar(Car):
"""Dziedziczymy po klasie Car"""
def __init__(self, make, model, year):
"""Inicjalizacja atrybutów klasy nadrzędnej"""
super().__init__(make, model, year) #przez super odwołujemy się do klasy nadrzędnej
my_tesla = ElectricCar('Tesla', 'model s', 2019)
my_tesla.get_details()
output:
Producent: Tesla Model: model s Rocznik: 2019
Rozdział 10
zawartość pliku pi_digits.txt:
3.1415926535
8979323846
2643383279
#wyświetlenie treści pliku
with open('pi_digits.txt') as file_object:
contents = file_object.read()
print(contents)
output:
3.1415926535
8979323846
2643383279
#odczyt pliku linia po lini
with open('pi_digits.txt') as file_object:
for line in file_object:
print(line.rstrip())
output:
3.1415926535
8979323846
2643383279
#odczyt pliku do listy
with open('pi_digits.txt') as file_object:
lines = file_object.readlines()
pi_string = ''
for line in lines:
pi_string += line.strip()
print(pi_string)
pi = float(pi_string)
print(pi)
output:
3.141592653589793238462643383279
3.141592653589793
#zapisywanie danych do pliku
filename = 'programming.txt'
with open(filename, 'w') as file_object: #tryby: w - write, r - read, a - append, r+ - read/write
file_object.write('Uwielbiam programować.\n')
file_object.write('Uwielbiam tworzyć gry.\n')
with open(filename, 'a') as file_object:
file_object.write('Uwielbiam analizować dane.')
#obsługa wyjątku ZeroDivisionError
try:
print(5/0)
except ZeroDivisionError:
print("Nie można dzielić prze zero!")
while True:
nb1 = input('Podaj liczbę numer 1 (q to quit)')
if nb1 == 'q':
break
nb2 = input('Podaj liczbę numer 2 (q to quit)')
if nb2 == 'q':
break
try:
wynik = int(nb1) / int(nb2)
except ZeroDivisionError:
print("Nie można dzielić prze zero!")
else:
print('Wynik to: ',wynik)
#obsługa wyjątku FileNotFoundError
filename = "alicja.txt"
try:
with open(filename, encoding = 'utf-8') as f:
contents = f.read()
except FileNotFoundError:
print('nie ma takiego pliku') #można dać pass
output:
nie ma takiego pliku
#zliczenia słów
filename = "alice in wonderland.txt"
try:
with open(filename, encoding = 'utf-8') as f:
contents = f.read()
except FileNotFoundError:
print('nie ma takiego pliku')
words = contents.split()
print('Ilość słów w:',len(words))
#zapisywanie danych w formacie json
import json
numbers = [2 ,3 ,5 ,7 ,11]
filename = 'numbers.json'
with open(filename, 'w') as f:
json.dump(numbers, f)
with open(filename) as f:
json_text = json.load(f)
print('odczytany text: ',json_text)
output:
odczytany text: [2, 3, 5, 7, 11]
Rozdział 11 – Testowanie kodu
zawartość pliku name_function.py:
def get_formatted_name(first, last):
"""Generuje elegancko sformatowane pełne imię i nazwisko."""
full_name = f"{first} {last}"
return full_name.title()
zawartość pliku test_name_function.py:
import unittest
from name_function import get_formatted_name
class NamesTestCase(unittest.TestCase):
"""Testy dla programu 'name_function.py'."""
def test_first_last_name(self):
"""Czy dane w postaci 'Janis Joplin' są obsługiwane prawidłowo?"""
formatted_name = get_formatted_name('janis', 'joplin')
self.assertEqual(formatted_name, 'Janis Joplin')
if __name__ == '__main__':
unittest.main()
output:
OK