from flask import Flask, render_template, request, redirect, url_for, session import json import random import os app = Flask(__name__) app.secret_key = 'supersecretkey' @app.route('/') def index(): return render_template('index.html') @app.route('/start', methods=['POST']) def start(): session['name'] = request.form['name'] session['questions'] = load_questions(request.files['questions']) session['current_question'] = 0 session['answers'] = [] return redirect(url_for('quiz')) @app.route('/quiz', methods=['GET', 'POST']) def quiz(): if request.method == 'POST': session['answers'].append(request.form.get('answer')) session['current_question'] += 1 if session['current_question'] >= len(session['questions']): return redirect(url_for('results')) return redirect(url_for('quiz')) question = session['questions'][session['current_question']] return render_template('quiz.html', question=question) @app.route('/results') def results(): questions = session['questions'] answers = session['answers'] score = calculate_score(questions, answers) return render_template('results.html', score=score, questions=questions, answers=answers) def load_questions(file): questions = json.load(file) random.shuffle(questions) return questions def calculate_score(questions, answers): correct_count = 0 for i, question in enumerate(questions): if answers[i] in question['correct']: correct_count += 1 return (correct_count / len(questions)) * 100 if __name__ == '__main__': app.run(debug=True)