π
<-
Chat plein-écran
[^]

Aide projet isn

Discussions scientifiques et scolaires

Aide projet isn

Message non lude ibrahim93 » 26 Avr 2015, 20:16

J'ai un gros problème pour mon projet isn, j'ai un fichier texte qui comporte des contacts a la suite des autre sous la forme:
Code: Tout sélectionner
nom
telephone
date de naissance
mail


et je dois faire un programme qui est capable d'ajouter par exemple une 2eme adresse mail a un contact mais je n'arrive pas a le faire ; voila mon code:
Code: Tout sélectionner
#!/usr/bin/python3
#coding : utf-8

import time


def rechercheTel(fpath,s):
  tel = ""
  mail = ""
  anniv = ""
  f = open(fpath, 'r')
  i = 0
  while 1:
    line = f.readline()
    line = line.strip()
    i += 1
    if line:
      print("%d lignes lues"%i,end='\r')
      time.sleep(0.1)
      #print(len(line))
    else:
        break
    if line==s:
       o = input("telephone")
       tel = f.readline()
       doc = list()
       doc.append(tel)
       doc.append(o)
       print(doc)
       break
  f.close()
  if len(tel)!=0:
    return(tel)
  else:
    return("Inconnu")

def ecrireTel(fpath,s):
  f = open(repertoire.txt, 'a')
  f.write(o)
  f.close()


s = input("Nom recherché?")
print("Résultat de la recherche :"+rechercheTel('repertoire.txt',s))
Dernière édition par Excale le 26 Avr 2015, 23:27, édité 1 fois.
Avatar de l’utilisateur
ibrahim93
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 46.7%
 
Messages: 5
Inscription: 13 Oct 2014, 20:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: terminal s

Re: Aide projet isn

Message non lude Bisam » 26 Avr 2015, 20:26

Trois erreurs dans ton code : une grave, une moins grave et une dernière amusante mais mineure.

L'erreur grave, c'est de croire que ta variable "o" est encore définie dans la deuxième fonction... ce n'est évidemment pas le cas.
Il est logique que tu ne puisse pas modifier le fichier ainsi.

La deuxième erreur, c'est de vouloir écrire de la même façon un objet de type liste et un objet de type chaîne de caractères dans le fichier. Python y arrivera peut-être... mais des problèmes surviendront si tu essaies de rajouter une 3ème adresse, par exemple.

La dernière erreur, plus amusante, est que tu cherches à mettre une 2ème adresse mail... et que, partout, tu l'appelles "tel".
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide projet isn

Message non lude ibrahim93 » 26 Avr 2015, 20:40

la 3eme c'est parceque j'ai fait plusieur test et j'ai pas changer tel, et comment je fait pour resoudre le 2eme probleme(avec str?). et donc la variable o je dois la reecrire
Dernière édition par ibrahim93 le 26 Avr 2015, 20:47, édité 1 fois.
Avatar de l’utilisateur
ibrahim93
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 46.7%
 
Messages: 5
Inscription: 13 Oct 2014, 20:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: terminal s

Re: Aide projet isn

Message non lude Bisam » 26 Avr 2015, 21:01

Pour la première erreur, tu peux rajouter ce qu'il faut écrire en argument dans ta fonction... mais il faut quand même se placer au bon endroit dans le fichier, et ce n'est pas une mince affaire.

Pour la deuxième, je te suggère d'écrire les différents numéros de téléphones séparés par des virgules s'il y en a plusieurs. Tu pourras les récupérer dans une liste avec un line.split(",") par exemple.

Mais c'est TON projet, alors je te laisse chercher comment faire tout cela.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide projet isn

Message non lude ibrahim93 » 27 Avr 2015, 15:29

Voila j'ai changer mon code mais le probleme c'est que je n'arrive pas a ajouter des infos a un contact
Code: Tout sélectionner
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Données qui pourraient être lue d'un fichier
data = open('contact.txt', 'r')

NOM, TEL, EMAIL, DATE = (0, 1, 2, 3) # indices constants

liste = data.read().splitlines()
carnet = [] # Notre carnet de contact qui est une liste de listes
for entry in liste:
    carnet.append(entry.split(';'))
     

def recherche_telephone(carnet, num_tel):
    """ Retourne le contact avec le nom fourni """
    for entry in carnet:
        if entry[NOM] == nom_tel:
            return entry
     
    return None # C'est la valeur retournée par défaut par Python si on ne fait
                # pas de return.

def affiche_contact(contact):
    print("""\
Nom: {0}
Numéro de téléphone: {1}
Adresse email: {2}
Date de naissance: {3}""".format(contact[NOM], contact[TEL], contact[EMAIL], contact[DATE]))


nom_tel = input("Entrez un nom: ")

contact_trouve = recherche_telephone(carnet, nom_tel)
if contact_trouve is None:
    print("Aucun contact trouvé avec le nom", nom_tel)
else:
    print("Ce nom a pour information:")
    affiche_contact(contact_trouve)

data.close()
Dernière édition par ibrahim93 le 27 Avr 2015, 16:15, édité 1 fois.
Avatar de l’utilisateur
ibrahim93
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 46.7%
 
Messages: 5
Inscription: 13 Oct 2014, 20:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: terminal s

Re: Aide projet isn

Message non lude Bisam » 27 Avr 2015, 16:24

data.readline() ne lit qu'une seule ligne.
Je pense que tu voulais plutôt écrire : data.readlines().
C'est pour cette raison que tu ne trouves pas de contact quand tu fais un test.

Mais je trouve que la méthode que tu utilises pour manipuler ton fichier n'est pas adaptée.
Si ton fichier est énorme, tu vas te retrouver avec une quantité effroyable d'information en mémoire (dans la variable "carnet") pour n'en garder qu'une toute petite partie (le "contact").
Il serait plus habile d'ouvrir le fichier et de chercher dedans directement dans la fonction de recherche (et aussi dans la fonction d'écriture dans le répertoire).
Le second avantage, c'est que tu libères ainsi le fichier pour quelqu'un d'autre qui voudrait l'utiliser... ou même pour toi-même si tu veux écrire dedans par exemple.

Ceci étant, ton projet m'intéresse beaucoup parce que j'aimerais faire faire le même genre de choses à mes élèves.
Pourrais-tu joindre l'énoncé à l'un de tes posts, si tu n'y vois pas d'inconvénient ?
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide projet isn

Message non lude ibrahim93 » 27 Avr 2015, 16:46

l'enoncé:
Problème
Le but de ce projet est définir et d’implémenter un format de données destiné à gérer les contacts d’un utilisateur.
Étapes
Les étapes possibles du développement sont les suivantes :
0 ~ Récolte d’informations sur les formats existants.
1 ► Définition du format. Justification des choix effectués.
2 ► Implémentation du format.
3 ► Implémentation des méthodes de lecture et d’écriture.
4 ► Phase de tests.
5 ► Propositions d’extensions.
Description
Le format
Le but est de créer un format de données destiné à stocker les informations personnelles des contacts (nom, prénom,
date de naissance, adresse mels, etc.) de l’utilisateur. On pourra, par soucis de débogage, utiliser un format lisible par
l’utilisateur (fichier texte). Il est impératif de prévoir l’extensivité du format (c’est-à-dire la possibilité d’ajouter des
informations sur chaque contact) ainsi qu’une flexibilité du format :certains utilisateurs peuvent avoir plusieurs
adresses mel par exemple. Le format devra être parfaitement documenté.
On pourra consulter les liens suivants :
http ://www.w3schools.com/xml/default.asp
L’interrogation de la base des contacts
L’application doit permettre à l’utilisateur d’entrer les coordonnées des contacts (sans éditer le fichier texte contenant les
données) mais aussi de rechercher une ou plusieurs informations précises sur un ou plusieurs contacts. Les résultats des
requêtes devront pouvoir étre écrites dans un ficher HTML.
Limites du projet
On ne demande pas d’utiliser une base de données : un fichier texte structuré fera l’affaire. On ne demande pas de faire
une interface graphique pour interroger/remplir le fichier des contacts :une interface console doit être amplement
suffisante. Rien n’empêche, bien entendu, un groupe ayant terminé son projet avec ses limites d’aller au -delà de ces
limites.
Dernière édition par Excale le 27 Avr 2015, 17:02, édité 1 fois.
Avatar de l’utilisateur
ibrahim93
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 46.7%
 
Messages: 5
Inscription: 13 Oct 2014, 20:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: terminal s

Re: Aide projet isn

Message non lude Bisam » 27 Avr 2015, 17:14

Merci pour l'énoncé. Je voulais surtout voir la formulation des contraintes et des libertés.

Pour ton projet, il est à mon avis primordial que tu sépares la partie "Outils et fonctions" de la partie "Interaction avec l'utilisateur" mais à part ça, je n'ai pratiquement aucun reproche à faire sur ta façon de rédiger tes programmes.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5665
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide projet isn

Message non lude ibrahim93 » 29 Avr 2015, 21:30

J'ai un probleme avec mon code . on me renvoir l'erreur:
Traceback (most recent call last):
File "C:\Users\IBRAHIM\Documents\Python\test3.py", line 71, in <module>
addColumn(lines, 'email', 'pseudo')
File "C:\Users\IBRAHIM\Documents\Python\test3.py", line 34, in addColumn
index = lines[0].index(nameColumn)
IndexError: list index out of range

voici mon code:
Code: Tout sélectionner
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
 
# Données qui pourraient être lue d'un fichier
f = open('contact.txt', 'r+')
 
NOM, TEL, EMAIL, DATE = (0, 1, 2, 3) # indices constants
 
liste = f.read().splitlines()
carnet = [] # Notre carnet de contact qui est une liste de listes
for entry in liste:
    carnet.append(entry.split(';'))
     
 
def recherche_telephone(carnet, num_tel):
    """ Retourne le contact avec le nom fourni """
    for entry in carnet:
        if entry[NOM] == nom_tel:
            return entry
     
    return None # C'est la valeur retournée par défaut par Python si on ne fait
                # pas de return.
 
def affiche_contact(contact):
    print("""\
Nom: {0}
Numéro de téléphone: {1}
Adresse email: {2}
Date de naissance: {3}""".format(contact[NOM], contact[TEL], contact[EMAIL], contact[DATE]))
nom_tel = input("Entrez un nom: ")
pseudo = input("pseudo")

def addColumn(lines, nameColumn, newColumn):
    index = lines[0].index(nameColumn)
    lines[0].insert(index, newColumn)
    for line in lines[1:]:
        line.insert(index, repr(pseudo))

 
test = [
        ['Nom', 'Tel', 'email', 'date'],
        ['Bob', '0606060607', 'bob@contact.fr', '02/05/1997'],
       ]
 
addColumn(test, 'email', 'pseudo')
#print(test)


 
 


 
contact_trouve = recherche_telephone(carnet, nom_tel)
if contact_trouve is None:
    print("Aucun contact trouvé avec le nom", nom_tel)
else:
    print("Ce nom a pour information:")
    affiche_contact(contact_trouve)





 
lines = []
for line in f:
    LISTES = line.split(';')
    lines.append(LISTES)
 
addColumn(lines, 'email', 'pseudo')
 
for line in lines:
    phrase = ';'.join(line)
    f.write(phrase + '\n')
 
f.close()
Avatar de l’utilisateur
ibrahim93
Niveau 2: MI2 (Membre Initié)
Niveau 2: MI2 (Membre Initié)
Prochain niv.: 46.7%
 
Messages: 5
Inscription: 13 Oct 2014, 20:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: terminal s


Retourner vers Maths, physique, informatique et autre...

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 65 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1502 utilisateurs:
>1446 invités
>51 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)