1
votes

Comment créer un intervalle nombre / lettre en Python

Alors ... J'écris un code qui crée une table Matrix puis calcule combien (lettre majuscule, lettre minuscule, nombres, symboles)

C'est le code que j'ai essayé:

Nb_Maj=  ...
Nb_Min=  ...
Nb_chiffre=  ...
Nb_symbole=  ...

Donc, la sortie devrait être comme ça:

def Proc_Affiche(T,P,X):
    Nb_Maj = 0
    Nb_Min = 0
    Nb_chiffre = 0
    Nb_symbole = 0
    for i in range(P):
        for j in range(X):
            if T[i] in ["A","Z"]:
                Nb_Maj = Nb_Maj + 1
            elif T[i] in ["a","z"] :
                Nb_Min = Nb_Min + 1
            elif T[i] in range(1,9):
                Nb_chiffre = Nb_chiffre + 1
            else :
                Nb_symbole = Nb_symbole + 1
    print("Nb_Maj= ",Nb_Maj)
    print("Nb_Min= ",Nb_Min)
    print("Nb_chiffre= ",Nb_chiffre)
    print("Nb_symbole= ",Nb_symbole)

Le problème est du côté des intervalles comme ["A","Z"]


3 commentaires

Veuillez donner un exemple sur la façon dont T est créé, vous dites que c'est une matrice mais vous la traitez comme un tableau (liste). Cela aidera également à expliquer ce que chacun des X et P représente.


Votre code semble correct. Quel problème as-tu? C'est quoi ton problème? ;-)


Par exemple T = [a, b, r, 4, $, 7]. Nb_Maj = 0, Nb_min = 3. Nb_num = 2, Nb_Symb = 1


3 Réponses :


1
votes

Je ne suis pas sûr de comprendre ce que vous voulez à 100%, mais je pense que quelque chose comme suit conviendrait:

def Proc_Affiche(T,P,X):
   Nb_Maj = 0
   Nb_Min = 0
   Nb_chiffre = 0
   Nb_symbole = 0
   for i in range(P):
      for j in range(X):
        if "A" <= T[i][j] <= "Z":
            Nb_Maj = Nb_Maj + 1
        elif "a" <= T[i][j] <= "z" :
            Nb_Min = Nb_Min + 1
        elif 1 <= T[i][j] <= 9:
            Nb_chiffre = Nb_chiffre + 1
        else :
            Nb_symbole = Nb_symbole + 1
   print("Nb_Maj= ",Nb_Maj)
   print("Nb_Min= ",Nb_Min)
   print("Nb_chiffre= ",Nb_chiffre)
   print("Nb_symbole= ",Nb_symbole)


4 commentaires

Cela m'a donné une erreur: `` `` if "A" <= T [i] <= "Z": TypeError: '<=' not supported between instances of 'str' and 'list' `` ``


Vous essayez de comparer une ligne entière?


Si le tableau est 3 X 3, je dois donc vérifier tous les 9 cas


@koukou dans ce cas vous devez parcourir tous les éléments en utilisant T [i] [j], j'ai édité mon code, essayez-le maintenant



1
votes

Oui, voici le code complet si cela peut aider:

from math import*

def Proc_saisie():
    X = -1
    while X < 1 or X > 20 :
        X = int(input("Donner un entier entre 5 et 20 : "))
    return X


def Proc_Remplir(P,X):
    T= [[] for i in range(P)]
    for i in range(P):
        for j in range(X):
            d = input("T["+str(i)+","+str(j)+"]=")
            T[i].append(d)
    return T

def Proc_Affiche(T,P,X):
    Nb_Maj = 0
    Nb_Min = 0
    Nb_chiffre = 0
    Nb_symbole = 0
    for i in range(P):
        for j in range(X):
            if T[i] in ["A","Z"]:
                Nb_Maj = Nb_Maj + 1
            elif T[i] in ["a","z"] :
                Nb_Min = Nb_Min + 1
            elif T[i] in range(1,9):
                Nb_chiffre = Nb_chiffre + 1
            else :
                Nb_symbole = Nb_symbole + 1
    print("Nb_Maj= ",Nb_Maj)
    print("Nb_Min= ",Nb_Min)
    print("Nb_chiffre= ",Nb_chiffre)
    print("Nb_symbole= ",Nb_symbole)


#---------------------------

L = Proc_saisie()

C = Proc_saisie()
print("L =",L)
print("C =",C)
TAB = []

TAB = Proc_Remplir(L,C)


TAB = Proc_Affiche(TAB,L,C)


0 commentaires

1
votes

Les chaînes ont des fonctions que vous pouvez utiliser pour vérifier ce qu'elles contiennent

  • .isalpha() est vrai pour les lettres
  • .isnumeric() est vrai pour les nombres
  • .isalnum() est vrai pour les lettres et les chiffres
  • .isupper() est vrai pour les majuscules

Ainsi vous pourriez faire quelque chose comme

if T[i].isalpha():
    if T[i].isupper():
        Nb_Maj += 1
    else:
        Nb_Min += 1
elif T[i].isnumeric():
    Nb_chiffre += 1
else:
    Nb_symbole += 1


2 commentaires

M'a donné cette erreur: AttributeError: l'objet 'list' n'a pas d'attribut 'isalpha'


essayez de remplacer T[i] par T[i][j] , on dirait que vous avez une liste de listes