Revenir "plus haut" dans un code python

Fermé
Giroulas Messages postés 9 Date d'inscription jeudi 24 octobre 2013 Statut Membre Dernière intervention 4 mai 2016 - Modifié par Giroulas le 4/05/2016 à 11:28
Nxl Messages postés 1038 Date d'inscription mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 - 4 mai 2016 à 16:12
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 mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
4 mai 2016 à 11:32
Salut,
Tu peux reposter ton code avec une indentation correcte ?
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
4 mai 2016 à 14:17
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 mardi 2 février 2010 Statut Membre Dernière intervention 5 janvier 2017 133
4 mai 2016 à 16:12
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