- W empik go
Python dla wszystkich: Rozwiązania zadań programistycznych - ebook
Python dla wszystkich: Rozwiązania zadań programistycznych - ebook
Książka zawiera materiały uzupełniające do bezpłatnego podręcznika "Python dla wszystkich: Odkrywanie danych z Python 3", będące rozwiązaniami ćwiczeń programistycznych z podręcznika i zadań programistycznych online. Książka kierowana jest do osób korzystających z ww. podręcznika do nauczania Pythona.
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 9788396017635 |
Rozmiar pliku: | 1,2 MB |
FRAGMENT KSIĄŻKI
Książka zawiera materiały uzupełniające do bezpłatnego podręcznika: Charles R. Severance, “Python dla wszystkich: Odkrywanie danych z Python 3”. Poniżej znajdują się rozwiązania ćwiczeń programistycznych z podręcznika i zadań programistycznych online, które napisałem podczas prowadzenia kursu wprowadzającego do Pythona. Opisy ćwiczeń pochodzą ze wspomnianego wyżej podręcznika. Książka kierowana jest do osób korzystających z ww. podręcznika do nauczania Pythona (zatem nie udostępniaj proszę tych materiałów w internecie).ROZWIĄZANIA ĆWICZEŃ Z PODRĘCZNIKA
Rozdział 2
Ćwiczenie 2-2
Napisz program, który wykorzystuje funkcję input() do poproszenia użytkownika o jego imię, a następnie przywita go, używając jego imienia.
Rozwiązanie: prog-02-02.py
------------------------------------------------------------------------
name = input("Podaj swoje imię: ")
print("Witaj " + name + "!")
------------------------------------------------------------------------
Ćwiczenie 2-3
Napisz program, który wyświetli użytkownikowi pytanie o liczbę godzin pracy i stawkę za godzinę w celu obliczenia wynagrodzenia.
Podaj liczbę godzin: 39
Podaj stawkę godzinową: 28.75
Wynagrodzenie: 1121.25
Na razie nie będziemy się martwić o to, by nasze wynagrodzenie miało dokładnie dwie cyfry po przecinku. Jeśli chcesz, możesz pobawić się wbudowaną funkcją Pythona round(), tak aby prawidłowo zaokrąglić wynagrodzenie do dwóch miejsc po przecinku.
Rozwiązanie: prog-02-03.py
------------------------------------------------------------------------
hrs = input("Podaj liczbę godzin: ")
hrs = float(hrs)
rt = input("Podaj stawkę godzinową: ")
rt = float(rt)
pay = hrs * rt
pay = round(pay, 2)
print("Wynagrodzenie: " + str(pay))
------------------------------------------------------------------------
Ćwiczenie 2-4
Załóżmy, że wykonujemy następujące instrukcje przypisania:
width = 17
height = 12.0
Dla każdego z poniższych wyrażeń podaj wartość wyrażenia i oraz typ (wartości wyrażenia).
1. width//2
2. width/2.0
3. height/3
4. 1 + 2 * 5
Rozwiązanie: prog-02-04.py
------------------------------------------------------------------------
width = 17
height = 12.0
print(width//2)
print(type(width//2))
print(width/2.0)
print(type(width/2.0))
print(height/3)
print(type(height/3))
print(1 + 2 * 5)
print(type(1 + 2 * 5))
------------------------------------------------------------------------
Ćwiczenie 2-5
Napisz program, który prosi użytkownika o podanie temperatury w skali Celsjusza, przelicza ją na skalę Fahrenheita i wyświetla przeliczoną temperaturę.
Rozwiązanie: prog-02-05.py
------------------------------------------------------------------------
celsius = input("Podaj temperaturę w skali Celsjusza: ")
celsius = float(celsius)
fahrenheit = (celsius * 9/5) + 32
print("Temperatura w skali Fahrenheita: " + str(fahrenheit))
------------------------------------------------------------------------
Rozdział 3
Ćwiczenie 3-1
Przepisz ponownie swój program obliczający wynagrodzenie, tak aby dać pracownikowi 1,5 raza większą stawkę godzinową za czas przepracowany powyżej 40 godzin.
Podaj liczbę godzin: 45
Podaj stawkę godzinową: 10
Wynagrodzenie: 475.0
Rozwiązanie: prog-03-01.py
------------------------------------------------------------------------
hrs = input("Podaj liczbę godzin: ")
hrs = float(hrs)
rt = input("Podaj stawkę godzinową: ")
rt = float(rt)
if hrs <= 40:
pay = hrs * rt
else:
pay = 40 * rt + (hrs - 40) * 1.5 * rt
pay = round(pay, 2)
print("Wynagrodzenie: " + str(pay))
------------------------------------------------------------------------
Ćwiczenie 3-2
Przepisz ponownie swój program płacowy, używając try i except, tak aby elegancko obsługiwał on nienumeryczne dane wejściowe, wyświetlając w takim przypadku wiadomość i kończąc swoje działanie. Poniżej znajdują się wyniki dwóch uruchomień programu:
Podaj liczbę godzin: 20
Podaj stawkę godzinową: dziewięć
Błąd, podaj wartość numeryczną
Podaj liczbę godzin: czterdzieści
Błąd, podaj wartość numeryczną
Rozwiązanie: prog-03-02.py
------------------------------------------------------------------------
try:
hrs = input("Podaj liczbę godzin: ")
hrs = float(hrs)
rt = input("Podaj stawkę godzinową: ")
rt = float(rt)
if hrs <= 40:
pay = hrs * rt
else:
pay = 40 * rt + (hrs - 40) * 1.5 * rt
pay = round(pay, 2)
print("Wynagrodzenie: " + str(pay))
except:
print("Błąd, podaj wartość numeryczną")
------------------------------------------------------------------------
Ćwiczenie 3-3
Napisz program, który poprosi użytkownika o wartość pomiędzy 0.0 a 1.0. Jeśli wartość jest poza zakresem, wypisz komunikat o błędzie. Jeśli wartość jest między 0.0 a 1.0, wypisz ocenę, korzystając z poniższej tabeli:
Wartość Ocena
>= 0.9 5,0
>= 0.8 4,5
>= 0.7 4,0
>= 0.6 3,5
>= 0.5 3,0
< 0.5 2,0
Podaj wartość: 0.95
5,0
Podaj wartość: doskonała
Niepoprawna wartość
Podaj wartość: 10.0
Niepoprawna wartość
Podaj wartość: 0.75
4,0
Podaj wartość: 0.5
3,0
Podaj wartość: 0.46
2,0
Uruchom program wielokrotnie, jak pokazano powyżej, tak aby przetestować różne wartości.
Rozwiązanie: prog-03-03.py
------------------------------------------------------------------------
score = input("Podaj wartość: ")
try:
score = float(score)
if score > 1.0 or score < 0.0:
print("Niepoprawna wartość")
elif score >= 0.9:
print("5,0")
elif score >= 0.8:
print("4,5")
elif score >= 0.7:
print("4,0")
elif score >= 0.6:
print("3,5")
elif score >= 0.5:
print("3,0")
else:
print("2,0")
except:
print("Niepoprawna wartość")
------------------------------------------------------------------------
Rozdział 4
Ćwiczenie 4-1
Uruchom program na swoim systemie i zobacz, jakie dostajesz liczby. Uruchom program więcej niż raz i zobacz, jakie tym razem dostajesz liczby.
Rozwiązanie: prog-04-01.py
------------------------------------------------------------------------
import random
for i in range(10):
x = random.random()
print(x)
------------------------------------------------------------------------
Ćwiczenie 4-2
Przesuń ostatnią linię programu na samą górę, tak aby wywołanie funkcji pojawiło się przed definicjami. Uruchom program i zobacz, jaki komunikat o błędzie otrzymasz.
Rozwiązanie: prog-04-02.py
------------------------------------------------------------------------
repeat_lyrics()
# błąd "NameError: name 'repeat_lyrics' is not defined"
# funkcja repeat_lyrics() nie została zdefiniowana przed jej użyciem
def print_lyrics():
print("Jestem sobie drwal i równy chłop.")
print('Pracuję w dzień i śpię całą noc.')
def repeat_lyrics():
print_lyrics()
print_lyrics()
------------------------------------------------------------------------
Ćwiczenie 4-3
Przesuń wywołanie funkcji na sam dół i przenieś definicję print_lyrics() po definicji repeat_lyrics(). Co się stanie, gdy uruchomisz taki program?
Rozwiązanie: prog-04-03.py
------------------------------------------------------------------------
def repeat_lyrics():
print_lyrics()
print_lyrics()
def print_lyrics():
print("Jestem sobie drwal i równy chłop.")
print('Pracuję w dzień i śpię całą noc.')
repeat_lyrics()
# program uruchomi się poprawnie, ponieważ definicja funkcji
# nie oznacza jej uruchomienia, więc print_lyrics() może być po repeat_lyrics()
------------------------------------------------------------------------
Ćwiczenie 4-5
Co wypisze następujący program Pythona?
def fred():
print("Zap")
def jane():
print("ABC")
jane()
fred()
jane()
Rozwiązanie: prog-04-05.py
------------------------------------------------------------------------
def fred():
print("Zap")
def jane():
print("ABC")
jane()
fred()
jane()
------------------------------------------------------------------------
Ćwiczenie 4-6
Przepisz ponownie swoje obliczenie wynagrodzenia z dodatkiem za nadgodziny i stwórz funkcję o nazwie computepay(), która przyjmuje dwa argumenty (parametry hours i rate).
Podaj liczbę godzin: 45
Podaj stawkę godzinową: 10
Wynagrodzenie: 475.0
Rozwiązanie: prog-04-06.py
------------------------------------------------------------------------
def computepay(hours, rate):
if hrs <= 40:
pay = hrs * rt
else:
pay = 40 * rt + (hrs - 40) * 1.5 * rt
pay = round(pay, 2)
return pay
try:
hrs = input("Podaj liczbę godzin: ")
hrs = float(hrs)
rt = input("Podaj stawkę godzinową: ")
rt = float(rt)
money = computepay(hrs, rt)
print("Wynagrodzenie: " + str(money))
except:
print("Błąd, podaj wartość numeryczną")
------------------------------------------------------------------------
Ćwiczenie 4-7
Napisz ponownie program z poprzedniego rozdziału do wyliczania ocen za pomocą funkcji o nazwie computegrade(), która przyjmuje jako argument wartość i zwraca ocenę jako napis.
Wartość Ocena
>= 0.9 5,0
>= 0.8 4,5
>= 0.7 4,0
>= 0.6 3,5
>= 0.5 3,0
< 0.5 2,0
Podaj wartość: 0.95
5,0
Podaj wartość: doskonała
Niepoprawna wartość
Podaj wartość: 10.0
Niepoprawna wartość
Podaj wartość: 0.75
4,0
Podaj wartość: 0.5
3,0
Podaj wartość: 0.46
2,0
Uruchom program kilkukrotnie, tak aby przetestować różne wartości.
Rozwiązanie: prog-04-07.py
------------------------------------------------------------------------
def computegrade(val):
if score > 1.0 or score < 0.0:
return "Niepoprawna wartość"
elif score >= 0.9:
return "5,0"
elif score >= 0.8:
return "4,5"
elif score >= 0.7:
return "4,0"
elif score >= 0.6:
return "3,5"
elif score >= 0.5:
return "3,0"
else:
return "2,0"
score = input("Podaj wartość: ")
try:
score = float(score)
grade = computegrade(score)
print(grade)
except:
print("Niepoprawna wartość")
------------------------------------------------------------------------
Rozdział 5
Ćwiczenie 5-1
Napisz program, który odczytuje liczby tak długo, aż użytkownik wprowadzi “gotowe”. Po wpisaniu “gotowe” wypisz sumę, ile wprowadzono liczb oraz średnią z tych liczb. Jeśli użytkownik wprowadzi coś innego niż liczba, to używając try i except wykryj jego błąd, wypisz komunikat o błędzie oraz przejdź do następnej liczby.
Wprowadź liczbę: 4
Wprowadź liczbę: 5
Wprowadź liczbę: złe dane
Nieprawidłowe wejście
Wprowadź liczbę: 7
Wprowadź liczbę: gotowe
16 3 5.333333333333333
Rozwiązanie: prog-05-01.py
------------------------------------------------------------------------
num = 0
total = 0
while True:
value = input("Wprowadź liczbę: ")
if value == "gotowe":
break
try:
value = int(value)
except:
print("Nieprawidłowe wejście")
continue
num = num + 1
total = total + value
print(total, num, total/num)
------------------------------------------------------------------------
Ćwiczenie 5-2
Napisz kolejny program, który będzie prosił o listę liczb tak jak wyżej, ale na końcu zamiast średniej wypisze zarówno największą, jak i najmniejszą wprowadzoną liczbę.
Rozwiązanie: prog-05-02.py
------------------------------------------------------------------------
largest = None
smallest = None
while True:
value = input("Wprowadź liczbę: ")
if value == "gotowe":
break
try:
value = int(value)
except:
print("Nieprawidłowe wejście")
continue
if largest is None or value > largest:
largest = value
if smallest is None or value < smallest:
smallest = value
print(largest, smallest)
------------------------------------------------------------------------
Rozdział 6
Ćwiczenie 6-1
Napisz pętlę while, która zaczyna się od ostatniego znaku napisu i działa od końca, do pierwszego znaku, wypisując każdą literę w osobnej linii, w odwrotnej kolejności.
Rozwiązanie: prog-06-01.py
------------------------------------------------------------------------
fruit = 'banan'
index = len(fruit) - 1
while index >= 0:
letter = fruit
print(letter)
index = index -1
------------------------------------------------------------------------
Ćwiczenie 6-2
Zakładając, że fruit jest napisem, co oznacza fruit?
Rozwiązanie: prog-06-02.py
------------------------------------------------------------------------
fruit = 'banan'
print(fruit) # wyświetli się cały napis
------------------------------------------------------------------------
Ćwiczenie 6-3
Hermetyzacja to styl programowania, w którym szczegóły danej implementacji są ukryte. Dokonaj hermetyzacji powyższego kodu poprzez zamknięcie go w funkcji o nazwie count() i uogólnij ten kod tak, by przyjmował jako argumenty napis i literę.
Rozwiązanie: prog-06-03.py
------------------------------------------------------------------------
def count(p_word, p_letter):
c = 0
for letter in p_word:
if letter == p_letter:
c = c + 1
return c
x = count('banan', 'a')
print(x)
------------------------------------------------------------------------
Ćwiczenie 6-4
Dla tekstowego typu danych istnieje metoda o nazwie count(), która jest podobna do funkcji z poprzedniego ćwiczenia. Przeczytaj dokumentację tej metody pod adresem:
https://docs.python.org/library/stdtypes.html#string-methods
Napisz wywołanie metody, które zliczy, ile razy litera “a” występuje w słowie “banan”.
Rozwiązanie: prog-06-04.py
------------------------------------------------------------------------
word = 'banan'
print(word.count('a'))
------------------------------------------------------------------------
Ćwiczenie 6-5
Mamy następujący kod Pythona, który przechowuje napis w zmiennej text:
text = 'X-DSPAM-Confidence: 0.8475'
------------------------------------------------------------------------
text = "X-DSPAM-Confidence: 0.8475"
index = text.find(' ') + 1
num = text
num = float(num)
print(num)
------------------------------------------------------------------------
------------------------------------------------------------------------
text = 'kajak'
# usunięcie litery 'k' z lewej i z prawej strony
print(text.strip('k'))
# zamiana litery 'a' na 'A'
print(text.replace('a', 'A'))
# znalezienie pierwszej pozycji (indeksu) litery 'a'
print(text.find('a'))
# znalezienie pozycji (indeksu) litery 'a', zaczynając od pozycji (indeksu) nr 2
print(text.find('a', 2))
# znalezienie pozycji (indeksu) litery 'k', między 2 a 5 pozycją (indeksem)
print(text.find('k', 2, 5))
------------------------------------------------------------------------
Podaj nazwę pliku: mbox-short.txt
FROM [email protected] SAT JAN 5 09:14:16 2008
RETURN-PATH:
RECEIVED: FROM MURDER (MAIL.UMICH.EDU )
BY FRANKENSTEIN.MAIL.UMICH.EDU (CYRUS V2.3.8) WITH LMTPA;
SAT, 05 JAN 2008 09:14:16 -0500
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
for line in fhand:
print(line.rstrip().upper())
------------------------------------------------------------------------
X-DSPAM-Confidence: 0.8475
Podaj nazwę pliku: mbox.txt
Średni poziom pewności spamu: 0.894128046745
Podaj nazwę pliku: mbox-short.txt
Średni poziom pewności spamu: 0.750718518519
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
count = 0
acc = 0
for line in fhand:
line = line.rstrip()
if not line.startswith('X-DSPAM-Confidence: '):
continue
index = line.find(' ') + 1
num = line
num = float(num)
count = count + 1
acc = acc + num
print('Średni poziom pewności spamu:', acc/count)
------------------------------------------------------------------------
Podaj nazwę pliku: mbox.txt
Mamy 1797 linii z tematem wiadomości w pliku mbox.txt
Podaj nazwę pliku: missing.txt
Nie można otworzyć pliku: missing.txt
Podaj nazwę pliku: trele morele
TRELE MORELE - co za bzdury!
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
if fname == 'trele morele':
print("TRELE MORELE - co za bzdury!")
exit()
try:
fhand = open(fname)
except:
print('Nie można otworzyć pliku:', fname)
exit()
count = 0
for line in fhand:
if line.startswith('Subject:'):
count = count + 1
print('Mamy', count, 'linii z tematem wiadomości w pliku', fname)
------------------------------------------------------------------------
------------------------------------------------------------------------
def chop(t):
if len(t) == 0:
pass
elif len(t) == 1:
del t
else:
del t
del t
def middle(t):
return t
v =
print("v :", v)
chop(v)
print("chopped v:", v)
w =
print("w :", w)
x = middle(w)
print("middle w :", x)
print("w :", w)
------------------------------------------------------------------------
------------------------------------------------------------------------
fhand = open('prog-08-02.txt') # mbox-short.txt z dodanym 'From' w drugiej linijce
for line in fhand:
words = line.split()
# print 'Debug:', words
if len(words) == 0: continue
if words != 'From': continue
print(words)
------------------------------------------------------------------------
------------------------------------------------------------------------
fhand = open('prog-08-02.txt') # mbox-short.txt z dodanym 'From' w drugiej linijce
for line in fhand:
words = line.split()
# print 'Debug:', words
if len(words) < 3: continue # poprawka
if words != 'From': continue
print(words)
------------------------------------------------------------------------
------------------------------------------------------------------------
fhand = open('prog-08-02.txt') # mbox-short.txt z dodanym 'From' w drugiej linijce
for line in fhand:
words = line.split()
# print 'Debug:', words
if len(words) >= 3 and words == 'From':
print(words)
------------------------------------------------------------------------
Podaj nazwę pliku: romeo.txt
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
used_words =
for line in fhand:
words = line.split()
for word in words:
if word not in used_words:
used_words.append(word)
print(sorted(used_words))
------------------------------------------------------------------------
From [email protected] Sat Jan 5 09:14:16 2008
Podaj nazwę pliku: mbox-short.txt
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
Mamy 27 linii, w których From jest pierwszym wyrazem
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
count = 0
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From': # wariant 1
print(words)
count = count + 1
print("Mamy", count, "linii, w których From jest pierwszym wyrazem")
------------------------------------------------------------------------
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
mails =
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From': # wariant 2
mails.append(words)
print(words)
print("Mamy", len(mails), "linii, w których From jest pierwszym wyrazem")
------------------------------------------------------------------------
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
mails =
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From': # wariant 3
mails.append(words)
for mail in mails:
print(mail)
print("Mamy", len(mails), "linii, w których From jest pierwszym wyrazem")
------------------------------------------------------------------------
Wprowadź liczbę: 6
Wprowadź liczbę: 2
Wprowadź liczbę: 9
Wprowadź liczbę: 3
Wprowadź liczbę: 5
Wprowadź liczbę: gotowe
Największa: 9.0
Najmniejsza: 2.0
------------------------------------------------------------------------
t =
while True:
line = input("Wprowadź liczbę: ")
if line == "gotowe":
break
n = float(line)
t.append(n)
print("Największa:", max(t))
print("Najmniejsza:", min(t))
------------------------------------------------------------------------
------------------------------------------------------------------------
fhand = open("words.txt")
d = {}
for line in fhand:
words = line.split()
for word in words:
d = 123
print('zdolny:', 'zdolny' in d)
print('klawiatura:', 'klawiatura' in d)
print('zdolny:', 'zdolny' in d.keys()) # można też i tak
------------------------------------------------------------------------
From [email protected] Sat Jan 5 09:14:16 2008
Podaj nazwę pliku: mbox-short.txt
{'Sat': 1, 'Fri': 20, 'Thu': 6}
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 3 and words == 'From':
day = words
# ew. krocej:
# counts = counts.get(day, 0) + 1
if day in counts:
counts += 1
else:
counts = 1
print(counts)
------------------------------------------------------------------------
Podaj nazwę pliku: mbox-short.txt
{'[email protected]': 2, '[email protected]': 3,
'[email protected]': 4, '[email protected]': 2, '[email protected]': 5,
'[email protected]': 3, '[email protected]': 1,
'[email protected]': 1, '[email protected]': 1,
'[email protected]': 4, '[email protected]': 1}
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From':
mail = words
counts = counts.get(mail, 0) + 1
print(counts)
------------------------------------------------------------------------
Podaj nazwę pliku: mbox-short.txt
[email protected] 5
Podaj nazwę pliku: mbox.txt
[email protected] 195
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From':
mail = words
counts = counts.get(mail, 0) + 1
max_key = None
max_val = 0
for mail in counts:
if counts > max_val:
max_key = mail
max_val = counts
print(max_key, max_val)
------------------------------------------------------------------------
Podaj nazwę pliku: mbox-short.txt
{'uct.ac.za': 6, 'media.berkeley.edu': 4, 'umich.edu': 7,
'iupui.edu': 8, 'caret.cam.ac.uk': 1, 'gmail.com': 1}
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From':
mail = words
domain = mail.split('@')
counts = counts.get(domain, 0) + 1
print(counts)
------------------------------------------------------------------------
From [email protected] Sat Jan 5 09:14:16 2008
Podaj nazwę pliku: mbox-short.txt
[email protected] 5
Podaj nazwę pliku: mbox.txt
[email protected] 195
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 2 and words == 'From':
mail = words
counts = counts.get(mail, 0) + 1
t =
for mail in counts:
s = (counts, mail)
t.append(s)
t.sort(reverse=True)
v, k = t
print(k, v)
------------------------------------------------------------------------
Podaj nazwę pliku: mbox-short.txt
04 3
06 1
07 1
09 2
10 3
11 6
14 1
15 2
16 4
17 2
18 1
19 1
------------------------------------------------------------------------
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
words = line.split()
if len(words) >= 6 and words == 'From':
time = words
h = time.split(":")
counts = counts.get(h, 0) + 1
t = list(counts.keys())
t.sort()
for key in t:
print(key, counts)
------------------------------------------------------------------------
------------------------------------------------------------------------
import string
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
counts = {}
for line in fhand:
to_remove = string.punctuation + string.whitespace + string.digits
line = line.translate(line.maketrans('','', to_remove))
line = line.lower()
words = line.split()
for word in words:
for letter in word:
counts = counts.get(letter, 0) + 1
total = sum(counts.values())
t = list(counts.keys())
t.sort()
for key in t:
norm_v = round(100 * (counts / total), 1)
print(key, ':', norm_v, '%')
------------------------------------------------------------------------
Podaj wyrażenie regularne: ^Author
mbox.txt ma 1798 linii, które pasują do ^Author
Podaj wyrażenie regularne: ^X-
mbox.txt ma 14368 linii, które pasują do ^X-
Podaj wyrażenie regularne: java$
mbox.txt ma 4175 linii, które pasują do java$
------------------------------------------------------------------------
import re
pattern = input('Podaj wyrażenie regularne: ')
no_lines = 0
fhand = open("mbox.txt")
for line in fhand:
line = line.rstrip('\n')
if re.search(pattern, line):
no_lines += 1
print("mbox.txt ma", no_lines, "linii, które pasują do", pattern)
------------------------------------------------------------------------
New Revision: 39772
Podaj nazwę pliku: mbox.txt
38549
Podaj nazwę pliku: mbox-short.txt
39756
------------------------------------------------------------------------
import re
fname = input('Podaj nazwę pliku: ')
fhand = open(fname)
nums =
for line in fhand:
line = line.rstrip('\n')
matches = re.findall('^New Revision: (\d+)$', line)
if len(matches) > 0:
nums.append(int(matches))
#nums.extend()
print(int(sum(nums)/len(nums)))
------------------------------------------------------------------------
------------------------------------------------------------------------
import socket
link = input("Podaj link (http) - ")
try:
domain = link.split('/')
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((domain, 80))
cmd = ('GET '+link+' HTTP/1.0\r\n\r\n').encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
print(data.decode(),end='')
mysock.close()
except:
print("Błędnie podany link")
------------------------------------------------------------------------
------------------------------------------------------------------------
import socket
LIMIT = 3000
received = 0
link = input("Podaj link (http) - ")
try:
domain = link.split('/')
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((domain, 80))
cmd = ('GET '+link+' HTTP/1.0\r\n\r\n').encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if len(data) < 1:
break
if received + len(data) <= LIMIT:
print(data.decode(),end='')
elif received >= LIMIT:
pass
else:
to_display = LIMIT - received
print(data.decode(),end='')
received += len(data)
mysock.close()
print('\nPobrano ' + str(received) + ' znaków')
except:
print("Błędnie podany link")
------------------------------------------------------------------------
------------------------------------------------------------------------
import urllib.request
LIMIT = 3000
received = 0
link = input("Podaj link (http) - ")
try:
fhand = urllib.request.urlopen(link)
for line in fhand:
data = line.decode()
if received + len(data) <= LIMIT:
print(data,end='')
elif received >= LIMIT:
pass
else:
to_display = LIMIT - received
print(data,end='')
received += len(data)
print('\nPobrano ' + str(received) + ' znaków')
except:
print("Błędnie podany link")
------------------------------------------------------------------------
------------------------------------------------------------------------
# Aby uruchomić poniższy kod, poprzez wiersz linii
# poleceń zainstaluj bibliotekę BeautifulSoup:
#
# pip3 install beautifulsoup4
#
import urllib.request, urllib.parse, urllib.error
from bs4 import BeautifulSoup
import ssl
# Ignoruj błędy związane z certyfikatami SSL
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
url = input('Podaj link - ')
html = urllib.request.urlopen(url, context=ctx).read()
soup = BeautifulSoup(html, 'html.parser')
# Pobierz wszystkie znaczniki p
tags = soup('p')
print(len(tags))
------------------------------------------------------------------------
------------------------------------------------------------------------
import socket
link = input("Podaj link (http) - ")
try:
domain = link.split('/')
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((domain, 80))
cmd = ('GET '+link+' HTTP/1.0\r\n\r\n').encode()
mysock.send(cmd)
display = False
while True:
data = mysock.recv(512)
if len(data) < 1:
break
if display:
print(data.decode(),end='')
else:
pos = data.decode().find('\r\n\r\n')
if pos >= 0:
print(data.decode(),end='')
display = True
mysock.close()
except:
print("Błędnie podany link")
------------------------------------------------------------------------
------------------------------------------------------------------------
import urllib.request
import json
import ssl
import re
serviceurl = 'https://nominatim.openstreetmap.org/search.php?'
# Ignoruj błędy związane z certyfikatami SSL
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
while True:
address = input('Podaj nazwę miejsca: ')
if len(address) < 1: break
parms = dict()
parms = address
parms = 'geojson'
parms = 1
parms = 'pl'
url = serviceurl + urllib.parse.urlencode(parms)
print('Pobieranie', url)
uh = urllib.request.urlopen(url, context=ctx)
data = uh.read().decode()
print('Pobrano:', len(data))
try:
js = json.loads(data)
except:
js = None
if not js or 'features' not in js or len(js) == 0:
print('==== Błąd pobierania ====')
print(data)
continue
location = js
if re.search("Stany Zjednoczone$", location):
elements = location.split(", ")
if not re.search("", elements): # Ann Arbor, MI
state = elements
else:
state = elements # Washington, WI
print(state)
else:
print(location)
------------------------------------------------------------------------