12: Rady

Ta lekcja zawiera kilka faktów, dotyczących języka Python, które nie były uwzględnione we wcześniejszych lekcjach.

Opcje print

Do tej pory, jedynym sposobem na zobaczenie wydruku, było użycie funkcji print(), która może drukować w jednej lini kilka pozycji oddzielonych spacjami. W rzeczywistości, print() akceptuje argumenty z kilkoma słowami kluczowymi, które pozwalają, w zależności od potrzeb, modyfikować to zachowanie.

  • Aby zmienić separator spację na inny łańcuch S, należy podać argument sep = «S»
  • Aby zastąpić znak "end-of-line" (koniec wiersza) innym łańcuchem S, należy dołączyć argument end = «S»

Tą nową możliwość, słów kluczowych argumentów, najłatwiej przedstawić poprzez kilka przykładów.

Przykład
Przykłady z sep i end. Sprawdź wpływ każdego przy wywołaniu print.

Te słowa kluczowe argumentów muszą być podane na końcu listy argumentów albo wystąpi error. Jeśli używasz obu, możesz je podać w dowolnej kolejności.

Zadanie na kodowanie : Aerobik Alfabetyczny
Używając tego, co właśnie wprowadziliśmy, debugujemy poniższy program, otrzymujemy alfabet wielkich liter w jednej linii.

Poprawne Nazwy Zmiennej/Funkcji

  • Nazwy mogą zawierać litery, cyfry i znak podkreślenia (_).
  • Pierwszy znak w każdej nazwie musi być literą.
  • Python odróżnia duże i małe litery.

Zatem my_3rd_int jest prawidłową nazwą zmiennej, ale 3rd_int nie.

Przykład
Przykład na rozróżnianie dużych i małych liter.

Malejące pętle for & inne gradacje

Przypomnijmy, że pokazaliśmy, jak pętle for iterują rosnąco po liczbach:

Przykład
A for loop

Często istnieje potrzeba użycia pętli for, która przechodzi przez numery w kolejności malejącej (od największej do najmniejszej). W tym celu w range stosujemy trzeci argumentem nazywany step (krokiem):

Przykład
Negative step for range

Kiedy myślisz o zapisie range(0, 5), to jest on taki sam jak range(0, 5, 1): domyślny przyrost wynosi 1. W obu przypadkach należy pamiętać, że range(start, stop, step) kończy działanie tuż przed osiągnięciem limitu wartości stop. Więcej informacji można znaleźć w podręczniku Python manual.

Zadanie na kodowanie : Szczęśliwe Siudemki
Napisz program za pomocą pętli for z krokiem 10, aby wydrukować wszystkie 2-cyfrowe liczby, które kończą się 7 w kolejności rosnącej.

Podobnie można użyć string[x:y:2], aby uzyskać łańcuch znaków x, x+2, x+4, ... lub string[y:x:-1], aby uzyskać odwróconą część łańcucha (gdzie y > x).

Po pętli for, kolejnym sposobem na osiągnięcie zmniejszającego się zakresu jest reversed(range(x, y)), który zmienia się od y-1 do x w porządku malejącym.

Pisanie Krótszego Kodu

Python daje mozliwość zapisu krótszego kodu na kilka sposobów; wprowadzimy kilka z nich tutaj.

Na tej stronie internetowej nie zawsze będziemy korzystać z tych możliwości, ponieważ użycie ich czasami sprawia, że kod jest trudniejszy do przeczytania.

Operatory Przypisania

Python pozwala na zapis "x += 1", który oznacza "dodać jeden do x". Jest to więc równoważne zapisowi "x = x + 1", jak pokazano poniżej:

Przykład
Examples of +=, -=, *=, /=

Podobnie jest dla operatorów dzielenia całkowitego (//=), modulo (%=), potęgowania (**=).

Bloki Wewnątrzliniowe

Widzieliśmy już kilka instrukcji, po których następuje wcięcie "bloków" kodu: for, if, else, elif, while i def, na przykład:

if x==y:
  «block» #indented, multiline
W szczególnym przypadku, gdy «block» jest tylko jedną linijką, Python umożliwia następującą alternatywną składnię:

if x==y: «block» #single line
Oto przykład:

Przykład
Instrukcje w bloku wewnątrzliniowym

Ma to jednak swoje granice: blok złożony z podwójnych (if, for, etc) nie może być używany jako blok wewnątrzliniowy. Na przykład if 2>1: if 4>3: print() spowoduje syntax error (błąd składni).

Wielokrotne Przypisanie

Python umożliwia łączenie w jedną dwóch instrukcji przypisania:

Przykład
Wielokrotne przypisanie

Zauważ, że pozwala to rozwiązać nasze ćwiczenia wymiany, używając tylko jednej linii!

Łańcuch Porównań

Python umożliwia również łączenie kilku porównań w jedno:

Przykład
Łańcuch porównań
Pewien ciąg v1 c1 v2 c2 v3 ..., gdzie v są wartościami a c są porównaniami, jest taki sam jak (v1 c1 v2) and (v2 c2 v3) and...

Domyślne Wartości dla [:] i range()

Gdy korzystasz z operatora podłańcucha [:], możesz pominąć jedną lub obydwie wartości początkową/końcową [:]. (Zobaczymy w następnej lekcji, że dotyczy to również list.) Domyślną wartością pierwszego indeksu jest 0 (początek łańcucha), a domyślną wartością ostatniego indeksu jest długość łańcucha. Podobnie range(n) jest krótką formą range(0, n).

Przykład
Użycie domyślnych wartości dla [:] i range()

None

Niektóre funkcje zwracają wartość jako główny efekt, np. abs(x). Ale inne funkcje, takie jak print(), jednak zwracają 'default' value None:

Przykład
Wartość print

Oto None, które jest specjalną wartością używaną przez Pythona jako symbol zastępczy ogólnego przeznaczenia. Jeśli wywołasz type(None), dowiesz się, że None ma nawet swój własny typ NoneType. Skoro już jesteśmy przy tym temacie, spójrzmy, jaki jest typ zmiennej:

Przykład
The type of a type

W następnym ćwiczeniu prosimy o uważne śledzenie wyników długiego polecenia z użyciem type i print.

Zadanie na uporządkowanie: One None
Wyjście wydruku print(type(print(type(type(print(print())))))) składa się z 4 linii. Rozmieść je we właściwej kolejności.
  • None
  • <class 'NoneType'>
  • «blank line»
  • <class 'type'>
Bezbłędnie!

Na razie to są wszystkie wskazówki. Jesteś gotowy, aby kontynuować następną lekcję!