Języki skryptowe – laboratorium

advertisement
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 (TFTC
lub TCTF) 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
Download