Revenir "plus haut" dans un code python

Giroulas Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Actuellement en STI2D SIN (Système Information et Numérique) je dois réaliser un programme pour la fin de l'année (à finir d'ici 1 mois). Avec notre groupe, nous avons donc choisi de réaliser une Alarme d'Habitation connectée. Avec site, envoie de mail et connexion des capteurs à la base principale (carte RaspberryPi) par radio.

Mon problème est plutôt simple je pense, mais je n'ai pas suffisamment de connaissance en python pour le résoudre et mes recherches sur internet ont été infructueuse.

Voici mon code :

from Testmail import mail
from Testmail2 import maill

import time

import pigpio
import vw

import mysql.connector
import time

#!/usr/bin/env python
# -*- coding: utf-8 -*-

ILS = "Alerte_capteur_ILS"
IR = "Alerte_capteur_IR"
REPOS = "Repos_capteur"

RX=11

BPS=2000

pi = pigpio.pi()

rx = vw.rx(pi, RX, BPS)

-->while 1:

conn = mysql.connector.connect(host="localhost", user="root", password="raspberry", database="alarme")
cursor = conn.cursor()

cursor.execute("""SELECT * FROM etat_capteurs""")

rows = cursor.fetchall()

for row in rows:
etat_alarme = row[1]
print(etat_alarme)
      • if (etat_alarme == 1): print("Activation de l'alarme...")# time.sleep(3) print ("Chargement du programme, veuillez patienter...")# time.sleep(3) start = time.time() print("En attente de la reception des données !") print (" ") un_mail_repos = 0 temps_repos = time.time() temps_mail = time.time() while (etat_alarme == 1): while rx.ready(): reception = "".join(chr (c) for c in rx.get()) if (reception == str(REPOS)): temps_repos = time.time() elif (reception == str(ILS) and (time.time()-temps_mail) > 3): print("ILS actif") temps_repos = time.time() mail() temps_mail = time.time() elif (reception == str(IR) and (time.time()-temps_mail) > 3): print("IR actif") temps_repos = time.time() mail() temps_mail = time.time() if (un_mail_repos == 0): if (time.time()-temps_repos) > 15: maill() print ("MAIL REPOS") temps_repos = time.time() un_mail_repos = 1pi.stop()rx.cancel()conn.close()


Ce que je souhaite faire, c'est qu'une fois que mon code vois que la fonction etat_alarme est à 0 (cf les 2 **), il doit pouvoir revenir dans le premier while (cf la flèche "-->").

Donc ma question est, est-il possible de revenir plus haut dans mon code, c'est à dire au "while 1" après qu'il y soit déjà passé et ait exécuté d'autre while et for ?

Merci de votre lecture.

Cordialement.
A voir également:

3 réponses

Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   133
 
Salut,
Tu peux reposter ton code avec une indentation correcte ?
0
jisisv Messages postés 3645 Date d'inscription   Statut Modérateur Dernière intervention   934
 
Utilise l'instruction continue
Un exemple sur Python break, continue and pass Statements

La référence: More Control Flow Tools

Ce serait évidemment préférable d'utiliser du code structuré et d'éviter les sauts.

NB Indente ton code et utilise les balises adéquates. C'est imbuvable et on ne va pas refaire ton boulot.
0
Nxl Messages postés 1038 Date d'inscription   Statut Membre Dernière intervention   133
 
Et je rajouterais surtout que ta question est bizarre avoir besoins de faire des saut en assembleur c'est normal mais normalement en python, pour les choses que tu veux faire, tu n'en a pas besoins, et surtout c'est pas top.
Essayes de revoir ton paradigme avant d’implémenter ton code.
0