while True:
sentence = input("Entrer votre mot : \n")
if isinstance(sentence, str):
break
print("Erreur, le type de donnée est incorrect. Veuillez saisir un string et non ce type :", type(sentence))
a = {'vowel': {'elt': 'aeiouy',
'count': 0},
"consonant": {'elt': 'bcdfghjklmnpqrstvwxz',
'count': 0}
}
for letter in sentence:
for typeOfSound, info in a.items():
if letter.lower() in info['elt']:
print(letter.lower())
info['count'] += 1
break # si on a trouver le type ça sert à rien de tester les autres types
print('Cette phrase comporte :')
for typeOfSound, info in a.items():
print(typeOfSound, ':', info['count'])
J'ai refait le code pour te montrer quelque point :
Dans cette example ça sert à rien de tester si ce que retourne input est un str puisque c'est le cas !
input() renvoie toujours une chaîne de caractères.
Cependant dans d'autre cas (si tu veux par example un int) il faut proceder un peu différemment:
On utilise generalement la structure try/except.
try :
sentence = int(sentece)
except ValueError:
print('Veuillez entrer un entier relatif')
else :
break
apres j'ai changer la manière de tester : j'ai utiliser un dictionnaire ce qui te permet de tester de nombreuse appartenance avec une boucle au lieu de tester avec une succession de if / elif.
A noté aussi ici que ta structure fonctionne pas :
if letter in "AEIOUYaeiouy" :
print(letter," : voyelle")
counterOfVowel += 1
else :
print(letter,": consonne")
counterOfConsonant += 1
Puisque dans le cas ou tu des chiffres ou de la ponctuation ca va incrémenter ton counterOfConsonant.
Petite astuce si tu veux simplement tester si ton caractère est une lettre et que tu te fiche de la Maj tu peux simplement convertir ta chaine
en maj avec .upper() ou .lower() pour mettre en minuscule.
Voila en ésperant t'avoir aider ^^