- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Ton code est incomplet, je ne comprends pas ce que tu cherches à faire.
Ceci ne peut marcher qu'après une regex effectuant une capture et ayant réussi. Ici, tu n'as pas indiqué de regex avant. Si tu veux l'utiliser en rapport avec la regex qui suit, alors il faut mettre la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $minuscule = $1;
après le if testant l'expression régulière.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $minuscule = $1;
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
[QUOTE=Lolo78;8716042]Ton code est incomplet, je ne comprends pas ce que tu cherches à faire.
[CODE]
J'aurais voulu indiquer à l'auteur qu'il faut une majuscule après un point.
J'avais suivi les recommandations (un peu plus haut dans la discussion) mais apparemment, je n'ai pas bien compris !
Je veux dire que s'il y a une minuscule après un .?!, j'avertis l'auteur qu'il faut peut être une majuscule (je ne prends pas en compte les abréviations)
Oui, c'est effectivement peut-être du Python "traduit" en Perl. Voici les erreurs que je relève:
Par ailleurs, même après ces corrections de syntaxe, je ne comprends pas vraiment ce que cherche à faire ce code. Peux-tu donner une idée des données en entrée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 my $ct_num =~ /^\d+$/ # point-virgule manquant et instruction ne faisant rien d'utile: ça vérifie si $_ se termine par des chiffres mais $ct_num reste non initialisé. my @tab = split (/.||/, my $ct_num); # expression régulière incorrecte dans le split. Si l'on désire splitter sur un ".", il faut /\./. Et je ne comprends pas "||". my @tab_invers = reverse @tab; my $i = 0; my nb = ""; # manque un sigil $: my $nb = ""; foreach my $chiffre ( @tab_invers ){ $nb = $nb . $chiffre; i++; # il faudrait au minimum écrire avec le sigil $: $i++; print $nb; if $i == 3 { $nb = $nb . " "; i = 0; # il faudrait au minimum écrire avec le sigil $: $i = 0; } }
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Essaie ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if ( $string =~ /[.?!] ([a-zàéèùâêîôûç])/ ) { my $minuscule = $1; say "<check type="majuscule">$minuscule</check>"; }
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
je veux séparer mes chiffres par une espace pour arriver à ceci : 123 456 789 sans prendre en compte la virgule
j'avais les instructions suivantes (que je suis obligée de suivre) :
1/ places les chiffres individuellement dans un tableau ;
2/ Parcourez le tableau de la fin vers le début;
(alternative peut-être plus simple : inversez le tableau et parcourez-le du
début à la fin)
3a/ Concaténez chaque chiffre à une chaîne de caractères et,
3b/ tous les trois chiffres, concaténez une espace insécable
(Pour identifier ces séquences de trois chiffres, vous pouvez utiliser un
compteur et un modulo).
Je ne vois pas la différence entre le Perl et le Python !
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
d'accord, je ne comprends pas très bien comment mon code peut être du python...
peux tu m'aider à en faire quelque chose qui corresponde vraiment à Perl ?
Je ne m'en sors pas du tout
merci
Essaie ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 my $num = "12345678"; my @digits = reverse split //, $num; my $count = 0; my $nouveau_num = ""; for my $chiffre (@digits) { $count++; $nouveau_num .= $chiffre; $nouveau_num .= " " if $count % 3 == 0; } print scalar reverse $nouveau_num;
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Merci !!
Peux-tu m'expliquer ceci : scalar reverse ?
J'ai de grosses difficultés et j'ai l'impression que mon prof cherche la petite bête...
Je ne suis pas sortie de l'auberge !
Merci pour ton aide
et celle-ci aussi : $nouveau_num .= " " if $count % 3 == 0;
je ne sais pas trop comment la commenter.
quelle est la fonction du modulo ?
Le "scalar" est juste là pour imposer un contexte scalaire à fa fonction reverse. Sinon, reverse considère qu'il travaille sur une liste d'éléments (en l’occurrence une liste à un seul élément) et qu'il doit intervertir les éléments de la liste. Du coup, il n'inverse pas la chaîne de caractère de $nouveau_num. Une autre façon d'obtenir le même résultat serait en deux lignes comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2print scalar reverse $nouveau_num;
Pour cette autre question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $nouveau_num_endroit = reverse $nouveau_num; print $nouveau_num_endroit, "\n";
% est l'opérateur modulo, ce qui veut dire que "$count % 3" calcule le reste de la division de $count par 3, est, donc, que $count est divisible par 3 (sans reste) si "$count % 3" est égal à 0. Donc, on ajoute un espace entre les chiffres chaque fois que $count est divisible par 3.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $nouveau_num .= " " if $count % 3 == 0;
PS: tu as le droit de "plusser" ( ) mes réponses si elles te sont utiles.
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
merci, c'est beaucoup plus clair.
J'ai "plussé", tes réponses me sont très utiles
Merci Lolo78 pour ton aide précieuse.
J'avais un soucis avec mon ordi et n'ai pas pu essayé le code hier.
Ce matin, j'ai testé tes propositions, mais il y a des erreurs de "compilation" (...due to compilation error)
Et donc je ne sais pas trop comment corriger le code...
Bonjour,
chez moi, ça compile et ça fonctionne. Il faut que tu montres ton code ainsi que les messages d'erreur.
Impossible de t'aider sans cela.
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
Je mets les deux en pièce jointe.
Désolée, je ne travaille pas sur mon ordinateur perso et j'ai seulement accès à notepad sans les couleurs.
J'ai fait une copie d'écran de mon invite de commande.
Toute aide est la bienvenue, je suis vraiment perdue !!
Merci
Bonjour,
plusieurs erreurs dans ce code:
La principale: $string n'a pas été initialisé. Tu veux sans doute avoir:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 if ( my $string =~ /[.?!] ([a-zàéèùâêîôûç])/ ) { # si une minuscule (normale et accentuée) suit # un point, un point d'interrogration ou un point # d'exclamation my $minuscule = $1; # $1 récupère la minuscule suivant l'espace # après le point, point d'interrogration ou point d'exclamation say ("<check type="majuscule">$minuscule</check>");# indiquer à l'auteur de vérifier # la majuscule } print $minuscule;
Dans la ligne "say ...", le guillemet avant "majuscule" ferme en fait la chaîne de caractère commencée juste avant "<chech type".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if ($ligne=~ /[.?!] ([a-zàéèùâêîôûç])/ ) { # si une minuscule (normale et accentuée) suit
Si tu veux des guillemets à l'intérieur de la chaîne, tu peux essayer:
Enfin, comme tu déclares $minuscule à l'intérieur du if, cette variable n'est plus accessible une fois sorti du if.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 say ("<check type=\"majuscule\">$minuscule</check>";# indiquer à l'auteur de vérifier
Si tu veux vraiment imprimer la valeur de minuscule à cet endroit (mais je ne vous pas pourquoi), alors il faut la déclarer avant le if:
Tu as le même problème avec:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 # indiquer à l'auteur qu'il faut une majuscule my $minuscule; if ( my $ligne =~ /[.?!] ([a-zàéèùâêîôûç])/ ) { # si une minuscule (normale et accentuée) suit # un point, un point d'interrogration ou un point # d'exclamation $minuscule = $1; # $1 récupère la minuscule suivant l'espace # après le point, point d'interrogration ou point d'exclamation say ("<check type=\"majuscule\">$minuscule</check>");# indiquer à l'auteur de vérifier # la majuscule } print $minuscule;
Il faut déclarer $elem avant le for si tu veux y accéder après:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 foreach my $elem ( @loc_lat ) { # tant qu'il y a des éléments dans mon tableau my $elem =~ s/@loc_lat/<i>@loc_lat<\/i>/g; # je les mets en italique } print $elem;
Et aussi ici:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 my $elem; foreach $elem ( @loc_lat ) { # tant qu'il y a des éléments dans mon tableau $elem =~ s/@loc_lat/<i>@loc_lat<\/i>/g; # je les mets en italique } print $elem;
Il faut déclarer $nouveau_num_endroit avant le for pour pouvoir y accéder après:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for my $chiffre (@tab_invers) { # tant qu'il y a des chiffres dans mon tableau inversé $compteur++; # j'incrémente mon compteur $nouveau_num .= $chiffre; # je concatène chaque chiffre à ma chaine de caractère vide $nouveau_num .= "\x{A0}" if $compteur % 3 == 0; # je concatène une espace insécable tous les 3 chiffres my $nouveau_num_endroit = reverse $nouveau_num; # je remets mon numéro à l'endroit } print $nouveau_num_endroit, "\n"; # j'imprime mon nouveau numéro
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 my $nouveau_num_endroit; for my $chiffre (@tab_invers) { # tant qu'il y a des chiffres dans mon tableau inversé $compteur++; # j'incrémente mon compteur $nouveau_num .= $chiffre; # je concatène chaque chiffre à ma chaine de caractère vide $nouveau_num .= "\x{A0}" if $compteur % 3 == 0; # je concatène une espace insécable tous les 3 chiffres $nouveau_num_endroit = reverse $nouveau_num; # je remets mon numéro à l'endroit } print $nouveau_num_endroit, "\n"; # j'imprime mon nouveau numéro
- La programmation fonctionnelle en Perl : 1. Les opérateurs de liste; 2. Les fonctions d'ordre supérieur; 3. Étendre le langage.
- Comment utiliser des décorateurs en Perl: Un tutoriel pour changer le comportement d'une fonction sans en modifier le code source
- De Perl 5 à Perl 6 : 1. Les bases; 2. Les nouveautés; 3. Approfondissements; 4. Annexe 1: Ce qui change entre Perl 5 et Perl 6; Annexe 2: Les nouveautés de Perl 6.
- Les regex et grammaires de Perl 6
- Objets, classes et rôles en Perl 6 - Tutoriel de programmation orientée objet
- Tour d'horizon du nouveau langage Perl 6
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