OBOWIĄZKOWE DO PRZESŁANIA: 2.10-2.19
Prosty sposób na automatyczne sprawdzenie kodu:
assert result == expected_result
W zadaniach budujemy całe napisy, a nie wyświetlamy po kawałku.
Wygenerować listę słów kluczowych Pythona. Sprawdzić, czy można utworzyć zmienne o takich nazwach.
Sprawdzić listę obiektów wbudowanych. W czasie normalnej pracy nie ma potrzeby importowania modułu __builtin__, ponieważ obiekty wbudowane są dostępne.
>>> import __builtin__ >>> dir(__builtin__)
W trybie interaktywnym zbadać podane wyrażenia i wyjaśnić rezultaty.
5 == 5, 4 > 5 # porównania type(True), type(False) # bool, bool type(1), type(0) # int, int x = 5 x == 5 and 3 # 3 x == 4 and 3 # False 3 and x == 5 # True 3 and x == 4 # False 1 < x < 9 # łączenie operatorów porównania isinstance(True, int) # True isinstance(True, bool) # True
W trybie interaktywnym zbadać:
W trybie interaktywnym zbadać podane wyrażenia.
# Funkcja len(). len("napis") # 5 len(str(2 ** 10000)) # konwersja liczby do napisu "abc", 'abc' # identyczne S = "ab" 'cd' # niejawna konkatenacja do "abcd" "ab'cd", 'ab"cd' # zastosowanie S = "a\tb\nc\"d" # znaki specjalne print ( "{} {}".format(len(S), S) ) # 7 S = """jeden dwa trzy""" # napis wielowierszowy, podobnie z ''' print ( S ) # Sprawdzić indeksowanie i wycinki. S = "abrakadabra" S[2], S[-3], S[3:5], S[3:], S[:4] # Sprawdzić konkatenację (łączenie) i powtórzenie napisów. L = ["a", "b", "c"] L[0] + L[1] + L[2] # ręczne dodawanie L[0] + "=" + L[1] + "=" + L[2] "".join(L) # zalecane "=".join(L) # zalecane # S.join([S1,S2,S3]) daje S1+S+S2+S+S3 # Sprawdzić niezmienność napisów.
Zbadać metody dla napisów, lista metod dir(str). Zwrócić uwagę na metody: find(), replace(), strip(), lower(), upper(), zfill().
W trybie interaktywnym zbadać podane wyrażenia.
L = [3, "xyz", [10, 20]] len(L) L[1], L[1][0], L[2], L[2][1] M = L L[1] = 5 # zmienia się też M! # Indeksowanie # Wycinki. # Konkatenacja i powtórzenie. # Podstawianie pod element lub wycinek. # Generowanie list funkcją range(). # Kopiowanie list. # Sortowanie list. # Listy składane.
Spróbować wyświetlić element poza końcem listy (IndexError). Spróbować przypisać element pod indeksem poza końcem listy.
Zbadać różnicę między podstawianiem L2 = L1, a kopiowaniem list L2 = list(L1). Wykorzystać funkcję id().
Zbadać metody dla list, lista metod dir(list).
W trybie interaktywnym zbadać operacje na krotkach.
Zbadać metody dla krotek, lista metod dir(tuple).
W trybie interaktywnym zbadać operacje na słownikach, lista metod dir(dict).
Sprawdzić możliwość pobrania nieistniejącego klucza (KeyError).
W trybie interaktywnym zbadać operacje na zbiorach.
Zbadać metody dla zbiorów, listy metod dir(set) oraz dir(frozenset).
Wykorzystać zbiór do usunięcia duplikatów z listy.
Napisać funkcję wykonującą kopiowanie pliku, która pomija linie rozpoczynające się od znaku # (linie z komentarzami).
Mamy dany napis wielowierszowy line. Podać sposób obliczenia liczby wyrazów w napisie. Przez wyraz rozumiemy ciąg "czarnych" znaków, oddzielony od innych wyrazów białymi znakami (spacja, tabulacja, newline).
Podać sposób wyświetlania napisu word tak, aby jego znaki były rozdzielone znakiem podkreślenia.
Zbudować napis stworzony z pierwszych znaków wyrazów z wiersza line. Zbudować napis stworzony z ostatnich znaków wyrazów z wiersza line.
Znaleźć łączną długość wyrazów w napisie line. Wskazówka: można skorzystać z funkcji sum().
Znaleźć: (a) najdłuższy wyraz, (b) długość najdłuższego wyrazu w napisie line.
Na liście L znajdują się liczby całkowite dodatnie. Stworzyć napis będący ciągiem cyfr kolejnych liczb z listy L.
W tekście znajdującym się w zmiennej line zamienić ciąg znaków "GvR" na "Guido van Rossum".
Posortować wyrazy z napisu line raz alfabetycznie, a raz pod względem długości. Wskazówka: funkcja wbudowana sorted().
Znaleźć liczbę cyfr zero w dużej liczbie całkowitej. Wskazówka: zamienić liczbę na napis.
Na liście L mamy liczby jedno-, dwu- i trzycyfrowe dodatnie. Chcemy zbudować napis z trzycyfrowych bloków, gdzie liczby jedno- i dwucyfrowe będą miały blok dopełniony zerami, np. 007, 024. Wskazówka: str.zfill().