NSI,Leçon 7, codage des caractères

Compléter les fonctions ci-dessous pour qu’elles répondent à leurs docstrings.

Exercice 1

def on_change(texte):
    '''
    convertit les majuscules en minuscules et réciproquement
    return : str
    >>>on_change("TexTeDEssai12@")
    "tEXtEdeSSAI12@"
    '''

Proposition correction 1

# proposition correction
def transformation(texte):
    nv_texte=""
    for caractere in texte:
        if ord(caractere)>=65 and ord(caractere)<=90:
            nv_caractere=chr(ord(caractere)+32)
        if ord(caractere)>=97 and ord(caractere)<=122:
                nv_caractere=chr(ord(caractere)-32)
        if not(ord(caractere)>=65 and ord(caractere)<=90) or not(ord(caractere)>=97 and ord(caractere)<=122):
            nv_caractere=caractere
        nv_texte+=nv_caractere
    return nv_texte

Proposition correction 2

def transformation(texte):
  '''
  transforme les majuscules en minuscules et réciproquement
  >>>transformation("te1AZ@za")
  "TE1az@ZA"
  '''
  nv_texte=""
  for caractere in texte:
    nv_caractere=caractere
    if ord(caractere)>=65 and ord(caractere)<=90:
      nv_caractere=chr(ord(caractere)+32)
    if ord(caractere)>=97 and ord(caractere)<=122:
      nv_caractere=chr(ord(caractere)-32)
		nv_texte+=nv_caractere
  return nv_texte

Exercice 2

def bon_mot_de_passe(texte):
    '''
    renvoie True si le Texte contient au moins 8 caractères
    et des majuscules,des minuscules, des chiffres, des caractères spéciaux.
    revoie False sinon avec un message d'erreur
    return : (bool,str)
    >>>bon_mot_de_passe("Texte")
    (False,"Votre mot de passe n'est pas assez long.")
    >>>bon_mot_de_passe("1Texte&")
    (False,"Votre mot de passe n'est pas assez long.")
    >>>bon_mot_de_passe("1TexTeTEXTE")
    (False,"Votre mot de passe ne contient pas de caractères spéciaux.")
    >>>bon_mot_de_passe("TexTe5&textE")
    (True,"Merci.")
    '''
    

    

Proposition correction exercice 2

def majuscules(texte):
    for caractere in texte:
        if ord(caractere)>=65 and ord(caractere)<=90:
            return True
    return False

def minuscules(texte):
    for caractere in texte:
        if ord(caractere)>=97 and ord(caractere)<=122:
            return True
    return False

def chiffres(texte):
    for caractere in texte:
        if ord(caractere)>=48 and ord(caractere)<=57:
            return True
    return False

def caracteres_speciaux(texte):
    for caractere in texte:
        if ord(caractere)<48 or (ord(caractere)>57 and ord(caractere)<65) or (ord(caractere)>90 and ord(caractere)<97) or (ord(caractere)>122) :
            return True
    return False

def bon_mot_de_passe(texte):
    if len(texte)<8:
       return (False,"Texte trop court")
    if majuscules(texte)==False:
        return (False,"Pas de majuscules")
    if minuscules(texte)==False:
        return (False,"Pas de minuscules")
    if chiffres(texte)==False:
        return (False,"Pas de chiffres")
    if caracteres_speciaux(texte)==False:
        return (False,"Pas de caracteres speciaux")
    return True