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() | |