Wielki Test Wiedzy o Pythonie cz. I

06.11.2019

Artykuł

Python to najbardziej pożądany zdobywający coraz większą popularność (wg raportu Stack Overflow) język programowania. Uznawany jest za uniwersalny i przystępny do nauki, a możliwości jego wykorzystania i rzeczywiste obszary jego zastosowań są naprawdę ogromne. Bardzo dużo modułów oraz komponentów potrzebnych do budowania aplikacji i wykonywania podstawowych operacji jest dostarczonych wraz z językiem. Dzięki temu, Zmniejsza to próg wejścia i ułatwia start w programowaniu.

Znasz podstawy Pythona? A może pracujesz w tym języku programowania na co dzień? Sprawdź lub odśwież swoją wiedzę razem z naszym trenerem, Mikołajem Lewandowskim. Przed Tobą Wielki Test wiedzy o Pythonie, który sprawdzi Twoją wiedzę!

W ubiegłym miesiącu przeprowadziliśmy webinar, którego główną atrakcją był test wiedzy o Pythonie. Zobacz jak przebiegało spotkanie i weź udział w teście.

A jeśli od razu chcesz przystąpić do pogłębienia swojej wiedzy, zapraszamy do lektury.

W tej części tego artykułu zapoznasz się 5 zagadnieniami z grupy bardzo łatwych, natomiast w kolejnej części rzucimy Ci wyzwanie w postaci zagadnień z puli tych o większym stopniu trudności.

Jednak najpierw kilka słów dla motywacji:

Gdzie Python znajduje zastosowanie?

Zapoznaj się z wynikami ankiety na Jetbrains ilustrującymi skalę i przekrój zastosowania Pythona: KLIKNIJ

grafika przedstawiająca, co można robić w Pythonie - np. skypty, automatyzacja, aplikacje webowe

Co można robić w Pythonie?

  • aplikacje webowe (Django, Flask)
  • machine learning (Tensorflow, Keras)
  • przetwarzanie i analiza danych
  • testowanie automatyczne
  • skrypty, automatyzacja, webscrapping
  • systemy wbudowane (np. Raspberry Pi)
firmy, których aplikacje są oparte na Pythonie: Google, Instagram, Reddit, Dropbox, Youtube, Spotify
Więcej o zastosowaniu Pythona przeczytasz tutaj:
Podstawy Pythona: webinar i live coding

Dla kogo jest Python – czy powinienem się nim zainteresować tylko jeżeli chcę zostać programistką/programistą?

Python to język programowania dla:

  • zawodowych programistów – w różnych obszarach rozwoju (aplikacje webowe, programista ML, systemy wbudowane),
  • osób pracujących z dużą ilością danych: analitycy, przetwarzający i wizualizujący trendy,
  • testerów automatyzujących,
  • Ciebie – w codziennej pracy – np. jeżeli wymaga przeszukiwania różnego rodzaju ogłoszeń, pobierania informacji w sieci – skrypty w Pythonie mogą nam pomóc zautomatyzować tego typu czynności, jak również różnego rodzaju operacje wykonywane w Excelu czy plikach tekstowych,
  • DevOpsów, administracji – skrypty,
  • do zabawy – np. zbudowanie własnej stacji pogodowej, czy zaprogramowanie prostego robota,
  • dla lepszego rozumienia otaczającego nas świata – nie każdy jest zawodowym programistą, tak jak nie każdy zna język angielski na poziomie filologa. Jednak podstawowe zrozumienie, podstawowe zwroty są bardzo przydatne w codziennym życiu.

To co, już po rozgrzewce? Zaczynamy test wiedzy o Pythonie!

1. Jak poprawnie wypisać "Hello world"?

W Pythonie najprostszym sposobem na wypisanie tekstu jest użycie wbudowanej funkcji print. Dlaczego? Ponieważ pierwszym argumentem tej funkcji jest obiekt, który chcemy wypisać. Może to być ciąg znaków, czyli obiekt typu str (jak w naszym przypadku) albo obiekt innego typu. W tej drugiej sytuacji zostanie on skonwertowany do ciągu znaków.
Za pomocą funkcji print możemy również wypisać wiele obiektów. Na przykład wywołanie:

print('Ala', 'Jan', 'Adam')

wypisze Ala Jan Adam

Funkcja print przyjmuje również dodatkowe argumenty, które pozwalają podać:

  • separator, używany do rozdzielania kolejnych wypisywanych obiektów
  • znak wypisywany na końcu
  • miejsce, gdzie wypisywany jest tekst
  • flagę, wpływającą na buforowanie tekstu

Ponieważ funkcja print jest funkcją wbudowaną nie trzeba jej również importować.
W większości przypadków podstawowy sposób wywołania

print("Tekst do wypisania")

będzie wystarczający, jednak warto jest znać jej pełne możliwości. W Pythonie 2 print było słowem kluczowym (statement) jak np. return.
Umożliwiało to wywołanie w następującej postaci:

print "Tekst"

Zostało to zmienione w Pythonie 3 i aktualnie print jest już tylko funkcją wbudowaną.

Zatem poprawna odpowiedź na pytanie to:

print("Hello world!")

Bardziej szczegółowe informacje na temat funkcji print w Pythonie 3 są bardzo dobrze opisane w dokumentacji – naprawdę warto tam czasem zaglądać 😉 :
https://docs.python.org/3/library/functions.html#print

Informacje o różnicach pomiędzy Pythonem 3 a 2:
https://docs.python.org/3/whatsnew/3.0.html

Informacje na temat funkcji print w Pythonie 2:
https://docs.python.org/2.7/library/functions.html#print

2. Która z poniższych komend przypisze do zmiennej result ciąg znaków "Python"?

W Pythonie jednym ze sposobów na konkatenację stringów (inaczej łączenie ciągów znaków) jest wykorzystanie operatora +. Jest to możliwe, gdyż typ wbudowany str implementuje odpowiednie metody umożliwiając realizację operacji takich jak konkatenacja czy indeksowanie, za pomocą operatorów działających też na typach sekwencyjnych. Zapis tego typu jest bardzo czytelny, więc aby połączyć nowy ciąg znaków z istniejącą już wartością, zapisaną w zmiennej można skorzystać z operatora +=

welcome = "Hello"
welcome += " World!"

Korzystając z + do konkatenacji stringów należy pamiętać o pewnych ograniczeniach, narzucanych przez charakterystykę tego typu. Typ str jest w Pythonie typem immutable. (zobacz: “Który z typów jest mutable?”). W kontekście operatora + czy też += powoduje to, że każde jego użycie utworzy nowy obiekt str. W większości typowych sytuacji nie będzie to problemem i zastosowanie operatora + będzie dobrym rozwiązaniem ze względu na jego wysoką czytelność. Jednak w sytuacji gdy łączymy ze sobą bardzo dużo ciągów znaków może to mieć negatywne konsekwencje wydajnościowe. W takim przypadku lepiej użyć metody join().

Poprawną odpowiedzią na pytanie jest:

result = "Py" + "thon"

Informacje o typie str w dokumentacji:
https://docs.python.org/3/library/stdtypes.html#str
https://docs.python.org/3/library/stdtypes.html#typesseq-common

Artykuł o różnych operacjach na stringach:
https://realpython.com/python-string-split-concatenate-join/

3. Która z instrukcji nie wykonuje żadnej operacji?

Poprawną odpowiedź to: pass

pass statement nie wykonuje żadnej operacji, więc można wykorzystać ją jako “wypełniacz” np. ciała funkcji, tworząc w ten sposób poprawną strukturalnie implementację:

def not_sure_about_it():
  pass

Informacje o pass statement w dokumentacji:
https://docs.python.org/3/reference/simple_stmts.html#the-pass-statement

4. Za pomocą jakiego słowa kluczowego definiujemy instrukcję warunkową?

W Pythonie instrukcje warunkową zapisujemy zgodnie ze wzorcem:

if warunek_logiczny:
  kod, który wykona się gdy warunek logiczny jest spełniony (prawdziwy)

Po tym bloku może wystąpić dowolna liczba opcjonalnych bloków elif pozwalająca zapisać warunki alternatywne:

elif inny_warunek:
  kod który wykona się gdy żaden z poprzednich warunków nie był prawdziwy ale ten jest
elif jeszcze_inny_warunek:
  ...

Na końcu może wystąpić jeden opcjonalny blok else, pozwalający obsłużyć sytuację, w której żaden z poprzednich warunków nie był prawdziwy:

else:
  kod, który wykona się jeżeli żaden z poprzednich warunków nie spełnił się

Poprawną odpowiedzią jest zatem if.

Co ciekawe, w  Pythonie istnieje również możliwość zapisania instrukcji if w postaci jednej linii lub skorzystania z conditional expression (tzw. ternary operator). Więcej informacji na ten temat można znaleźć w poniższym artykule:
https://realpython.com/python-conditional-statements/

5. Jak poprawnie zadeklarować funkcję o nazwie get_full_name, przyjmującą dwa argumenty: first_name i last_name?

W Pythonie funkcję deklaruje się używając słowa kluczowego def następnie podając nazwę funkcji (za pomocą tej nazwy możliwe jest odwołanie się do funkcji np. w celu jej wywołania). Następnie wewnątrz okrągłych nawiasów należy wypisać nazwy argumentów funkcji. Są one opcjonalne (tzn. funkcja może nie mieć w ogóle argumentów – wtedy nawiasy są puste wewnątrz: () ). Linię kończymy dwukropkiem, a od następnej rozpoczyna się definicja ciała funkcji (instrukcji, do wykonania w jej obrębie).

Regułą kciuka jest nie przekazywanie do funkcji zbyt wielu argumentów. Sytuacja, w której funkcja przyjmuje bardzo dużo argumentów sugeruje, że jej odpowiedzialność jest za duża i należy rozważyć podzielenie jej na kilka mniejszych.

Poprawną odpowiedzią jest:

def get_full_name(first_name, last_name):

Po więcej informacji odsyłamy do dokumentacji:
https://docs.python.org/3/tutorial/controlflow.html#defining-functions

Podstawowe informacje o funkcji w Pythonie:
https://www.programiz.com/python-programming/function

Jak Ci poszło? Jesteś gotowy na nowe wyzwania? Przed Tobą Wielki Test Wiedzy o Pythonie – część II!

Autor:

wielki test wiedzy o Pythonia

Mikołaj Lewandowski
Senior Python Developer

Programista, team leader i trener programowania. Entuzjasta Software Craftsmanship i pragmatycznego podejścia do rozwijania systemów. Wierzy w ideę Civic Tech i to, że technologia może zmienić świat. Biegacz, rowerzysta, czasami podróżnik.