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 Réponses :
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)
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
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)
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 majusculesAinsi 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
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
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