Punktacja:
- 80-100: bdb
- 70-79: db+
- 60-69: db
- 50-59: dst+
- 40-49: dst
Napisz skrypt, który sprawdza, czy podany przez użytkownika ciąg znaków zawiera tylko unikatowe znaki (tj. każda litera / cyfra występuje nie więcej niż jeden raz).
Napisz funkcję, która w danym ciągu znaków (string) znajduje wszystkie cyfry i zwraca ich wszystkie permutacje.
Napisz funkcję, która z podanej listy zwraca liczbę wystąpień stringów, które zaczynają i kończą się tym samym znakiem.
Napisz funkcję, która zwraca prawdę, gdy podane dwie listy mają co najmniej jeden wspólny element.
Napisz program, który zwraca wszystkie podlisty podanej listy, np.
[1, 2, 3] -> [[], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]
Napisz program, który pobiera od użytkownika liczbę całkowitą n, a następnie drukuje wszystkie liczby pierwsze mniejsze od n.
Napisz funkcję, która łączy dwa słowniki w jeden. Funkcja powinna drukować ostrzeżenie o powtarzających się kluczach.
Napisz program, który pobiera od użytkownika ciąg liczb (oddzielonych spacjami). Następnie tworzy słownik, którego kluczami są podane liczby a odpowiednimi wartościami kwadraty tych liczb. W pętli wydrukuj zawartość słownika w formacie: klucz -> wartość
.
Niech
dziennik = {"Matematyka": 4, "Fizyka": 5, "Informatyka": 3}
Napisz skrypt, który dodaje do dziennika dwa dodatkowe przedmioty (i oceny). Następnie drukuje listę przedmiotów wraz z ocenami oraz średnią ocen.
Napisz program do tworzenia listy zakupów. Pogram w pętli powinien pytać użytkownika o nazwę produktu oraz jego cenę i zapisywać podane wartości w słowniku (koniec pętli po podaniu pustej nazwy produktu), np.
Podaj produkt: masło
Podaj cenę: 5
Podaj produkt: mleko
Podaj cenę: 3
Podaj produkt: [enter]
tworzy słownik lista_zakupow = {"maslo": 5, "mleko": 3}
. Podanie produktu, który już występuje na liście, aktualizuje cenę. Na koniec program drukuję pełną listę zakupów, całkowity koszt produktów oraz najdroższy produkt (lub produkty jeśli najwyższą cenę posiada kilka produktów).
Napisz funkcję, która usuwa duplikaty (dwa różne klucze o takiej same wartości) ze słownika.
Napisz funkcję, która zamienia wszystkie spacje na _
we wszystkich kluczach podanego słownika.
Przeanalizuj poniższy kod:
import random
imiona = ("Kasia", "Basia", "Marek", "Darek")
nazwiska = ("Nowak", "Burak", "Smith", "Doe")
przedmioty = ("Matematyka", "Fizyka", "Chemia")
def generuj_studenta():
"""Funkcja zwaraca losowe imię i nazwisko"""
return "{} {}".format(random.choice(imiona), random.choice(nazwiska))
def generuj_dziennik(n):
"""Funkcja generuje n studentów i przypisuje im losowe oceny"""
studenci = []
for i in range(n):
# dodaje losowo wygenerowanego studenta z unikalnym id
student = {
"id": i,
"student": generuj_studenta()
}
# generuje losowe oceny
for przedmiot in przedmioty:
student[przedmiot] = random.randint(2, 5)
# dodaj studenta z ocenami do dziennika
studenci.append(student)
return studenci
def drukuj_dziennik(studenci):
"""Drukuje listę studentów wraz z ocenami"""
for student in studenci:
print("{}. {}".format(student["id"] + 1, student["student"]))
for przedmiot in przedmioty:
print("\t- {}: {}".format(przedmiot, student[przedmiot]))
- Dodaj funkcję, która liczy średnią ocen dla podanego studenta (tworząc nowy słownik), np.
{'id': 0, 'student': 'Marek Smith', 'Matematyka': 5, 'Fizyka': 2, 'Chemia': 2}
-> {'id': 0, 'student': 'Marek Smith', 'Średnia': 3}
Wsk. help(dict.pop)
-
Dodaj funkcję, która liczy średnią ocen dla każdego studenta z podanej listy.
-
Dodaj funkcję, która drukuje na ekranie ranking studentów (zaczynając od tych z najwyższą średnią).
Napisz program, który dla podanej liczby n (z konsoli) generuje słownik, którego kluczami są liczby całkowite od 1 do n, a wartościami listy ze wszystkimi dzielnikami danej liczby.
Napisz funkcję, który zwraca wynik mnożenia dwóch liczba bez wykorzystania operatora *
.
Stwórz moduł ciag_arytmetyczny.py
zawierający funkcje, które dla podanych a1 (pierwszy wyraz ciągu), r (różnica) oraz n zwracają:
- n-ty wyraz ciągu
- sumę pierwszych n wyrazów ciągu
Napisz skrypt, który zaimportuje funkcje z ciag_arytmetyczny.py
. Następnie:
- spyta użytkownika o a1, r i n
- wydrukuje na ekranie n-ty wyraz ciągu
- wydrukuje na ekranie sumę pierwszych n wyrazów ciągu
Napisz program, który dla podanego c0 drukuje ciąg Collatza (aż do wystąpienia liczby 1).
Stwórz moduł do konwersji między kolorami opisanymi w RGB i HEX. Następnie napisz skrypt, który demonstruje jego działanie.
Stwórz moduł do kompresji i dekompresji ciągu znaków. Moduł powinien zawierać trzy funkcje:
-
(3 pkt)
compress(string)
, która- zwraca
None
, gdy podany ciąg zawiera znaki inne niż litery (wsk.help(str.isalpha)
) - lub zwraca skompresowany string wg reguły
AAABBBBCAAAaaDD -> A3B4CA3a2D2
- zwraca
-
(3 pkt)
decompress(string)
, która odtwarza oryginalny tekst ze skompresowanego -
(1 pkt)
test(n)
, która- generuje n losowych ciągów znaków (wsk.
string.ascii_letters
) - sprawdza, czy dekompresja skompresowanego ciągu znaków zwraca oryginał
- generuje n losowych ciągów znaków (wsk.
Napisz program, który pobiera od użytkownika liczbę w postaci binarnej i konwertuję ją do systemu dziesiętnego. Uwaga: program powinien zwrócić odpowiedni komunikat i przerwać pracę, gdy podane przez użytkownika dane są nieprawidłowe.
Napisz program do nauki matematyki. Na starcie program powinien drukować ekran powitalny oraz menu, np:
###################
# KURS MATEMATYKI #
###################
1. Dodawanie
2. Odejmowanie
3. Mnożenie
4. Dzielenie
5. Wyjście
Wybierz działanie:
Po wyborze działania program powinien wylosować dwie liczby oraz zapytać o wynik, np
2 + 2 =
Po podaniu wyniku przez użytkownika program sprawdza, czy wynik jest poprawny oraz drukuje odpowiedni komunikat. Program działa w pętli aż zostanie wybrana opcja "Wyjście".
Napisz program, który wymaga trzech argumentów z linii komend (wsk. sys.argv
), czyli
python moj_skrypt.py arg1 arg2 arg3
które są długościami boków trójkąta (można założyć, że podane argumenty są liczbami). Na tej podstawie skrypt powinien wydrukować na ekranie następujące informacje:
- obwód trójkąta
- pole trójkąta
- informację czy trójkąt jest równoboczny, równoramienny czy różnoboczny
- informację czy trójkąt jest prostokątny, ostrokątny czy rozwartokątny
W przypadku złej liczby argumentów program powinien wyświetlić odpowiedni komunikat i zakończyć działanie.
Korzystając z metody równego podziału (bisekcji) znajdź przybliżone miejsce zerowe funkcji: f(x) = x**3 + 2*x*2 - 4*x - 10
w przedziale [1:3].
Napisz program, który pobiera od użytkownika klucz produktu (16 cyfr), następnie:
- sprawdza poprawność wprowadzonych danych (długość 16, tylko cyfry)
- konwertuje klucz do stringa w formacie AAAA-BBBB-CCCC-DDDD
- sprawdza, czy podany klucz jest prawidłowy (każda z otrzymanych liczb 4-cyfrowych AAAA itd. jest podzielna przez 3)
Napisz program "Magic 8-ball", który:
- prosi użytkownika o zadanie pytania typu tak/nie
- losuje jedną z 20 przygotowanych odpowiedzi
- pyta użytkownika, czy chce zadać kolejne pytanie