Języki skryptowe – laboratorium dr inż. Grzegorz Bazydło [email protected], staff.uz.zgora.pl/gbazydlo Lista zadań nr 4 Zagadnienia Podstawy języka Python. Tworzenie skryptów w języku Python i uruchamianie ich w środowisku Windows. Język Python Python jest dynamicznie typowanym językiem interpretowanym wysokiego poziomu. Cechuje się czytelnością i zwięzłością kodu. Stworzony został w latach 90. przez Guido van Rossuma, nazwa zaś pochodzi od tytułu serialu komediowego emitowanego w BBC pt. „Latający cyrk Monty Pythona”. W Internecie można znaleźć sporo zasobów dot. tego języka. Najciekawsze z nich to: www.python.rk.edu.pl/w/p/podstawy/ – kurs programowania w Pythonie autorstwa Piotra Malińskiego, pl.python.org/kursy,jezyka.html – kursy programowania na stronie Stowarzyszenia Polskiej Grupy Użytkowników Pythona, www.python.org – oficjalna strona Pythona (w jęz. angielskim), python101.readthedocs.io/pl/latest/index.html – dokumentacja do szkolenia z języka Python realizowanego w ramach projektu „Koduj z Klasą” prowadzonego przez Fundację Centrum Edukacji Obywatelskiej. Tworzenie skryptów w języku Python Aby utworzyć skrypt Pythona należy utworzyć plik tekstowy z rozszerzeniem .py. Najlepiej używać strony kodowej Unicode (UTF-8) a jako pierwszą linijkę w skrypcie dodać: # -*- coding: utf-8 -*- Uruchomienie skryptu (np. o nazwie skrypt.py) w środowisku Windows z zainstalowanym środowiskiem Python realizowane jest poleceniem: python skrypt.py Przykład Poniższy program jest prostą grą, w której komputer losuje jedną liczbę z zakresu od 1 do 10, a użytkownik ma 3 próby, aby ją odgadnąć (uważaj na wcięcia – są one ważnym elementem składni Pythona, za pomocą których definiuje się bloki programu). # -*- coding: utf-8 -*import random liczba = random.randint(1, 10) for i in range(3): print ("Próba ", i+1) odp = input("Jaką liczbę od 1 do 10 mam na myśli? ") if liczba == int(odp): print ("Zgadłeś! Dostajesz długopis!") break else: if i == 2: print ("Miałem na myśli liczbę: ", liczba) else: print ("Nie zgadłeś. Spróbuj jeszcze raz.") print () 1 Zadanie 1 Wykorzystując bibliotekę turtle1 napisz program, który narysuje na ekranie symbol gwiazdy: Zadanie 2 Napisz program, który na podstawie podanych długości boków trójkąta sprawdza, czy dany trójkąt istnieje i jeżeli tak, to oblicza jego pole i obwód. Jeżeli z podanych długości boków nie da się zbudować trójkąta, należy wyświetlić stosowny komunikat. Do obliczenia pola trójkąta wykorzystaj wzór Herona: jeśli p = (a + b + c)/2, to pole S powierzchni trójkąta ABC jest równe: S p( p a)( p b)( p c) . Do obliczenia pierwiastka wykorzystaj instrukcję math.sqrt() (z biblioteki math). Zadanie 3 Napisz program przeliczający stopnie Celsjusza na Fahrenheita i odwrotnie. O kierunku przeliczenia (TFTC lub TCTF) decyduje użytkownik. Do realizacji algorytmu skorzystaj ze wzorów: 9 𝑇𝐹 = 32 + 5 ×𝑇𝐶 5 𝑇𝐶 = 9 ×(𝑇𝐹 − 32) gdzie: – TF oznacza temperaturę wyrażoną w stopniach Fahrenheita, – TC oznacza temperaturę wyrażoną w stopniach Celsjusza. Zadanie 4 Napisz program, który wyświetla na ekranie zadaną ilość wyrazów ciągu Fibonacciego. Ciąg Fibonacciego to ciąg liczb naturalnych o właściwościach: fib0 = 0, fib1 = 1, fibn = fibn-1 + fibn-2 dla n ≥ 2 Początkowe wartości tego ciągu to: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, … Zadanie 5 Napisz program, który sprawdzi, czy podana przez użytkownika liczba jest pierwsza. Zadanie 6 Napisz program, który zaszyfruje przy użyciu szyfru Cezara ciąg znaków podany przez użytkownika. Szyfr Cezara to rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną, oddaloną od niej o stałą liczbę pozycji w alfabecie, literą, przy czym kierunek zamiany musi być zachowany. Szyfru Cezara używa się z najczęściej z przesunięciem 13 (ROT13) i takie przesunięcie zastosuj. Zadanie 7 (bonus) Napisz program, który szyfruje tekst za pomocą następującego algorytmu opartego na algorytmie XOR. Do zaszyfrowania jest potrzebny klucz k, tj. liczba z przedziału [0…255]. Kolejne litery tekstu zamieniamy na odpowiedni kod ASCII, obliczamy wynik operacji XOR z k i do szyfrogramu wstawiamy wynik operacji zamieniony na odpowiedni znak ASCII. Na przykład zaszyfrowany tekst Python za pomocą klucza 7 (binarnie: 0000 0111) będzie wyglądać następująco: tekst ASCII klucz k XOR szyfr P 0101 0000 0000 0111 0101 0111 W y 0111 1001 0000 0111 0111 1110 ~ t 0111 0100 0000 0111 0111 0011 s h 0110 1000 0000 0111 0110 1111 o o 0110 1111 0000 0111 0110 1000 h n 0110 1110 0000 0111 0110 1001 i Program ma mieć postać funkcji szyfruj(tekst, klucz), która dla podanego tekstu i klucza zwraca zaszyfrowany tekst. 1 Przykład wykorzystania znajdziesz np. tutaj: openbookproject.net/thinkcs/python/english3e/hello_little_turtles.html 2