Przejdź do głównej zawartości

Python - lekcja 002

Spis treści:

- łańcuch znaków (string),
- wprowadzanie i prezentowanie danych (raw_input, print),
- zadania.


Poprzednia lekcja: Lekcja 1 (podstawowe typy liczbowe, operatory, rzutowanie)
Następna lekcja: Lekcja 3 (warunki)

W zmiennych oprócz liczb można przechowywać również inne dane. Przykładem tego mogą być wyrazy, zdania itp. czyli coś co w programowaniu nazywa się łańcuchem znaków np. 'abc', 'Ala ma kota.', "kino", "zielony samochód". Jak widać z powyższych przykładów łańcuchy musza być umieszczone w apostrofach lub cudzysłowach.

Przykładowy kod programu sprawdzający typy poszczególnych wartości

1
2
3
4
print type("Ala ma kota")
print type("A")
print type('A')
print type('dobra ksiazka')
http://ideone.com/oexpNJ
Dla wszystkich wartości program daje odpowiedź:

<type 'str'>

Czyli wszystkie ze sprawdzanych wartości są typu str czyli string.
Spróbujmy na stringach wykonać działania arytmetyczne:

1
2
3
4
print "a" * 3
print "abc" * 3
print "abc" + "b"
print "abc" + str(23)
http://ideone.com/dUY5A2

odpowiedź programu jest następująca:

aaa
abcabcabc
abcb
abc23

Analizując powyższe:
 - mnożenie stringa przez liczbę całkowitą powoduje jego powielenie odpowiednią ilość razy,
 - dodawanie powoduje doklejenie odpowiedniej litery lub całego zestawu znaków,
 - str(23) powoduje odczytanie liczby 23 jako ciągu znaków (rzutowanie).

Aby sprawdzić z ilu znaków składa się dany łańcuch wystarczy użyć funkcji len:

1
2
print len("Ala ma kota")
print len(str(2014))
http://ideone.com/zyXqRK
Efekt działania powyższego programu:

11
4

Zamiast całego stringa można użyć tylko jego części. Aby to zrobić należy w nawiasie kwadratowym podać, którą literę lub litery chcemy wyłuskać:

1
2
3
4
5
6
7
8
9
ciagZnakow = "komputer";
print len(ciagZnakow);
print ciagZnakow[0];
print ciagZnakow[4];
# print ciagZnakow[10]; <- błąd
print ciagZnakow[-1];
print ciagZnakow[-8];
print ciagZnakow[3:6];
print ciagZnakow[3:18];
Odpowiedź programu:

8
k
u
r
k
put
puter

Odwołując się do konkretnej litery należy pamiętać, że ich numeracja w ciągu zaczyna się od 0 (linie 3, 4 i 5). Wartości ujemne w nawiasach kwadratowych powodują wypisanie konkretnej litery od końca ciągu (linie 6 i 7). Wpisane zakresy a:b powodują oddanie liter ciągu znajdujących się w tym zakresie (linie 8 i 9).

W linii 5 został umieszczony komentarz. Jest to fragment kodu źródłowego, który nie będzie brany pod uwagę podczas wykonywania programu.
 - komentarze umieszczone tylko w jednej linii poprzedza się znakiem #,
 - komentarze obejmujące więcej niż jedna linię umieszcza się między potrójnymi apostrofami lub cudzysłowami.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# komentarz w jendej linii
a = 2
print a ** 10
"""
1. linia komentarza
2. linia komentarza
3. linia komentarza
4. linia komentarza
"""
print a**2

Odpowiedź programu:

1024
4

Dzięki komentarzom można opisać swój program w celu ułatwienia, sobie lub innym, późniejszej jego analizy.

Komunikację między użytkownikiem a programem można uzyskać dzięki funkcji raw_input(wiadomośćDlaUżytkownika). W przypadku gdy interpretuje się programy lokalnie (np. na swoim komputerze pliki z rozszerzeniem py) program będzie czekał na podanie jakiejś wartości i potwierdzenie tego faktu przyciskiem Enter. Jeżeli jednak uczymy się programować w serwisie ideone.com trzeba wejść w zakładkę "dane wejściowe" i wpisać wartość lub wartości, których będzie potrzebował program.

1
2
3
imie = raw_input("Podaj swoje imie: ")
print "\n"
print "Masz ladne imie, " + imie + "."
Dla podanego imienia Krzysztof program zwraca następująca odpowiedź:

Podaj swoje imie: 

Masz ladne imie, Krzysztof.

Dzięki instrukcji print, która wypisuje komunikaty dla użytkownika komunikacja użytkownika z programem może odbywać się w dwie strony.

Może zdarzyć się sytuacja, w której zależy programiście na tym by wpisywane przez użytkownika dane były rozpoznawane jako dane reprezentujące konkretny typ np. float. By poradzić sobie z takim problemem możemy odpowiednio rzutować wartości zwracane przez funkcje raw_input.
1
2
3
4
a = float(raw_input());
print 2 / a
a = int(raw_input());
print 2 / a
Dla danych:

4
4

program daje odpowiedź:

0.5
0


Standardowo raw_input oddaje wartość w postaci stringa. Bez rzutowania nie możnaby wykonać dzielenia.

Poprzednia lekcja: Lekcja 1 (podstawowe typy liczbowe, operatory, rzutowanie)
Następna lekcja: Lekcja 3 (warunki)

Zadania

1. Jaka będzie odpowiedź programu w poniższych przypadkach (w przypadku dowolnego błędu odpowiedź to error)

a. print 4 * "a"
b. print "Ala " + "ma"
c. print "Ala ma " * "kota."
d. print "Ala ma kota."[2]
e. print "Ala ma kota."[:5]
f. print "Ala ma kota."[5:]
2. Jaka będzie odpowiedź poniższego skryptu?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
slowo1 = "Ala"
slowo2 = "ma"
slowo3 = "kota"

print slowo1+slowo2+slowo3
print slowo1 + " " + slowo2 + " " + slowo3
slowo3 = "psa"
print slowo1 + " " + slowo2 + " " + slowo3
slowo1 = slowo2 * 2
print slowo1 == "Ala"
print slowo1 + " " + slowo3
print slowo1 and "Ala"
print 'a' in slowo3
print slowo1[::2]
print (slowo1+slowo2+slowo3)[::2]
3. Napisz skrypt, który przyjmie od użytkownika liczbę całkowitą (np. 2), podniesie ją do dziesiątej potęgi i wypisze wynik potęgowania na ekran.

Poprzednia lekcja: Lekcja 1 (podstawowe typy liczbowe, operatory, rzutowanie)
Następna lekcja: Lekcja 3 (warunki)














Komentarze

Popularne posty z tego bloga

[C++]Konwersja systemu dziesiętnego na binarny [dec2bin, dec2u2]

Konwersja między systemami liczbowymi była już poruszana w tym serwisie tym razem zajmę się kodem U2. Inaczej zwany uzupełnieniem do 2. Opis tego systemu pojawił się w kontekście wstępu do programowania w języku Python [ tutaj ]. Prosty program tzw. szkolny zamiany nieujemnej liczby dziesiętnej na jej postać binarną: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <iostream> using namespace std; int main () { int liczba; cin >> liczba; string wynik; while (liczba){ wynik = (liczba % 2 ? "1" : "0" ) + wynik; liczba /= 2 ; } cout << wynik; return 0 ; } Poniżej prezentuję kod programu, który zawiera trzy metody rozwiązania problemu jakim jest wyświetlenie użytkownikowi reprezentacji u2 podanej przez niego liczby dziesiętnej. Pierwsza z nich wywodzi się z typowego algorytmu konwersji systemu dec do u2: 1. przedstaw bezwzględną wartość liczby dziesiętnej w postaci binarnej, 2. dodaj na początek

Python - lekcja 005

Spis treści - zamiana całkowitych liczb dziesiętnych na ich odpowiedniki w innych systemach liczbowych (algorytm), - ujemne liczby całkowite w systemie binarnym (ZM, U1, U2, algorytm, formatowanie stringów, rzutowanie ze zmianą systemu liczbowego) [dec2bin, dec2ZM, dec2U1, dec2U2] - zadania.