Lekcja 12. Streamlit

Lekcja 12. Streamlit
Photo by Kara Eads / Unsplash

Formularz danych osobowych

import streamlit as st
import json

st.title("Witaj w naszej firmie. Potrzebujemy kilku Twoich danych")

with open("dane_pracownikow.json", "r") as plik:
    dane = json.load(plik)
czy_blad = False
with st.form("formularz", clear_on_submit = True):

    nazwisko = st.text_input("Imię i nazwisko")
    dzial = st.selectbox("Dział", ["Ksiegowosc", "IT", "Produkcja", "Administracja"])
    plec = st.radio("Płeć", ["kobieta", "mezczyzna", "inne basniowe stwory"])
    pesel = st.text_input("PESEL")
    adres = st.text_input("Adres")

    czy_przeslano = st.form_submit_button("Prześlij dane")

    if czy_przeslano:
        if len(pesel) != 11:
            st.write("Nieprawidlowy PESEL. Uzupełnij poprawnie dane")            
        else:
            try:
                int(pesel)
                czy_blad = False
            except:
                czy_blad = True
                st.write("Nieprawidlowy PESEL. Uzupełnij poprawnie dane")
            if not czy_blad:
                st.write("Dziękujemy za przesłanie danych")
                dane[pesel] = [nazwisko, dzial, plec, adres]
                with open("dane_pracownikow.json", "w") as plik1:
                    json.dump(dane, plik1, indent=2)

#st.write(dane)

Zgadnij liczbę

import streamlit as st
import random

class ZgadnijLiczbe:
    def __init__(self) -> None:
        self.pozostale_proby = 7
        self.proba_gracza = -1 #cokolwiek spoza zakresu
        self.wylosowana_liczba = random.randint(1,100)
        self.czy_wygrano = False
        self.czy_uruchomiona = True

    def zmniejsz_ilosc_prob(self):
        self.pozostale_proby -= 1

    def porownanie(self):
        if self.proba_gracza == self.wylosowana_liczba:
            st.write("Wygrana!")
            st.balloons()
            self.czy_wygrano = True
            self.pozostale_proby = 0
        if self.proba_gracza > self.wylosowana_liczba:
            st.write("Wybierz mniejszą liczbę")
            st.write(f"Pozostało prób: {self.pozostale_proby}")  
        if self.proba_gracza < self.wylosowana_liczba:
            st.write("Wybierz większą liczbę")
            st.write(f"Pozostało prób: {self.pozostale_proby}")

def nowa_gra():
    st.session_state.gra = ZgadnijLiczbe()

if "gra" not in st.session_state:
    nowa_gra()
       
st.title("Zgadnij liczbę!")
st.write("Gra polega na zgadnięciu liczby z zakresu 1-100")

if st.button(label="Nowa gra"):
    nowa_gra()

if st.session_state.gra.czy_uruchomiona:

    if st.session_state.gra.pozostale_proby > 0:
        st.write(f"Do zgadnięcia: {st.session_state.gra.wylosowana_liczba}")
        
        st.session_state.gra.proba_gracza = st.slider(label="Jaka to liczba?", max_value=1, min_value=100)

        if st.button(label="Prześlij"):
            st.session_state.gra.zmniejsz_ilosc_prob()
            st.session_state.gra.porownanie()                
                # if st.session_state.gra.proba_gracza == st.session_state.gra.wylosowana_liczba:
                #     st.write("Wygrana!")
                #     st.balloons()
                #     st.session_state.gra.czy_wygrano = True
                #     st.session_state.gra.pozostale_proby = 0
                # if st.session_state.gra.proba_gracza > st.session_state.gra.wylosowana_liczba:
                #     st.write("Wybierz mniejszą liczbę")
                #     st.write(f"Pozostało prób: {st.session_state.gra.pozostale_proby}")  
                # if st.session_state.gra.proba_gracza < st.session_state.gra.wylosowana_liczba:
                #     st.write("Wybierz większą liczbę")
                #     st.write(f"Pozostało prób: {st.session_state.gra.pozostale_proby}")  
            
        if st.session_state.gra.pozostale_proby == 0 and st.session_state.gra.czy_wygrano == False:
            st.write("Nie udało się zgadnąć. Brakło prób")
    else:
        st.write("Zacznij nowa gre")

#streamlit run zgadnijliczbe.py