epochs-demos's picture
Upload app.py with huggingface_hub
4052fa4 verified
raw
history blame contribute delete
No virus
3.46 kB
import streamlit as st
from streamlit_ace import st_ace
import pandas as pd
button_style = st.markdown('''
<style>
div.stButton > button:first-child {{
background-color: #3A7EF1;
}}
</style>''', unsafe_allow_html=True)
left_co, cent_co,last_co = st.columns(3)
with cent_co:
st.image("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTzYyVPVc8EX7_N2QOh9D86t54SS7ucBDcOU_Tn52LwBi8BQTwcdeCVKcyjSKBGExjB4g&usqp=CAU")
st.markdown("<h5 style='color: #707379; text-align: center;'>School of AI by 1001epochs</h5>", unsafe_allow_html=True)
st.markdown('')
def check_solution(code, func_params):
try:
exec(code)
globals_dict = {}
exec(code, globals_dict)
function_to_test = globals_dict.get(func_params.get('function_name'))
if not callable(function_to_test):
raise ValueError(f"{{func_params.get('function_name')}} is not a callable function.")
# Run the tests and populate the results table
expected_result_list = []
actual_result_list = []
test_result = []
for input_params, expected_output in func_params["test_cases"]:
expected_result_list.append(expected_output)
result = function_to_test(*input_params)
actual_result_list.append(result)
test_result.append("Passed" if expected_result_list == actual_result_list else "Failed")
result_df = pd.DataFrame({
"Expected": expected_result_list,
"Run": actual_result_list,
"Result": test_result
}, index=None)
st.markdown(result_df.style.hide(axis="index").to_html(), unsafe_allow_html=True)
st.markdown("<br>", unsafe_allow_html=True)
# Check if all tests passed
if expected_result_list == actual_result_list:
st.success("All tests passed!")
else:
st.error("Some tests failed.")
return True
except SyntaxError as e:
st.error(f"Error: {{e}}")
def main():
with st.form('app'):
st.markdown("<h2 style='color: #707379;'>Coding Challenge - Code Practice</h2>", unsafe_allow_html=True)
# Description of the challenge
st.write("Create a function sum that meets the following criteria:")
st.write('''Sum of two values''')
# Display sample example for all test cases
sample_examples = "Sample"
st.code(sample_examples, language="python")
show_solution_button = st.form_submit_button("Show Solution")
if show_solution_button:
solution = '''def sum(a,b):
return a+b '''
if solution:
st.code('''def sum(a,b):
return a+b ''', language="python")
else:
st.error('No Solution Provided!')
# Code input area
code = st_ace(value='''def sum(a,b):''', language="python", key="my_editor", theme='clouds', height=200)
# Check solution button
if st.form_submit_button("Check Solution"):
if code:
# Check the solution
check_solution(code, {
"function_name": "sum",
"test_cases": [((1, 2), 3), ((1, 0), 1), ((-1, -2), -3)]
})
else:
st.error("Please provide a solution.")
st.markdown("Copyright© by 1001epochs. All rights reserved.")
if __name__ == "__main__":
main()