Hello guys
So i have this code
import streamlit as st
from streamlit.runtime.state import session_state
from backend import *
if 'generate' not in st.session_state:
st.session_state.generate = False
if 'submit_quiz' not in st.session_state:
st.session_state.submit_quiz = False
def callback():
st.session_state.generate = True
def stop():
st.session_state.submit_quiz = True
def validate_input(user_input, num_of_questions):
valid = True
if user_input == "":
st.error("You entered an invalid input. Try again.")
valid = False
if num_of_questions <= 0 or not num_of_questions.is_integer():
st.error("You entered an invalid number of questions. Try again.")
valid = False
return valid
def create_quiz(generated_questions):
generated_questions = generated_questions.strip().split("\n")
# st.write(f"len {generated_questions}")
i = 0
answers = []
while i < len(generated_questions):
if generated_questions[i + 1] == '':
answer = st.radio(generated_questions[i],
[generated_questions[i + 2], generated_questions[i + 3], generated_questions[i + 4],
generated_questions[i + 5]]
)
answers.append(answer)
i = i + 7
else:
answer = st.radio(generated_questions[i],
[generated_questions[i + 1], generated_questions[i + 2], generated_questions[i + 3],
generated_questions[i + 4]]
)
answers.append(answer)
i = i + 6
return answers
def main():
user_input = st.text_input("What is your interest?")
num_of_questions = st.number_input("How many Questions you'd like to be asked?",
placeholder="Enter a number...",
value=None)
generate_quiz = st.button("Take Quiz", on_click=callback)
passed = False
if generate_quiz:
"state generate ", st.session_state
if validate_input(user_input, num_of_questions):
passed = True
if passed:
"state passed ", st.session_state
with st.form("Quiz"):
questions = generate_questions(user_input, num_of_questions)
answers = create_quiz(questions)
st.session_state.generate = False
quiz_submitted = st.form_submit_button("Submit Quiz",on_click=stop)
"state test ",st.session_state
if quiz_submitted:
"state submit ",st.session_state
correct_answers = evaluate_answers(questions, answers)
st.write("Quiz Results:")
for i in range(len(questions)):
st.write(f"Question {i + 1}: {questions[i]}")
st.write(f"Your Answer: {answers[i]}")
st.write(f"Correct Answer: {correct_answers[i]}")
st.write(f"Result: {'Correct' if correct_answers[i] == answers[i] else 'Incorrect'}")
st.write("---")
if __name__ == "__main__":
main()
now whenever i click on the submit quiz button the app reset, did some debugging turned out the if statement for the submit quiz is unreachable i tried everything but nothing is working