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 test_case in test_cases: expected_result = instructor_function(*test_case) actual_result = student_function(*test_case) expected_result_list.append(expected_result) actual_result_list.append(actual_result) test_result.append("Passed" if expected_result == actual_result 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 all(expected == actual for expected, actual in zip(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''') func = 'sum' def execute_instructor_code(params): # Execute the instructor's code to get the result globals_dict = {} exec('''def sum(a,b): return a+b''', globals_dict) instructor_function = globals_dict.get(func) if not callable(instructor_function): raise ValueError(f"{func} is not a callable function.") return instructor_function(*params) # Generate sample examples dynamically by executing the instructor's code test_cases = [(1, 2), (2, 3), (3, 4)] sample_examples = "\n".join([f"{func}({', '.join(map(str, params))}) -> {execute_instructor_code(params)}" for params in test_cases]) 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('''def sum(a,b): return a+b''', code, '''sum''', '''[(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()