Python - zajęcia 9

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