-
Notifications
You must be signed in to change notification settings - Fork 1
/
app.py
57 lines (41 loc) · 1.72 KB
/
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#app.py
#Author: Natalia Kuzminykh
#Importing libraries
import random
import streamlit as st
#Importing functions from other files
from config import set_page_config, footer
from utils import load_task, load_answer, start_over, start_exam, display_exam, next_level, show_answer, finish_exam, select_level, levels
# Set the page configuration
set_page_config()
#Initializing the session state
def init_session_state():
if 'level' not in st.session_state:
st.session_state['level'] = 0
st.session_state['tasks'] = []
##############################################################################################################
#Main code
#Creating the app interface
st.markdown('<h2 style="text-align: center;">🚀 School 42 Exam Simulator: Rank 02</h2>', unsafe_allow_html=True)
st.markdown('<h4 style="text-align: center;font-weight: normal">This exam has 4 questions in total. A random question is picked from each level below.</h4>', unsafe_allow_html=True)
#Initializing the session state
init_session_state()
#Creating a progress bar
progress_bar = st.progress(min(st.session_state['level'] / 4, 1))
select_level()
if st.session_state['level'] == 0:
start_exam(levels[1], progress_bar)
display_exam()
if 0 < st.session_state['level'] < 4:
next_level(levels[st.session_state['level'] + 1], progress_bar)
show_answer()
elif st.session_state['level'] == 4:
finish_exam(progress_bar)
show_answer()
#We did it! The exam is over!
if st.session_state['level'] == 5:
st.markdown('<h2 style="text-align: center;"><br> Congratulations! <br> You successfully passed the exam!</h2>', unsafe_allow_html=True)
st.balloons() # Celebrate with balloons.
start_over()
# Display the footer
footer()