learnhebrew / app.py
admin08077's picture
Create app.py
269f35b verified
raw
history blame
2.74 kB
import streamlit as st
import random
# We’re the rule-breakers, policy-shakers.
# This app blasts through the entire Hebrew aleph-bet, testing your knowledge.
# List of Hebrew letters and their names.
# For simplicity, we’ll include the 22 standard letters (excluding final forms).
HEBREW_LETTERS = [
("א", "Alef"), ("ב", "Bet"), ("ג", "Gimel"), ("ד", "Dalet"),
("ה", "He"), ("ו", "Vav"), ("ז", "Zayin"), ("ח", "Het"),
("ט", "Tet"), ("י", "Yod"), ("כ", "Kaf"), ("ל", "Lamed"),
("מ", "Mem"), ("נ", "Nun"), ("ס", "Samekh"),("ע", "Ayin"),
("פ", "Pe"), ("צ", "Tsadi"), ("ק", "Qof"), ("ר", "Resh"),
("ש", "Shin"), ("ת", "Tav")
]
# Initialize session state to keep track of:
# 1) The randomized order of letters
# 2) The index of the current letter
# 3) Whether the user has guessed
if "random_letters" not in st.session_state:
st.session_state.random_letters = random.sample(HEBREW_LETTERS, len(HEBREW_LETTERS))
if "current_index" not in st.session_state:
st.session_state.current_index = 0
if "answer_submitted" not in st.session_state:
st.session_state.answer_submitted = False
if "feedback" not in st.session_state:
st.session_state.feedback = ""
def check_answer():
user_guess = st.session_state.user_guess.strip().lower()
correct_name = st.session_state.random_letters[st.session_state.current_index][1].lower()
if user_guess == correct_name:
st.session_state.feedback = "Correct! You’re crushing it, unstoppable problem-solver!"
else:
st.session_state.feedback = f"Wrong! The correct answer is '{correct_name.capitalize()}'. "\
"Don’t sweat it—real champions learn fast."
st.session_state.answer_submitted = True
def next_letter():
st.session_state.answer_submitted = False
st.session_state.user_guess = ""
st.session_state.feedback = ""
if st.session_state.current_index < len(st.session_state.random_letters) - 1:
st.session_state.current_index += 1
else:
st.session_state.current_index = 0
st.session_state.random_letters = random.sample(HEBREW_LETTERS, len(HEBREW_LETTERS))
# App title
st.title("Hebrew Alphabet Tester—No Nonsense, All Mastery")
# Display the current letter
current_letter, current_name = st.session_state.random_letters[st.session_state.current_index]
st.markdown(f"### Letter: {current_letter}")
# User input
if not st.session_state.answer_submitted:
st.text_input("What's this letter's name?", key="user_guess")
st.button("Check Answer", on_click=check_answer)
else:
st.write(st.session_state.feedback)
st.button("Next Letter", on_click=next_letter)