Spaces:
Sleeping
Sleeping
| 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) | |