Zadania
Funkcje
# Z1
# Napisz funkcję do której użytkownik będzie przekazywał tekst z imieniem.
# Funkcja ma zwrócić tekst witający użytkownika (czyli sklejający słowo witaj z przekazanym imieniem)
def witaj(imie:str)->str:
return(f"Witaj {imie}!")
print(witaj("Klaudia"))
# Z2
# Napisz funkcję do której użytkownik będzie przekazywał liczbę będącą promieniem okręgu.
# Zwróć policzone pole okręgu (pi * r * r)
def pole_kola(r:int|float)->int|float:
pole=3.14*r*r
return(f"Pole koła o promieniu {r} wynosi {pole}.")
print(pole_kola(2))
# Z3
# To samo zrób dla obwodu
def obwod_okregu(r:int|float)->int|float:
obwod=2*3.14*r
return(f"Obwód okręgu o promieniu {r} to {obwod}.")
print(obwod_okregu(2))
# Z4
# Napisz funkcję do której użytkownik będzie przekazywał liczbę całokowitą.
# Policz silnię tej liczby.
import math
def silnia(x:int|float):
return(math.factorial(x))
print(f"{silnia(2)}")
# Z5
# Napisz funkcję do której użytkownik będzie przekazywał tekst.
# Zwróć ten tekst odwrócony.
def odwroc_tekst(tekst:str)->str:
return[tekst[::-1]] #slicing
print(f"{odwroc_tekst("piwo")}")
# Z6
# Napisz funkcję do której użytkownik będzie przekazywał listę słów.
# Sprawdź czy któreś ze słów na liście jest palindromem. Zwróc listę wartości True / False
lista_slow=["pies", "oko", "kamilślimak"]
def czy_palindrom(lista:list[str])->list[bool]:
return [slowo == slowo[::-1] for slowo in lista]
print(czy_palindrom(lista_slow))
flet
# Stwórz aplikację tworzącą podstawowe okno Flet. Skorzystaj z gotowego szablonu.
# Dodaj do niego poznane komponenty.
# Blok 1
# Napisz aplikację w Flet-ie wyświetlającą komunikat "Witaj!"
# Dodaj do niej pole tekstowe do którego można wpisać imię. Odpowiednio je zatytułuj.
# Dodaj guzik. Po jego naciśnięciu komunikat "Witaj!" ma się zmienić tak, żeby było uwzględniał wpisane imię.
import flet
def main(page: flet.Page):
# Sekcja ogólnych ustawień okna aplikacji
def powitaj(_e):
if imie.value:
wprowadzone_imie=imie.value
komunikat.value=f"Witaj {wprowadzone_imie}!"
page.update()
page.title = "Moje okno" # np. tytulu okna
page.vertical_alignment=flet.MainAxisAlignment.START
page.horizontal_alignment=flet.CrossAxisAlignment.CENTER
# Sekcja deklaracji komponentów
# - czyli opisujemy np. jakie pola tekstowe,
# przyciski etc mają się znaleźć w oknie i jak
# mają one wyglądać.
komunikat = flet.Text("Witaj",size=24) # np.tekst
imie=flet.TextField(label="Wprowadź imie")
przycisk = flet.FilledButton("wciśnij mnie", on_click=powitaj) # np. przycisk
# Sekcja umieszczania komponentów w oknie
# - czyli decydujemy jaki będzie ich układ,
# w jakiej kolejności się będą wyświetlać,
# gdzie zostaną umieszone
page.add(
komunikat,
imie,
przycisk
)
flet.app(main)
# Blok 2
# Stwórz aplikację z polem tekstowym do wprowadzania danych
# Dodaj do niej guzik który będzie dodawał nowy wiersz do elementu ListView
# Dodaj guzik przy tych wierszach umożliwiający jego usunięcie
import flet
def main(page: flet.Page):
def dodaj(_e):
if pole_do_wprowadzenia.value:
list_view.controls.append(flet.Text(pole_do_wprowadzenia.value))
pole_do_wprowadzenia.value = ""
page.update()
def usun(_e):
if list_view.controls:
list_view.controls.pop()
page.update()
list_view = flet.ListView(expand=True)
pole_do_wprowadzenia = flet.TextField(label="Dodaj element")
przycisk = flet.ElevatedButton("Dodaj", on_click=dodaj)
przycisk2 = flet.ElevatedButton("Usuń ostatni element", on_click=usun)
page.add(pole_do_wprowadzenia, przycisk, przycisk2, list_view)
flet.app(target=main)
# Blok 3
# Napisz aplikację generującą kody QR do wpisanych przez użytkownika danych.
# Wykorzystaj funkcje z szablonu odpowiedzialną za kod QR.
# Zwróć uwagę, że funkcja ta zwraca obrazek zakodowany jako tekst (!).
# Wymaga to w komponencie Image dodania go w polu src_base64
# def utworz_qr_image(text_data: str) -> str:
# img = qrcode.make(text_data)
# buffer = BytesIO()
# img.save(buffer)
# qr_img_b64 = base64.b64encode(buffer.getvalue()).decode()
# return qr_img_b64