je travaille actuellement sur un programme de protection d'habitation via python et une caméra IP.
Je travaille maintenant sur l'installateur cependant j'ai l'erreur suivant :
File "SysHome V2-Installateur.py", line 243 os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py") ^ IndentationError: unindent does not match any outer indentation level
Cependant j'ai tout vérifier mais je n'ai rien trouver , je vous laisse donc le code si quelqu'un à la bonté de m'aider
#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
import os # Module pour controler système d'exploitation
from tkinter import * # Module pour création des fenetres
import smtplib # Module pour envoi de mail
from datetime import datetime # Module de la gestion du temps
import socket # Module réseau
from playsound import playsound # Module pour lecture des voix SysHome
from gtts import gTTS # Module pour création de voix off
#Récuperation de date installation pour le mail
temps_mail = str(datetime.now())
temps_mail = str(temps_mail)
#Création des fonction de la fenetre principale
def install_SysHome():
#Création des dossiers
if os.path.isdir("/Systorm-OS"):
print("Dossier /Systorm-OS : Ok")
else:
os.system("sudo mkdir /Systorm-OS")
if os.path.isdir("/Systorm-OS/SysHome-Protect"):
print("Dossier /Systorm-OS/SysHome-Protect : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System"):
print("Dossier /Systorm-OS/SysHome-Protect/System : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System")
if os.path.isdir("/Systorm-OS/SysHome-Protect/TMP"):
print("Dossier /Systorm-OS/SysHome-Protect/TMP : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/TMP")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Script"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Script : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Script")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Script/Network"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Script/Network : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Script/Network")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Script/Calibrage"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Script/Calibrage : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Script/Calibrage")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Script/Camera"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Script/Camera : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Script/Camera")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Script/Mail"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Script/Mail : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Script/Mail")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Log"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Log : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Log")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Setup"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Setup : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Setup")
if os.path.isdir("/Systorm-OS/SysHome-Protect/System/Setup/Devices"):
print("Dossier /Systorm-OS/SysHome-Protect/System/Setup/Devices : Ok")
else:
os.system("sudo mkdir /Systorm-OS/SysHome-Protect/System/Setup/Devices")
#Création du fichier d'envoi de mail
if os.path.isfile("/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"):
print("Script d'envoi de mail installé")
else:
os.system("sudo echo '#!/usr/bin/env python3' >/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# -*- coding: UTF-8 -*-'>>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '##################################################################################' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# | SYSHOME Protect | #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# Envoi de Mail #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# By Systorm-OS ( Systorm-OS Corporation ) #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '# @ 2022 Copyright v:2.1 #' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '##################################################################################' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo '#Importation des modules pour SysHome' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 'import os ' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 'import smtplib # Module pour envoi de mail' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 'from datetime import datetime # Module de la gestion du temps ' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 'temps_mail=str(datetime.now())' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 'temps_mail = str(temps_mail)' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
cmd = 'sudo echo '+ "'"+'SMTP_SERVER = "smtp.gmail.com"'+"'"+">>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
os.system("sudo echo 'SMTP_PORT = 587' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
cmd = 'sudo echo ' + "'" + "SMTP_USERNAME = " + '"syshome.alerte@gmail.com"' + "'"'>>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py'
os.system(cmd)
cmd = 'sudo echo ' + "'" + "SMTP_PASSWORD = " + '"' + "#" + '"' + "'" + ">>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
cmd = 'sudo echo ' + "'" + "EMAIL_FROM = " + '"' + "SysHome Security " + '"' + "'" + ">>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
# Récuperation de l'adresse mail et nom prenom pour l'écrire dans /Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py
recuperation_adresse_mail = True
while recuperation_adresse_mail:
nom = input("Saisir votre nom : >")
prenom = input("Sasir votre prénom : >")
recup_mail = input("Saisir votre adresse Mail :> ")
verif_recup_mail = input("Re-saisir votre adresse mail :> ")
if recup_mail == verif_recup_mail:
recup_mail = str(recup_mail)
verif_ok_verif = input("Lors d'une alerte , vous serai alerter via l'adresse mail ( " + recup_mail +" ) est-ce correct : [Y/N] >")
if verif_ok_verif == 'Y' or verif_ok_verif == 'y' or verif_ok_verif == 'o' or verif_ok_verif =="O" :
cmd = 'sudo echo '+ "'"+ 'EMAIL_TO = ' + '"'+ recup_mail + '"' + "'" + " >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py" # Génération de la commande
os.system(cmd) #Ecriture dans le fichier
recuperation_adresse_mail = False
else:
os.system("clear")
print("Une erreur s'est produite !")
else:
os.system("clear")
print("les 2 adresses mail ne correspondent pas !")
cmd = 'sudo echo ' + "'" + 'EMAIL_SUBJECT = "Il y a une intrusion chez vous ! Consulter vos cameras !"' + "'" + ">>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
cmd = 'sudo echo ' + "'" + "EMAIL_MESSAGE = " + '"' + "A" + '"' + " + " + "temps_mail" + " + " + '"' + ", une alarme a etais activer , une verification est necessaire ! " + '"' + "'" + ">>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
os.system("sudo echo 's = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 's.starttls()' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 's.login(SMTP_USERNAME, SMTP_PASSWORD)' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
cmd = 'sudo echo ' + '"' + "message = " + "'Subject: " + "{" + "}" + r"\n" + r"\n" + "{" + "}" + "'.format(EMAIL_SUBJECT, EMAIL_MESSAGE)" + '"' + " >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py"
os.system(cmd)
os.system("sudo echo 's.sendmail(EMAIL_FROM, EMAIL_TO, message)' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
os.system("sudo echo 's.quit()' >>/Systorm-OS/SysHome-Protect/System/Script/Mail/Mail.py")
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SMTP_USERNAME = "syshome.alerte@gmail.com"
SMTP_PASSWORD = "#"
EMAIL_FROM = "Syshome-Security Systorm-OS"
EMAIL_TO = recup_mail
ident = prenom + " " + nom
ident = str(ident)
EMAIL_SUBJECT = "Bienvenue sur Systorm-OS et SysHome-Protect !"
EMAIL_MESSAGE = "Salut " + ident +",\nMerci d'avoir installer SysHome-Protect !\n \nNous vous confirmont que votre inscription a Systorm-OS et a SysHome-Protect est bien valider .\n \nDate d'installation :" + temps_mail
#Conversion en str du message
EMAIL_MESSAGE = str(EMAIL_MESSAGE)
EMAIL_MESSAGE.encode("UTF-8")
s = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
s.starttls()
s.login(SMTP_USERNAME, SMTP_PASSWORD)
message = 'Subject: {}\n\n{}'.format(EMAIL_SUBJECT, EMAIL_MESSAGE)
s.sendmail(EMAIL_FROM, EMAIL_TO, message)
s.quit()
#Création du Script scanneur réseau
os.system("sudo echo '#!/usr/bin/env python3' >/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# -*- coding: UTF-8 -*-' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '##################################################################################' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# | SYSHOME Protect | #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# Scan Réseau #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# By Systorm-OS ( Systorm-OS Corporation ) #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '# @ 2022 Copyright v:2.1 #' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo '##################################################################################' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo 'from ping3 import ping' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo 'import os' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo 'def myping(host):' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo ' resp = ping(host)' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo ' if resp == False:' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
cmd = "sudo echo '" + ' os.system(r"echo > TMP/no-device.txt")' + "'" + ' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py'
os.system(cmd)
cmd = "sudo echo '" + ' os.system(r"rm -rf TMP/device-detect.txt"' + ">>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py"
os.system(cmd)
os.system("sudo echo ' else:' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
cmd = "sudo echo '" + ' os.system(r"echo > TMP/device-detect.txt")'+ "'" + " >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py"
os.system(cmd)
cmd = "sudo echo '" + ' os.system(r"rm -rf TMP/no-device.txt")'+ "'" + ">>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py"
os.system(cmd)
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
os.system("sudo echo 'while True:' >>/Systorm-OS/SysHome-Protect/System/Script/Network/Scan_network.py")
time.sleep(2)
os.system("clear")
#Scan réseau pour choisir device
print("Nous allons scanner votre réseau à la recherche d'un périphérique considéré comme de confiance ...")
for ping in range(1,254):
address = "192.168.1." + str(ping)
socket.setdefaulttimeout(1)
try:
hostname, alias, addresslist = socket.gethostbyaddr(address)
except socket.herror:
hostname = None
alias = None
addresslist = address
if hostname == None:
pass
else:
print(addresslist, '=>', hostname)
print("Veillez saisir l'adresse IP du périphérique de confiance que vous souhaiter enregistré ( VOTRE IP DOIS ETRE STATIQUE !)")
recuperation_adresse_ip_confiance = True
while recuperation_adresse_ip_confiance:
Ip_confiance = input("Saisir l'IP en IPV4 . Exemple :(192.168.1.1) : > ")
Ip_confiance = str(Ip_confiance)
verif_Ip_confiance = input("Veillez Re-saisir l'adresse Ip de confiance : >")
verif_Ip_confiance = str(verif_Ip_confiance)
if Ip_confiance == verif_Ip_confiance:
print("Nous avons bien enregistré le périphérique de confiance sous l'IP : " + Ip_confiance + ".\nVOTRE IP DOIS ETRE STATIQUE !")
print("Un Mail de confirmation va vous etre envoyer !")
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587
SMTP_USERNAME = "syshome.alerte@gmail.com"
SMTP_PASSWORD = "#"
EMAIL_FROM = "Syshome-Security Systorm-OS"
EMAIL_TO = recup_mail
ident = prenom + " " + nom
ident = str(ident)
EMAIL_SUBJECT = "SysHome : La configuration de l'IP de confiance est confirmer !"
temps_mail = str(datetime.now())
temps_mail = str(temps_mail)
EMAIL_MESSAGE = "Bonjour " + ident +",\nVotre SysHome Protect est maintenant appareiller à L'IP ( "+ Ip_confiance+" ) de votre reseau local .\n \nNous vous remercions de votre confiance et restons disponible en cas de panne de SysHome-Protect\n \nAdresse IP de confiance configurer a : :" + temps_mail + "\nCordialement\nSystorm-OS\nProjet SysHome-Protect"
#Conversion en str du message
EMAIL_MESSAGE = str(EMAIL_MESSAGE)
EMAIL_MESSAGE.encode("UTF-8")
s = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
s.starttls()
s.login(SMTP_USERNAME, SMTP_PASSWORD)
message = 'Subject: {}\n\n{}'.format(EMAIL_SUBJECT, EMAIL_MESSAGE)
s.sendmail(EMAIL_FROM, EMAIL_TO, message)
s.quit()
else:
pass
#Génération de la fenetre principale ( MENU )
installer_fenetre_principale = Tk()
installer_fenetre_principale.geometry("600x400") #Config taille fenetre
#Création du contenu de la page
txt_bienvenue = Label(installer_fenetre_principale, text="Bienvenue sur SysHome Protect") # Texte de bienvenue
txt_bienvenue.pack()
btn_install = Button(installer_fenetre_principale, text='Installer SysHome Protect',command=install_SysHome)
btn_install.pack()
btn_quit = Button(installer_fenetre_principale, text='Quitter', command=installer_fenetre_principale.destroy) #Boutton quitter
btn_quit.pack()
installer_fenetre_principale.mainloop()
exit()
Si jamais vous voulez participer au projet n'hésite pas à te manifester
pour le message, il est clair, il voit un problème d'indentation après la ligne 243; il indique que ce n'est pas le même type d'indentation qu'il a trouvé après, donc refaire l'indentation de la ligne 244 identique à celle de la 243 (pour commencer)
Si tu commençais déjà par découper ton code en routine ça t'aiderait.
Désoler mais que veux tu dire par découper ton code, je ne comprend pas ?
J'utilise du python car j'ai besoin de ses modules ( socket , tkinter , face_recognition, numpy , cv2, queue, threading, time, requests, re , io et bien d'autre vont bientôt s'ajouter ) et je préfère .
je n'ai poster en ligne qu'une infime partie du projet donc je comprend que tu n'approuve pas python dans ce cas .
En quelque mot le projet concerne un logiciel de surveillance de domicile avec de la reconnaissance Faciale et d'autre fonctionnalité en cour de développement.
Cependant j’apprécie qu'un œil neuf regarde le projet car je suis seul à coder et je connais pas tout car je ne suis pas Guido Van Rossum
umfred a écrit:
pour le message, il est clair, il voit un problème d'indentation après la ligne 243; il indique que ce n'est pas le même type d'indentation qu'il a trouvé après, donc refaire l'indentation de la ligne 244 identique à celle de la 243 (pour commencer)
avant tout je tiens à te remercier pour ta réponse et je pense avoir trouver le problème .
Pour écrire mes programmes , j’utilise Sublime Text et j'ai vue que lorsque je surligne l'espace entre la marge et le code sur certaine ligne avais que deux trait séparer par un point et d'autre avais plusieurs points .
j'ai donc ré-édité mon script et depuis il refonctionne .
Après je ne sais pas si c'est sa mais maintenant il refonctionne
Si jamais vous souhaiter participer au projet, hésite pas à te manifesté
PS:@Nephthys , Pour moi peux m'importe la tête du texte du code , ce qui compte c'est que le résultat finale fonctionne .
Sauf si hard-codé peux poser des problèmes techniques que je ne connais pas ?
déjà que des projets alimentés à coup de millions de dollars génèrent trop de faux positifs, je doute que toi seul réussisses là où les mastodontes échouent encore. En tout cas, si tu réussis, tu pourras t'autoproclamer Big Brother.
@Nephtys a été gentil et trop à mon sens, car tu n'as pas l'air d'avoir trop compris ce qu'il voulait exprimer. Dire que l'essentiel est que ça fonctionne ne suffit pas forcément... ça suffit sur l'instant, mais par la suite, ça peut être très problématique !
Certes, tes besoins justifient Python, mais cette partie de code justifierait de travailler avec un fichier bash en partie (car tu utilises Tkinter). Rien n'empêche de travailler avec plusieurs langages. Rien que déjà virer tes os.system par subprocess.call ça sera déjà mieux, voir Popen pour contrôler les erreurs en retour. Niveau OS, Python peut tout faire. Pour sudo, chose à pas faire !!! Heureusement une solution plus sécurisée existe.
Ensuite, tu sais quand on code, on peut s'éviter beaucoup de lignes en utilisant les boucles, des fonctions, voir mieux, modéliser en objets pour organiser de manière "logique". Ça demande une petite réflexion avant de développer, mais l'avantage c'est qu'on sait ce qu'on fait avant et pas pendant le développement.
Et puis la maintenabilité... Une fois le code développé et fonctionnel, si par la suite (6 mois voir 1 an après) tu souhaites modifier ton code pour y ajouter des fonctionnalités ou pour corriger une erreur, je peux quasiment faire le pari que tu ne sauras pas trouver à quel endroit du code tu devras là faire.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Création d'un programme python ( HELP )
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)