Meilleurs défis de programmation pour débutants : exercices de programmation faciles à difficiles

Meilleurs défis de programmation pour débutants : exercices de programmation faciles à difficiles

Voici un truc dont personne ne vous parle. Vous pouvez enchaîner les tutoriels pendant un mois, apprendre par cœur chaque vidéo, et puis ouvrir un fichier vierge et ne plus savoir quoi écrire. Je suis passé par là. La plupart des gens qui apprennent à coder, c'est pareil.

La solution est certes fastidieuse, mais efficace : résoudre soi-même de petits problèmes, même si c'est parfois maladroit au début. Ce guide se divise donc en deux parties. La première est une sélection des meilleurs défis de programmation pour débutants (dix au moins, du plus facile au plus difficile). La seconde recense les sites où vous trouverez des milliers d'autres défis une fois que vous aurez exploré les miens.

N'importe quel langage de programmation fera l'affaire. Mes exemples utilisent Python et un peu de JavaScript, car c'est par là que la plupart des gens débutent. Essayez de les suivre dans l'ordre. Chaque problème introduit une nouvelle notion.

Pourquoi les défis de programmation permettent de développer de véritables compétences en codage

Qu'est-ce qui constitue un défi ? Un petit exercice avec une réponse évidente. « Prenez un mot et récitez-le à l'envers. » « Voici une liste de nombres, lequel est le plus grand ? » Vous n'installez rien, vous ne choisissez aucun framework. Vous écrivez une dizaine de lignes de code.

Suivre un tutoriel, c'est suivre le raisonnement de quelqu'un d'autre. Les exercices de programmation inversent cette approche, et c'est déstabilisant, mais d'une manière constructive. On essaie, ça ne marche pas, on déchiffre l'erreur, on recommence. En faisant ça pendant quelques semaines, certaines choses deviennent progressivement plus faciles.

  • Maîtrise de la syntaxe. Plus besoin de chercher pour la cinquième fois sur Google comment écrire une boucle for.
  • Aptitude à la résolution de problèmes. Vous commencez à décomposer une tâche floue en étapes avant même de toucher au clavier.
  • Raisonnement logique. Une liste vide, un nombre négatif, un mot d'une seule lettre. On finit par s'y attendre.
  • Débogage. Les messages d'erreur en rouge cessent d'être perçus comme une insulte.
  • Confiance. Chaque problème résolu prouve que vous êtes capable d'écrire un programme vous-même.

On m'a dit un jour que la programmation obéit à la règle des 80/20, et pour les problèmes de débutant, c'est assez juste. La plupart reposent sur les mêmes cinq opérations : les boucles, les instructions if/else, la manipulation de chaînes de caractères, le comptage des éléments d'un dictionnaire et le parcours d'un tableau. Une fois ces opérations bien assimilées, beaucoup de « nouveaux » problèmes se révèlent être de vieux problèmes revisités.

Les meilleurs défis de programmation pour débutants

10 défis de programmation faciles à résoudre pour les débutants

Aucune de ces méthodes n'est originale, et c'est justement le but. Elles figurent dans presque tous les cours pour débutants car elles sont efficaces. Les cinq premières nécessitent seulement des boucles, des conditions et quelques notions de manipulation de chaînes de caractères ou de listes, tandis que les cinq dernières vous obligent à réfléchir à la structure de données à utiliser avant même d'écrire quoi que ce soit. Quoi qu'il arrive, essayez de ne pas faire de recherche sur Google pendant au moins vingt minutes, même si cela vous semble inutile.

Défi 1 : FizzBuzz

La tâche consiste à imprimer les nombres de 1 à 100, mais chaque multiple de trois apparaît comme « Fizz », chaque multiple de cinq comme « Buzz », et les nombres qui sont des multiples des deux reçoivent « FizzBuzz ».

Je me souviens avoir trouvé presque insultant à quel point cela paraissait simple. Ce n'est pourtant pas si simple, et c'est pourquoi les recruteurs l'ont apprécié pendant si longtemps. Ceux qui ont beaucoup lu sur la programmation mais très peu écrit butent généralement sur l'ordre des vérifications. Ma version en Python ressemble à ceci :

Python pour n dans la plage (1, 101) : si n % 15 == 0 : afficher("FizzBuzz") sinon si n % 3 == 0 : afficher("Fizz") sinon si n % 5 == 0 : afficher("Buzz") sinon : afficher(n)

Une fois que votre programme fonctionne, faites glisser la ligne % 15 vers le bas, exécutez-le et voyez combien de FizzBuzz survivent. Spoiler : aucun.

Défi 2 : Inverser une chaîne de caractères

« Hello » entre, « oleh » sort.

Il existe un raccourci dans presque tous les langages, comme `s[::-1]` en Python ou `split("").reverse().join("")` en JavaScript, et on peut l'écrire une fois pour voir comment ça fonctionne. Après, je le supprimerais et j'opterais pour la version classique avec une boucle qui ajoute un caractère à la fois. C'est là qu'on se rend compte que dans la plupart des langages, on ne peut pas modifier une chaîne de caractères directement, ce qui peut prêter à confusion par la suite si on ne l'apprend pas ici.

Défi 3 : Le jeu de damier des palindromes

Un palindrome est un mot comme « racecar » ou « noon » qui se lit de la même façon dans les deux sens ; votre fonction devrait donc accepter ces mots et refuser « hello ».

Quand ça fonctionne, c'est l'occasion idéale de perfectionner vos compétences en programmation en lui soumettant « Un homme, un plan, un canal : Panama ». Le programme ne fonctionnera qu'après avoir converti le texte en minuscules et supprimé les espaces et la ponctuation. Vous pouvez réutiliser le code d'inversion de chaînes du défi précédent, ce qui est plutôt satisfaisant.

Défi 4 : Suite de Fibonacci

Vous avez probablement déjà vu cette suite : 0, 1, 1, 2, 3, 5, 8, 13, chaque nombre étant la somme des deux précédents. Votre fonction doit renvoyer les n premiers de cette suite.

Deux variables et une boucle suffisent. Le plus intéressant commence lorsqu'on réécrit le code avec de la récursivité : la fonction s'appelle elle-même, puis demande n = 35. Sur la plupart des ordinateurs portables, l'attente sera un peu longue, et comprendre pourquoi constitue une première approche en douceur de la programmation dynamique. C'est un de ces petits moments d'illumination qui restent gravés dans la mémoire.

Défi 5 : Faire pivoter un tableau

Prenez un tableau et un nombre k, puis déplacez chaque élément de k positions vers la droite, en faisant revenir les éléments de la fin au début. Avec [1, 2, 3, 4, 5] et k = 2, vous devriez obtenir [4, 5, 1, 2, 3].

La plupart des premières tentatives échouent lorsque k est supérieur à la liste. Faire pivoter cinq éléments de 7 revient en réalité à les faire pivoter de 2, ce qui est évident une fois qu'on le voit et invisible jusque-là.

Si vous avez réussi à passer ces cinq-là sans trop de difficulté, bravo ! Les suivants vous demanderont un peu plus d'efforts.

Défi 6 : Trouver le plus grand entier dans un tableau

Trouver le plus grand nombre est facile si la fonction max() est disponible, or ce n'est pas le cas. Utilisez plutôt une boucle, puis trouvez le deuxième plus grand sans parcourir la liste deux fois. Vous devez maintenant gérer deux valeurs et veiller à bien choisir celle que vous modifiez en premier.

Les doublons et les nombres négatifs sont de bons éléments de test, car de nombreuses solutions initiales échouent discrètement face à eux.

Défi 7 : Compter les voyelles dans une phrase

Compter les voyelles sert d'échauffement. L'exercice proprement dit consiste à compter chaque voyelle individuellement et à renvoyer un résultat du type {"a": 3, "e": 5, "i": 1, "o": 2, "u": 0}.

Pour beaucoup de débutants, c'est à ce moment précis que les dictionnaires (ou les objets en JavaScript) prennent enfin tout leur sens, et c'est important, car il s'agit probablement de la structure de données sur laquelle vous vous appuierez le plus au cours de l'année à venir.

Défi 8 : Vérificateur d'anagrammes

Les anagrammes utilisent exactement les mêmes lettres dans un ordre différent, comme « listen » et « silent », vous écrivez donc une fonction qui détermine si deux chaînes de caractères sont des anagrammes.

Il existe deux méthodes raisonnables à ma connaissance. On peut trier les deux chaînes et comparer les résultats, ou compter la fréquence d'apparition de chaque lettre et comparer ces résultats. Écrire les deux chaînes et se demander laquelle est la plus efficace constitue en quelque sorte la première étape d'une réflexion sur l'efficacité.

Défi 9 : Somme à deux

Avec une liste comme [2, 7, 11, 15] et une cible de 9, vous renvoyez les positions des deux nombres dont la somme est égale à la cible, qui est ici [0, 1].

La plupart des développeurs commencent par deux boucles imbriquées qui testent chaque paire, ce qui convient pour les listes courtes mais devient vite lent. L'approche la plus rapide consiste à conserver les nombres déjà rencontrés dans un dictionnaire, ce qui permet de les retrouver instantanément. Ce n'est pas un hasard si LeetCode a placé cette méthode en tête : elle illustre parfaitement l'importance d'une structure de données appropriée.

Défi 10 : Jeu de devinettes de nombres

Ici, l'ordinateur choisit un nombre secret entre 1 et 100, vous essayez de deviner, et il vous indique « trop haut » ou « trop bas » jusqu'à ce que vous trouviez le bon nombre, en précisant également le nombre d'essais nécessaires.

Il s'agit moins d'un simple casse-tête de programmation que d'une petite application, avec des entrées utilisateur, une boucle while et des nombres aléatoires. Tôt ou tard, quelqu'un tapera « banane » au lieu d'un nombre, vous serez donc confronté à ce genre de situation. Et contrairement aux autres, celle-ci est vraiment jouable à deux.

Meilleurs sites web pour les défis de programmation en ligne

Une fois mes dix recharges épuisées, vous voudrez une réserve illimitée avec vérification automatique. Tous ces sites de défis de programmation en ligne proposent cela. Ils sont simplement très différents les uns des autres.

Plate-forme Idéal pour Format Coût
Edabit Débutants absolus Des défis de programmation courts et faciles à réaliser dans le navigateur Niveau gratuit
Guerres de codes Pratique ludifiée « Kata » classé avec des solutions communautaires Gratuit
Exercice Apprendre de bonnes habitudes Parcours linguistiques avec mentorat humain optionnel Gratuit
freeCodeCamp Apprentissage structuré Programme d'études avec exercices intégrés et certifications Gratuit
HackerRank Parcours de compétences et préparation à l'emploi Problèmes thématiques avec étiquettes de difficulté Gratuit pour les apprenants
LeetCode Préparation aux entretiens Problèmes algorithmiques classés Facile/Moyen/Difficile Niveau gratuit
CodeChef Se tourner vers les compétitions Parcours d'entraînement et compétitions régulières Niveau gratuit
Projet Euler Les passionnés de mathématiques Casse-têtes à forte composante mathématique, soumission des réponses uniquement Gratuit
L'avènement du code Amusement saisonnier Des énigmes quotidiennes basées sur une histoire chaque décembre Gratuit

Edabit

Si un ami me demandait par où commencer, je lui conseillerais Edabit. Les exercices sont courts, tout se déroule dans le navigateur et on gagne de l'expérience. Python, JavaScript, Java, C++ et quelques autres langages sont abordés, et l'étiquette « très facile » est vraiment justifiée.

Guerres de codes

Sur Codewars, les problèmes sont appelés kata (un terme d'arts martiaux désignant des exercices). Ils sont classés de 8 kyu, le plus facile, à 1 kyu. Le plus intéressant, c'est après avoir soumis votre solution. Vous pouvez alors voir les réponses des autres joueurs, et comparer vos dix lignes de code maladroites à la solution élégante et concise d'un autre joueur vous apprend bien plus que la plupart des tutoriels.

Exercice

Exercism est une plateforme à but non lucratif et entièrement gratuite. Elle propose des parcours d'apprentissage pour plus de 80 langages, et des mentors bénévoles examineront votre code si vous le leur demandez. Vous pouvez rester dans votre navigateur ou télécharger les exercices sur votre ordinateur. Je vous conseillerais plutôt la seconde option, car elle vous permettra de vous familiariser avec Visual Studio Code et le terminal.

freeCodeCamp

Ce n'est pas à proprement parler un site de défis. Il s'agit d'un programme complet, mais il est construit à partir de centaines de petits exercices de programmation, ce qui le rend adapté. Idéal si vous aimez les formations structurées : JavaScript, Python, conception web responsive et bien plus encore, avec des projets de certification à la fin de chaque parcours.

HackerRank

HackerRank classe les problèmes par niveau de compétence (Python, SQL, structures de données, algorithmes) et indique leur difficulté ainsi que le nombre de personnes qui les ont résolus. De nombreuses entreprises utilisent cette plateforme pour sélectionner leurs candidats. Se familiariser avec l'interface dès maintenant vous évitera bien des soucis par la suite.

LeetCode

Ici, on prépare les entretiens d'embauche. Les problèmes sont classés Facile, Moyen et Difficile, et même « Facile » suppose que vous maîtrisez les bases. Considérez les exercices de programmation comme une étape, pas comme un point de départ. Revenez quand mes dix exercices vous paraîtront plus faciles.

CodeChef

CodeChef s'est développé en tant que site de programmation compétitive. Aujourd'hui, il propose également des parcours d'entraînement pour débutants en plus de ses compétitions régulières ; si les compétitions chronométrées vous tentent, c'est un endroit idéal pour en essayer une.

Projet Euler

Des problèmes de maths à résoudre avec du code. Pas d'éditeur sur le site. Vous écrivez le programme où vous voulez et vous entrez juste le résultat. Les matheux adorent. Les autres ont tendance à passer leur chemin.

L'avènement du code

Chaque année en décembre, vous recevez un puzzle en deux parties par jour, lié par une histoire amusante. La durée du défi a récemment été réduite de 25 à 12 jours et le classement mondial a été supprimé ; désormais, il s'agit principalement de classements privés entre amis ou collègues. Les anciens puzzles restent disponibles toute l'année et les archives constituent une excellente ressource pour s'entraîner.

Vous entendrez également parler de Coderbyte, qui mêle défis et cours de préparation aux entretiens d'embauche, et de Topcoder, qui s'adresse plutôt aux développeurs expérimentés.

Attention ! De nombreuses listes anciennes renvoient encore vers Google Code Jam et Kick Start. Google a fermé ces deux plateformes en 2023, et seules les archives des problèmes subsistent.

Les meilleurs défis de programmation pour débutants

Comment relever des défis de programmation sans s'épuiser

Mettre dix sites en favoris ne vous rend pas meilleur. C'est l'habitude qui compte. Voici comment je procéderais :

  1. Choisissez un langage de programmation et tenez-vous-y. Python est souvent privilégié car sa syntaxe est proche de l'anglais. JavaScript est un bon choix si vous souhaitez créer des sites web.
  2. Installez un véritable éditeur de code. Les éditeurs de navigateur conviennent pour la première semaine. Installer Visual Studio Code dès le début vous apprendra à exécuter des fichiers, à lire les erreurs dans le terminal et à vous familiariser avec le débogueur.
  3. Résolvez un à trois problèmes par jour. Pratiquer la programmation quotidiennement, même par petites doses, est bien plus efficace qu'une session intensive de six heures le dimanche. Les automatismes s'installent entre les sessions, et il est difficile de négliger un petit objectif.
  4. Après avoir terminé, consultez d'autres solutions. Sur Codewars ou Exercism, jetez un œil à deux ou trois autres réponses. Vous y découvrirez des bonnes pratiques et des astuces vraiment ingénieuses à réutiliser.
  5. Reprenez d'anciens exercices. Une semaine plus tard, essayez d'en refaire un de mémoire. Si vous n'y parvenez pas, c'est que vous l'avez mémorisé au lieu de le comprendre.
  6. Passez ensuite à des projets plus modestes. Avec une trentaine à une cinquantaine de problèmes à résoudre, créez quelque chose : une liste de tâches, une application météo utilisant une API gratuite, un jeu d'aventure textuel. C'est là que vos différentes compétences commencent à se combiner.

Que faire lorsqu'on est bloqué sur un défi de programmation

Vous allez vous retrouver bloqué. Même les développeurs expérimentés se retrouvent bloqués avant midi. Ils ont une méthode pour se débloquer, alors inspirez-vous-en !

  • Reformulez le problème avec vos propres mots. Un nombre surprenant de situations où l'on se dit « Je n'arrive pas à résoudre ce problème » sont en réalité dues à une mauvaise interprétation.
  • Résolvez un exemple à la main. Munissez-vous d'un petit stylo et de papier, et notez chaque étape. Félicitations, voilà votre algorithme !
  • Commencez par écrire le pseudocode. « Pour chaque nombre, s'il est supérieur à mon plus grand nombre actuel, conservez-le. » Un langage clair est plus facile à corriger qu'un code.
  • Imprimez tout. La plupart des bugs proviennent d'une variable contenant une valeur différente de celle que vous supposiez. Imprimez-la et vous le saurez.
  • Expliquez-le à voix haute. Parcourez votre code ligne par ligne, à une personne ou même à un canard en caoutchouc. Le bogue logiciel se manifeste souvent au milieu d'une phrase.
  • Utilisez les indices étape par étape. De nombreuses plateformes proposent un indice avant la réponse complète. Prenez-le en compte, puis recommencez.

Quoi que vous fassiez, ne copiez pas une solution, ne la laissez pas passer sans vous arrêter. Je l'ai fait pendant un temps et ça n'a mené à rien. Si vous lisez une réponse, fermez l'onglet, attendez une heure et recréez la solution vous-même.

Défis de programmation sur le thème des cryptomonnaies pour les débutants en blockchain

Peut-être que les paiements en cryptomonnaie ou la blockchain sont la raison pour laquelle vous avez voulu apprendre à programmer. Dans ce cas, entraînez-vous sur des problèmes issus de cet univers. Les fondamentaux sont les mêmes (chaînes de caractères, entiers, API), mais les tâches ressemblent beaucoup plus à du travail technique concret. Vous n'avez pas besoin de comprendre les algorithmes de consensus pour cela.

  • Récupérer le cours en temps réel d'une cryptomonnaie. Utiliser une API publique gratuite pour afficher le cours du Bitcoin, avec une mise à jour toutes les minutes. Bonjour les requêtes HTTP et JSON.
  • Validez le format d'une adresse de portefeuille. Vérifiez si une chaîne de caractères correspond à une adresse plausible : longueur correcte, préfixe correct, caractères autorisés uniquement. Un excellent exercice de manipulation de chaînes de caractères et une introduction en douceur aux expressions régulières.
  • Créez un convertisseur d'unités. Satoshis vers BTC (1 BTC = 100 000 000 satoshis), wei vers ETH (1 ETH = 10¹⁸ wei). Vous comprendrez vite pourquoi les nombres à virgule flottante et la monnaie ne font pas bon ménage, et pourquoi les développeurs utilisent des nombres entiers pour représenter les montants.
  • Hachez une chaîne de caractères avec SHA-256. Hachez une phrase avec votre bibliothèque standard, changez une lettre, hachez-la à nouveau. Le résultat est totalement différent. Cette propriété est essentielle à la cohésion des blockchains.
  • Créez une page de paiement simple. Une page produit avec un bouton « Payer en crypto » qui génère une facture de test via une API de passerelle de paiement.

Ce dernier élément permet de coordonner le tout : un formulaire, un appel API, la gestion des erreurs et l’affichage du résultat à un utilisateur réel. Des passerelles comme Plisio publient une API et une documentation que vous pouvez intégrer à une boutique de démonstration, ce qui transforme un exercice pour débutants en une véritable intégration e-commerce.

Commencez dès aujourd'hui votre pratique du codage avec un seul problème.

Quand je repense à ce qui m'a vraiment permis de progresser en tant que débutant, ce n'était pas un problème légendairement difficile. Les meilleurs défis de programmation pour débutants se sont avérés être ces petits exercices fastidieux que j'ai réussi à terminer, généralement tard le soir, avec un thé froid à côté de mon ordinateur portable.

Alors, ouvrez un éditeur ce soir et lancez-vous dans FizzBuzz, code rudimentaire compris. Continuez à explorer ma liste tant que c'est amusant, et quand ça ne le sera plus, passez au site du tableau qui vous semblera le plus convivial. Gardez cette habitude si régulière que l'abandonner vous paraîtra presque ridicule. Dans un mois, certains de ces sites vous paraîtront presque ennuyeux, et cet ennui, c'est à peu près ce que l'on ressent quand on maîtrise vraiment la programmation.

Des questions?

Franchement ? FizzBuzz, comme presque tout le monde. Il suffit d’une boucle et de quelques instructions « si », et on peut l’expliquer en un clin d’œil. Pourtant, beaucoup se trompent encore dans l’ordre des vérifications lors de leur premier essai. Inverser une chaîne de caractères est une bonne deuxième étape.

Edabit est le site que je recommanderais à un débutant complet, principalement parce que les problèmes sont courts et qu’aucune installation n’est requise. Plus tard, Codewars devient addictif grâce à son système de classement et à la possibilité de consulter les solutions de tous les joueurs. Exercism propose des mentors gratuits, ce qui est rare. freeCodeCamp convient à ceux qui préfèrent un parcours structuré. LeetCode peut attendre, car même ses problèmes faciles supposent la maîtrise des bases.

Je recommanderais Python à la plupart des gens, notamment parce que sa syntaxe est simple et permet de se concentrer sur la logique plutôt que sur les parenthèses et les points-virgules. Si vous souhaitez déjà créer des sites web, JavaScript est tout aussi pertinent, car tous les navigateurs l’utilisent. Les deux langages conviennent pour les défis de programmation, et l’important est de rester fidèle à son choix.

Un à trois problèmes, et je parle d’un plafond plutôt que d’un objectif à atteindre quand on débute. Deux problèmes par jour pendant un mois vous apprendront davantage que trente résolus en un seul week-end. Profitez du temps restant pour bien comprendre chaque solution et analyser les approches des autres.

Étrangement, oui, même si les problèmes eux-mêmes ne se simplifient jamais. Ce qui change, c’est qu’on commence à remarquer la fréquence à laquelle les mêmes schémas reviennent : boucles, conditions, manipulation de chaînes de caractères, comptage avec des dictionnaires et parcours de tableaux. Vers le quarantième problème, on se surprend à penser : « Tiens, encore un de ceux-là », et c’est là que le déclic se produit.

Commencez par reformuler le problème avec vos propres mots, car d’après mon expérience, environ la moitié des blocages sont dus à une mauvaise interprétation. Le papier est également utile. Résolvez un petit exemple à la main, notez votre démarche, et cette liste deviendra votre pseudocode. L’affichage des instructions vous indiquera la valeur réelle de vos variables. Et si vous passez vingt ou trente minutes sans trouver de solution, un indice suffit, mais la réponse complète est rarement suffisante.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.