Bonjour,
Je voudrais savoir comment peut -on, avec des expressions régulières, effectuer la tâche suivante:
L’utilisateur Tape au clavier : la somme de 25 et 45 est :
Et le programme lui renvoie 25 + 45 = 70
Je vous remercie d’avance !
Bonjour,
Je voudrais savoir comment peut -on, avec des expressions régulières, effectuer la tâche suivante:
L’utilisateur Tape au clavier : la somme de 25 et 45 est :
Et le programme lui renvoie 25 + 45 = 70
Je vous remercie d’avance !
Bonjour
Nouvelle question implique nouveau topic.
Il y a plusieurs façons de voir les choses. Tu peux par exemple ne considérer que le 2° mot ("somme") et récupérer les valeurs dans les 4° et 6° mots et en fonction de ce 2° mot faire le calcul adéquat.
Ou bien carrément implémenter un arbre grammatical pour analyser des phrases plus complexes (ex "la somme des nombres de 1 à 100 est"). Mais là ça se rapproche du domaine de l'écriture de compilateurs (c'est en effet ce que font les compilateurs que d'analyser des instructions analogues).
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
je te remercie pour ta réponse.
J'ai pu faire un truc, qui fonctionne, dans certains cas .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 a = b = 0 phrase = input("donner la tâche à faire \n") if re.search("(somme){1}\s(de){1}\s\d{1,}\s(et){1}\s\d{1,}", phrase) is not None: liste = re.findall("\d{1,}\.?\d{0,}",phrase) for i in range(len(liste)): a = liste[i] a = float(a) b += a print ("Cette somme est égale à: \n", b) else: print("Je ne peux rien faire")
Oui mais tu figes la phrase attendue dans un canevas bien rigide. Si par exemple l'utilisateur tape "Somme" au lieu de "somme" ça ne fonctionne plus. Toutefois ce genre de petit détail se règle en cherchant dans la phrase transformée en minuscules => if re.search("(somme){1}\s(de){1}\s\d{1,}\s(et){1}\s\d{1,}", phrase.lower()) is not None: (et me semble aussi que le "search" contient une option pour demander de ne pas tenir compte de la casse).
Ou alors plus basiquement (action, n1, n2)=(phrase[1], float(phrase[3]), float(phrase[5])) (encapsulé dans un petit "try" pour pouvoir détecter les erreurs si les mots ciblés ne sont par exemple pas des numériques).
Et sinon ta boucle peut s'écrire plus simplement for x in liste: b+=float(x) ou encore plus simple b=sum(float(x) for x in liste).
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager