Cześć! To jest fragment książki Python od podstaw, która ma pomóc w nauce programowania od zera. Znajdziesz ją na Allegro, w Empikach i w księgarniach internetowych.
W pierwszym przypadku zwróć uwagę na zastosowanie pojedynczych cudzysłowów, aby w środku umieścić podwójne.
print('Kim jest "ona"?') # Kim jest "ona"?
W drugim przypadku nie użyliśmy tej sztuczki, więc podwójny cudzysłów w środku kończy stringa, a następnie otwiera nowy. Na szczęście w środku znajduje się znak
+, który łączy dwa teksty w jeden. Zauważ podwójną spację pomiędzy "Użyję" a "by" w wyświetlonym tekście.print("Użyję " + " by dodać teksty") # Użyję by dodać teksty
Jeśli chcielibyśmy wypisać
"+", to powinniśmy otoczyć cały tekst cudzysłowami pojedynczymi.print('Użyję "+" by dodać teksty') # Użyję "+" by dodać teksty
W ostatnim przypadku popełniliśmy typowy błąd nowicjusza i zapomnieliśmy o użyciu spacji, gdy dodajemy dwa stringi.
print("Tekst," + "następny," + "jeszcze jeden") # Tekst,następny,jeszcze jeden
To, co powinniśmy zrobić, to dodać tę spację albo w tekście po lewej, albo po prawej od znaku dodawania.
print("Tekst, " + "następny, " + "jeszcze jeden") # Tekst, następny, jeszcze jeden print("Tekst," + " następny," + " jeszcze jeden") # Tekst, następny, jeszcze jeden
print(1 * 2 + 3 * 4 + 5 * 6 + 7 * 8 + 9) # 109 print(1 * (2 + 3) * (4 + 5) * (6 + 7) * (8 + 9)) # 9945 # Różni się od poprzedniego, bo nawiasy wymuszają # dodawanie przed mnożeniem. print(1 * 2 / 3 * 4 / 5 * 6 / 7 * 8 / 9 * 10) # 4.063492063492064 # musiało być większe od 1, bo ostatnie jest mnożenie. print(2 ** 10) # 1024 # to bardzo znana liczba w programowaniu # "kilo" w kontekście informatyki oznacza zwykle 1024, # w czasie gdy w innych kontekstach oznacza 1000.
W pierwszym przypadku mnożenie kończy się na 5, a więc możemy spodziewać się, że prawa strona jest większa. Poniższy kod to potwierdza.
print(1 * 2 + 3 * 4 + 5 < 1 + 2 * 3 + 4 * 5) # True
Poniżej sprawdzamy dla innych przypadków, czy lewa strona jest większa od prawej.
print(2 ** 20 > 3 ** 15) # False, więc prawa strona jest większa print(2 ** 15 > 10 ** 4) # True, więc lewa strona jest większa
Możemy też sprawdzić na odwrót.
print(2 ** 20 < 3 ** 15) # True print(2 ** 15 < 3 ** 4) # False
name = "Michał" print(name) # Michał name = "Marcin" print(name) # Marcin points = 123 print(points) # 123
num = 10 print(num) # 10 num = 20 print(num) # 20
public_workshops— Poprawna nazwa.1_way_ticket— Nie zaczynamy nazw zmiennych od liczb. Lepsza wersja toone_way_ticket.arbitrary_user— W zasadzie poprawne, aczkolwiek pierwsza część jest niepotrzebnie długa. Wystarczyuser. Jeśli jednak chcemy wyrazić, że chodzi o jakąś wartość, możemy użyća/an, a więca_user.note_type— Poprawna nazwa.user_Maciek— Formalnie akceptowalna, aczkolwiek użycie polskiego imienia jest dyskusyjne. Także zwykle wydzielamy zmienne, by określić coś uniwersalnego — co charakteryzuje tego użytkownika. W pewnych przypadkach taka nazwa byłaby akceptowalna, ale zazwyczaj preferowalibyśmy na przykład:userjak chodzi o "jakiegoś użytkownika",user1jeśli chodzi o jednego z kilku, czyadmin_userjeśli chodzi o użytkownika będącego adminem.post_user_request— Poprawna nazwa. Tutajpostodnosi się do metody POST w protokole internetowym HTTP.szkolenie_warszawa— Nie używamy polskich słów przy nazywaniu zmiennych. Lepsza wersja toworkshop_warsaw.
fruits = "Figa " price = 0 fruits += "Gruszka " price += 3.2 print(fruits) # Figa Gruszka print(price) # 3.2 fruits += "Banan " price += 2.8 print(fruits) # Figa Gruszka Banan print(price) # 6.0 fruits += "(kupon zniżkowy)" price -= 1.4 print(price) # 4.6
name = None surname = "Michalski" print(name is None) # True print(name) # None print(surname) # Michalski name = surname surname = "Gajos" print(name is None) # False print(name) # Michalski print(surname) # Gajos
if is_important: print("Szanownie") print("Witam") if gender == "female": print("Panią") if gender == "male": # albo elif print("Pana")
Rozwiązanie z w pojedynczej linii:
text = "" if is_important: text += "Szanownie " text += "Witam" if gender == "female": text += " Panią" if gender == "male": # albo elif text += " Pana" print(text)
# Przykładowe wartości coffee_finished = True days_until_deadline = 3 # Rozwiązanie if not coffee_finished: print("Piję kawę") elif days_until_deadline < 2: print("Pracuję") else: print("Uczę się programowania!")
Fragment pierwszy, wariant pierwszy
Cześć Michał
Może coś do picia?
Fragment pierwszy, wariant drugi
Witamy Pana Prezesa
Cześć Prezes Marek
Może coś do picia?
Fragment pierwszy, wariant trzeci
Cześć Paweł
Może czekoladkę?
Fragment pierwszy, wariant czwarty
Może czekoladkę?
Fragment drugi, wariant pierwszy
Cześć Michał
Może coś do picia?
Fragment drugi, wariant drugi
Witamy Pana Prezesa
Może coś do picia?
Fragment drugi, wariant trzeci
Cześć Paweł
Może czekoladkę?
Fragment drugi, wariant czwarty
Cześć
Może czekoladkę?
Fragment trzeci, wariant pierwszy
Cześć Michał
Kategoria: Dorośli
Fragment trzeci, wariant drugi
Witamy Pana Prezesa
Kategoria: Starsi
Fragment trzeci, wariant trzeci
Cześć Paweł
Kategoria: Dzieci
Fragment trzeci, wariant czwarty
Kategoria: Młodzież
has_computer = True passed_test = False is_grounded = False print(has_computer and passed_test) # False, ponieważ True and False print(passed_test or is_grounded) # False, ponieważ False or False print(has_computer and not passed_test) # True, ponieważ True and !False can_play_games = has_computer and not is_grounded # True, ponieważ True and !False, # a więc True and True print(can_play_games) # True play_games = has_computer and can_play_games # True, ponieważ True and True if not passed_test: is_grounded = True print(play_games) # True, # ponieważ gdy wartość ta była obliczana, # is_grounded był równy False print(passed_test or not is_grounded) # False, ponieważ False or !True, # ponieważ aktualna wartość is_grounded to True print(not (not has_computer or not passed_test)) # False, ponieważ True and False, # bo !(!a or !b) jest równoznaczne z a and b
Wypisz kolejne liczby parzyste (wielokrotności 2), zaczynając od 0, a mniejsze od 100.
i = 0 while i < 100: print(i) i += 2 # albo i = i + 2
Wypisz kolejne wielokrotności 7, zaczynając od 0, a mniejsze od 100.
i = 0 while i < 100: print(i) i += 7 # albo i = i + 7
Wyświetl kolejne wartości powstałe w wyniku wielokrotnego potrajania liczby, zaczynając od 13, tak długo, jak długo wynik jest mniejszy niż 1000.
i = 13 while i < 1000: print(i) i *= 3 # albo i = i * 3
Wypisz kwadraty kolejnych liczb całkowitych, mniejszych od 1000.
i = 0 while i * i < 1000: print(i * i) i += 1 # albo i = i + 1
Wypisz 5 kolejnych liczb, zaczynając od 0.
for i in range(5): print(i)
Wypisz kolejne liczby, zaczynając od 5, mniejsze od 10.
for i in range(5, 10): print(i)
Wypisz co czwartą liczbę od 5 do 30.
for i in range(5, 30, 4): print(i)
Wypisz kolejne liczby od 10 do 5 (bez 5).
for i in range(10, 5, -1): print(i)
Wypisz co drugą liczbę od 20 do 0 (bez 0).
for i in range(20, 0, -2): print(i)
def print_sum(a, b): print(a + b) def print_numbers(a, b): for i in range(a, b + 1): print(i)
def print_stars(num): stars = "" for i in range(num): stars += "*" print(stars) def print_square(size): for i in range(size): print_stars(size) def print_triangle(size): for i in range(size): print_stars(i + 1)
def days_to_millis(days): return days * 24 * 60 * 60 * 1000 def triangle_area(a, b): return a * b / 2 def biggest(a, b, c): if a >= b and a >= c: return a elif b >= c: return b else: return c
def sum_range(a, b): res = 0 for i in range(a, b): res += i return res # rozwiązanie rekurencyjne def sum_range(a, b): if b <= a: return 0 return sum_range(a + 1, b) + a
Personal_Invoice- Nie stawiamy znaku podkreślenia między słowami w nazwach klas. Lepszą nazwą będziePersonalInvoice.UserAddress- Poprawna nazwa.Carengine- "car" i "engine" to osobne słowa. Lepszą nazwą będzieCarEngine.doctor- Nazwy klas powinny zaczynać się z wielkiej litery.Dog- Poprawna nazwa.
class Player: pass player = Player() player.points = 0 print(player.points) # 0 player.points = 1 print(player.points) # 1
Dobrą nazwą będzie
BankAccount.class BankAccount: def __init__(self): self.balance = 0 def deposit(self, amount): self.balance += amount def withdraw(self, amount): if amount <= self.balance: self.balance -= amount return True else: return False account1 = BankAccount() account2 = BankAccount() account1.deposit(1000) print(account1.balance) # 1000 print(account2.balance) # 0
values = [True, 42, "AAA"] print(values.pop()) # "AAA" print(values.pop()) # 42 values.append(88) print(values) # [True, 88] pets = ["dog", "cat"] pets.pop() pets.append("pig") print(pets) # ["dog", "pig"] pet = pets.pop() print(pets) # ["dog"] print(pet) # "pig"
names = ["Ada", "Bartek", "Czarek", "Daria", "Ewa"] print(names[0]) # Ada print(names[3]) # Daria print(names[-1]) # Ewa print(names[-2]) # Daria print(names[1]) # Bartek print(names[-4]) # Bartek
names = ["Ada", "Bartek", "Czarek", "Daria", "Ewa"] print(names[0:2]) # ['Ada', 'Bartek'] print(names[2:4]) # ['Czarek', 'Daria'] print(names[:3]) # ['Ada', 'Bartek', 'Czarek'] print(names[3:-1]) # ['Daria'] print(names[1:]) # ['Bartek', 'Czarek', 'Daria', 'Ewa'] print(names[1:3]) # ['Bartek', 'Czarek'] print(names[-3:]) # ['Czarek', 'Daria', 'Ewa'] print(names[1:-2]) # ['Bartek', 'Czarek'] print(names[:]) # ['Ada', 'Bartek', 'Czarek', 'Daria', 'Ewa']
names = ["Ada", "Bartek", "Czarek"] names[2] = "Figa" print(names) # ['Ada', 'Bartek', 'Figa'] names[-2] = "Geralt" print(names) # ['Ada', 'Geralt', 'Figa'] names = ["Ada", "Bartek", "Czarek"] names[:1] = [] print(names) # ['Bartek', 'Czarek'] names[2:] = ["Ewa", "Halina"] print(names) # ['Bartek', 'Czarek', 'Ewa', 'Halina'] names[1:2] = ["Iza", "Jan"] print(names) # ['Bartek', 'Iza', 'Jan', 'Ewa', 'Halina'] names[:-1] = ["Kasia"] print(names) # ['Kasia', 'Halina']
letters = ['A', 'B', 'C', 'D', 'E', 'F'] print(len(letters)) # 6 print(letters[4]) # E numbers = [5, 6, 7, 8, 9, 10, 11, 12] print(len(numbers)) # 8 print(numbers[3]) # 8
letters = ["A", "C", "E"] print("A" in letters) # True print("B" in letters) # False print("C" in letters) # True letters[1] = "F" print("F" in letters) # True print("C" in letters) # False
l1 = ["A", "B"] l2 = ["D", "E"] letters = l1 + l2 l1Copy = l1[:] print(letters) # ['A', 'B', 'D', 'E'] l1.append("C") print(l1) # ['A', 'B', 'C'] print(letters) # ['A', 'B', 'D', 'E'] print(l1Copy) # ['A', 'B']
values = (True, 42, "AAA") print(values[1]) # 42 print(values[2]) # AAA print(values[:1]) # (True,) empty = tuple() print(len(empty)) # 0 single = ("AAA",) print(single) # ('AAA',) print(len(single)) # 1
names = ["michał", "nela", "ola", "przemek"] upper = [name.capitalize() for name in names] print(upper) # ['Michał', 'Nela', 'Ola', 'Przemek'] girls = [name.capitalize() for name in names if name[-1] == "a"] print(girls) # ['Nela', 'Ola'] count = 0 for name in names: count += len(name) print(count) # 20
class Money: def __init__(self, amount, currency): self.amount = amount self.currency = currency def __eq__(self, other): return isinstance(other, Money) and other.amount == self.amount and other.currency == self.currency def __str__(self): return f"{self.amount} {self.currency}" def __repr__(self): return "Money(" + f"amount={repr(self.amount)}, " + f"currency={repr(self.currency)})"