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