from bottle import route, run, template, static_file, get, request from os.path import dirname, join # Page d'accueil @route('/') def index(): return template('index.html') # Bonjour personnalisé @route('/hello/') def hello_user(name): return template('hello_user.html', name=name) # Calcul @route('/calcul///') def calcul(op, a, b): match op: case 'add': return f"resultat = {a + b}" case 'sub': return f"resultat = {a - b}" case 'mul': return f"resultat = {a * b}" case 'div': return f"resultat = {a / b}" case _: return "opérateur inconnu" # Table de multiplication @route('/tabmul/') def tabmul(nb): return template('tabmul.html', nb=nb) # Fichiers statiques @route('/static/') def server_static(filename): return static_file(filename, root=join(dirname(__file__), "static")) # Calculatrice @get('/calculatrice') def calculatrice(): a = request.query.get('a', default=None) b = request.query.get('b', default=None) op = request.query.get('op', default=None) if a is None and b is None and op is None: # Aucune valeur saisie, on affiche le formulaire vide return template("calculatrice.html") try: a = float(a) b = float(b) except ValueError: # Erreur de conversion, on affiche le formulaire avec un message d'erreur return template("calculatrice.html", erreur="Les valeurs saisies ne sont pas des nombres.", a=a, b=b, op=op) match op: case "add": resultat = a + b case "sub": resultat = a - b case "mul": resultat = a * b case "div": if b == 0: return template("calculatrice.html", erreur="Division par zéro.", a=a, b=b, op=op) resultat = a / b case _: return template("calculatrice.html", erreur="Opération inconnue.", a=a, b=b, op=op) # Affichage du résultat return template("calculatrice.html", a=a, b=b, op=op, resultat=resultat) OPTIONS = { "pmetal": { "titre": "Peinture métallisée", "prix": 500 }, "gps": { "titre": "GPS", "prix": 1000 }, "sieges": { "titre": "Sièges cuir", "prix": 1500 }, "toit": { "titre": "Toit ouvrant panoramique", "prix": 2000 }, "jantes": { "titre": "Jantes alliage", "prix": 400 } } @route('/mavoiture', method=['GET', 'POST']) def mavoiture(): if request.method == 'POST': # Récupération des options options = request.POST.getall('options') prix = 18000 for option in options: prix += OPTIONS[option]['prix'] return template("mavoiture.html", options=OPTIONS, selected=options, prix=prix) else: return template("mavoiture.html", options=OPTIONS, selected=[], prix=18000) if __name__ == '__main__': run(host='localhost', port=38083, debug=True, reloader=True)