import streamlit as st from streamlit_ace import st_ace import pandas as pd button_style = st.markdown(''' ''', 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("
School of AI by 1001epochs
", unsafe_allow_html=True) st.markdown('') def check_solution(instructor_code, student_code, function_name, test_cases): try: globals_dict = {} exec(instructor_code, globals_dict) instructor_function = globals_dict.get(function_name) if not callable(instructor_function): raise ValueError(f"{instructor_function} is not a callable function.") # Execute student's code globals_dict = {} exec(student_code, globals_dict) student_function = globals_dict.get(function_name) if not callable(student_function): raise ValueError(f"{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("
", 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("

Coding Challenge - Code Practice

", unsafe_allow_html=True) # Description of the challenge st.write("Create a function sum that meets the following criteria:") st.write('''sass''') # Display sample example for all test cases sample_examples = "\n".join([f"sum({params}) -> {expected_output}" for params, expected_output in [(1, 2), (2, 3), (3, 4)]]) 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), (2, 3), (3, 4)] }) else: st.error("Please provide a solution.") st.markdown("Copyright© by 1001epochs. All rights reserved.") if __name__ == "__main__": main()