import gradio as gr import pandas as pd # Define questions and answers questions = [ ("What is blockchain primarily described as in the image?", ["A centralized database", "A distributed ledger", "A cloud storage system", "A social media platform"], 1), ("What does the “immutable records” feature of blockchain mean?", ["Records can be changed easily", "Records cannot be altered once written", "Records are stored on a single server", "Records are deleted after a certain time"], 1), ("What type of system does blockchain use to operate?", ["Peer-to-peer system", "Client-server system", "Third-party system", "Cloud-based system"], 0), ("What does “trustless trust” in blockchain mean?", ["Trust is based on third parties", "Trust is built through math and code", "Trust is not needed at all", "Trust is only between two parties"], 1), ("According to the image, what happens in a trustless trust system?", ["Everyone has a copy, so there’s no single failure point", "Only one person has a copy of the data", "Third parties control the system", "The system fails if one person loses their copy"], 0), ("Which of the following is a security feature of blockchain mentioned in the image?", ["Centralized control", "Cryptographic hash", "Password protection", "Manual verification"], 1), ("What is one of the security features that ensures blockchain operates without a central authority?", ["Decentralization", "Centralization", "Password encryption", "Cloud storage"], 0), ("Which of the following is an application of blockchain shown in the image?", ["Social media posting", "Bitcoin", "Email services", "Video streaming"], 1), ("What is another application of blockchain mentioned in the image besides Bitcoin?", ["Cloud computing", "NFTs (Non-Fungible Tokens)", "Online gaming", "Web browsing"], 1), ("What mechanism helps blockchain nodes agree on the state of the ledger?", ["Consensus mechanisms", "Centralized voting", "Manual agreement", "Random selection"], 0) ] # Initialize the DataFrame for storing quiz results columns = ['Name', 'Score'] # Load the existing Excel file if it exists, or create a new one if not try: df = pd.read_excel('quiz_scores.xlsx') except FileNotFoundError: df = pd.DataFrame(columns=columns) # Gradio interface function def grade_quiz(name, *answers): score = 0 feedback = "" for i, answer in enumerate(answers): correct = questions[i][2] if answer == questions[i][1][correct]: score += 1 feedback += f"Q{i+1}: Correct\n" else: feedback += f"Q{i+1}: Incorrect (Correct: {questions[i][1][correct]})\n" # Save the user's result to the Excel file new_data = pd.DataFrame({'Name': [name], 'Score': [score]}) global df df = pd.concat([df, new_data], ignore_index=True) df.drop_duplicates(subset='Name', keep='last', inplace=True) df.to_excel('quiz_scores.xlsx', index=False) # Save to Excel return f"Hello {name}, you scored {score} out of 10.\n\n{feedback}" # Create input components name_input = gr.Textbox(label="Enter your name:") inputs = [name_input] + [gr.Radio(q[1], label=q[0]) for q in questions] # Create Gradio interface quiz_interface = gr.Interface( fn=grade_quiz, inputs=inputs, outputs="text", title="Blockchain Quiz", theme="default" ) # Launch the interface quiz_interface.launch()