Exercice python : numéro client à partir du prénom, nom, numéro de téléphone

Résolu/Fermé
Maximilien - Modifié le 8 déc. 2020 à 11:47
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 - 8 déc. 2020 à 11:42
Bonjour,

je dois rendre ce programme vendredi seulement je ne comprends absolument rien. Pourriez vous m'aidé. merci

carnetAdresses=[]

def nom()->str:
    """
    le nom doit être écrit en majuscules
    """
    return input("nom du client?\n")

def prénom()->str:
    """
    le prénom doit être avoir sa première lettre écrite en majuscule
    et deux lettres au minimum
    """
    return input("prénom du client?\n")

def numeroTelephone()->int:
    """
    le numéro de téléphone doit être composé de 10 chiffres
    """
    return input("numéro de téléphone du client?\n")

def numeroClient(n,p,nt)->str:
    xxxxxxxxxxxxx
    xxxxxxxxxxxxx
    xxxxxxxxxxxxx
    return yyyyyy

    """
    le numéro client doit être composé
      deux lettres du nom
    + deux lettres prénom
    + deux derniers chiffres n° téléphone
    """

def ajoutClient(carnetAdresses):
    n=nom()
    p=prénom()
    nt=numeroTelephone()
    nc=numeroClient(n,p,nt)

    return carnetAdresses.append([n, p,nt,nc])

def choixAjout():
    a= input("Voulez vous rajouter un client?")
    if a== "o":
        ajoutClient(carnetAdresses)
        choixAjout()
    return

def afficheListeClients(liste):
    for i in range (len(liste)):
        déco(liste)
        for j in (liste[i]):
            print("|\t",j,"\t|",end='')
        print()

def déco(liste):
    max=0
    taille=0
    for i in range (len(liste)):
        for j in liste[i]:
            taille+=len(j)
        if taille>max:
            max=taille
        taille=0
    print("-_"*max)


def progPrincipal():
    choixAjout()
    afficheListeClients(carnetAdresses)

progPrincipal()
A voir également:

2 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
7 déc. 2020 à 20:46
1
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
Modifié le 8 déc. 2020 à 11:49
Bonjour,

1) Visiblement tu dois écrire la fonction numeroClient qui prend en paramètre le nom (n), le prénom (p) et le numéro de téléphone (nt).

def numeroClient(n, p, nt)->str:
   ...
    """
    le numéro client doit être composé
      deux lettres du nom
    + deux lettres prénom
    + deux derniers chiffres n° téléphone
    """


Le commentaire de cette fonction t'indique clairement quelle opération est à réaliser.

2) Pour apprendre à les faire, tu peux regarder les opérations que python permet de faire sur les chaînes de caractères, en particulier :

3) Ensuite, tu peux regarder quel est le type des variables n, nt, p et leur type :

def numeroClient(n, p, nt)->str:
    print(n, type(n))
    print(p, type(p))
    print(nt, type(nt))

    return yyyyyy

    """
    le numéro client doit être composé
      deux lettres du nom
    + deux lettres prénom
    + deux derniers chiffres n° téléphone
    """


Pour finir, quelques remarques. l'exercice est un peu scolaire car une telle fonction de hashage risque fortement d'engendrer des collisions alors qu'il s'agit de personnes différentes, donc on écrirait directement :

def numeroClient(n, p, nt)->str:
    return hash(n, p, nt)

    """
    le numéro client doit être composé
      deux lettres du nom
    + deux lettres prénom
    + deux derniers chiffres n° téléphone
    """


... mais ce n'est pas ce qui est demandé dans ton exercice :) De plus, je déconseille l'utilisation d'accent dans les noms de fonction, c'est une excellente manière d'avoir des problèmes.

Et enfin, comme indiqué par yg_be :

Bonne chance
1