IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Exercice python 3


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut Exercice python 3
    Bonsoir,

    J'ai une erreur sur mon code : expected an indented block
    J'ai beau enlever et remettre les espaces, retaper le code rien n'y fait j'ai l'erreur.

    Mon but est de coder la table de 7 jusqu'à 20 et de mettre un * pour les multiples de 3.
    Dans mon code j'ai mis while et if donc je me demande si le soucis vient de la sachant que dans le livre je n'ai encore jamais vue d'exemples de blocs avec les 2 regroupé.
    (Je suis au tout début du livre : apprendre à programmer avec python 3.
    J'ai essayé de faire plusieurs blocs etc rien ne marche et 2 heures que je suis bloqué dessus ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a= 1
    while a<=20:
        print (a*7)
        if a % 3 == 0 :
        print ("*")
        a=a+1
    Merci et bonne soirée

    Nom : jh.JPG
Affichages : 196
Taille : 11,8 Ko

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    La règle générale est que lorsqu'une ligne se termine par un double point le bloc de code qui en dépend soient indenté.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        if a % 3 == 0 :
            print ("*")  # Indentation parce que dépendante du if

  3. #3
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Bonsoir,

    Merci pour la réponse. J'avais essayé mes j'avais une erreur, je devais mal le faire..
    Maintenant j'ai sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    a=1
    while a<=20 :
        print (a*7)
        if a % 3 ==0 :
            print ("*")
        a=a+1
    De quelle façon je pourrais avoir les * à côté est non en dessous sans utiliser de langages que je n'ai pas encore appris ? je me creuse la tête à essayer de trouver la façon la plus simple de le mettre à l'écrit mais je ne trouve pas

    7
    14
    21
    *
    28
    35
    42
    *
    49
    56
    63
    *
    70
    77
    84
    *
    91
    98
    105
    *
    112
    119
    126
    *
    133
    140

    Merci à vous

    PS: même quand je relis le code que j'ai fais moi même j'ai l'impression que c'est du chinois

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Salut,

    Citation Envoyé par outiat Voir le message
    je me creuse la tête à essayer de trouver la façon la plus simple de le mettre à l'écrit mais je ne trouve pas
    Ce sont des choses que vous ne pouvez pas inventer. C'est pour çà qu'il y a de bons tutos qui vous expliquent ce genre de choses avant de vous proposer de les utiliser dans un exercice.

    - W

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Salut

    Pour avoir l'étoile à côté du nombre et non pas en dessous, la solution peut être de procéder par une chaine de carcatère.
    Au début de ta boucle tu l'initialise à str(a*7). Dans ta condition if tu ajoute '*' à la fin de cette chaine. Et ensuite seulement, quelquesoit le contenu de la chaine de caractère, tu l'a fais affiché

    Autre option : Tu teste dès le début de ta boucle si a est divisible par 3, et comme ca dans chaque cas tu sais directement ce que tu dois printer.

  6. #6
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 914
    Points : 7 298
    Points
    7 298
    Par défaut
    Avec le formatage de chaîne ça doit le faire assez élégamment étant donné que ce n'est que de l'affichage demandé,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print(f'{s}*' if s%3==0 else s) # s -> a*7
    Mais il est débutant... et pourquoi l'apprentissage du while avant la boucle for ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    C'est bon merci j'ai trouvé comment faire.
    J'ai une autre question pour un autre exercice :

    Écrivez un script qui détermine si une chaîne contient ou non le caractère «*e*».

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a= 'salut, tu va bien ?'
    b= len(a) #pour connaitre la longueur de 'a' et donc quand finir la boucle
    c=0       # je ne ces pas si il y a un e donc c'est pour commencer du début de la phrase
    while c <= b :  #tant que c n'est n'est pas supèrieur ou égal à b donc la taille de la phrase, la boucle continue
        if  a[c] == 'e' : # gros doute dessus, le [c] c'est pour que le programme puisse chercher dans a sinon je n'ai rien
            print ("ok")
        else:
            print ('pas de e')
        c=c+1  # je rajoute 1 à la valeur de c sur chaque boucle jusqu'à la limite qui est donnée pars ma condition 'while'
    J'ai le résultat mes avec une erreur : IndexError: string index out of range
    Sachant que j'ai beaucoup de mal pour bien comprendre cette partie.
    le fait de devoir ajouté [] pour que le programme trouve bien la lettre je ne le comprend pas.


    Pour la boucle for, j'ai acheté le livre apprendre à programme avec python 3 et dans l'ordre du livre je n'ai pas encore la boucle for d'expliquée ^^
    Donc je ne l'utilise pas pour ne pas bruler des étapes.

    merci de votre aide dans mon apprentissage

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Salut,

    Citation Envoyé par outiat Voir le message
    J'ai le résultat mes avec une erreur : IndexError: string index out of range
    Ajoutez un print(c) dans votre boucle pour voir quelle valeur remonte IndexError.
    Ensuite vous savez que "len" retourne le nombre de caractères de la chaîne...
    Donc, si l'indice du premier caractère est 0, quel sera l'indice du dernier?

    - W

  9. #9
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Salut,

    Quand je print c sa dernière valeur est 19 donc il fait 1/2/3etc jusqu'à 19.
    Mes de toute façon j'ai pas bien compris l'intérêt de cette variable c

    Pourquoi je ne peu pas juste faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a= 'salut, tu va bien ?'
    b= len(a) #pour connaitre la longueur de 'a' et donc quand finir la boucle
    c=0
    while c <= b :  #tant que c n'est n'est pas supèrieur ou égal à b donc la taille de la phrase, la boucle continue
        if  a == 'e' : # gros doute dessus, le [c] c'est pour que le programme puisse chercher dans a sinon je n'ai rien
            print ("ok")
        else:
            print ('pas de e')
        c=c+1  # je rajoute 1 à la valeur de c sur chaque boucle jusqu'à la limite qui est donnée pars ma condition 'while'

    Laisser le c seulement pour que ma boucle ai une fin.
    Quand je fais, le programme ne détecte pas de 'e'
    En quoi ajouter [c] permet au programme de le voir ?
    Dans le livre c'est pas vraiment expliqué pas rapport à sa.

    Je me suis renseigné sur for et j'ai trouvé sa comme boucle qui est vraiment 1000x plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a= "salut à tous le monde"
    for i in a :
        if i == 'e' :
            print (" ok")
    Pas besoin d'ajouter plein de variables, d'utiliser le langage len(), []

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Citation Envoyé par outiat Voir le message
    Pourquoi je ne peu pas juste faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    a= 'salut, tu va bien ?'
    b= len(a) #pour connaitre la longueur de 'a' et donc quand finir la boucle
    c=0
    while c <= b :  #tant que c n'est n'est pas supèrieur ou égal à b donc la taille de la phrase, la boucle continue
        if  a == 'e' : # gros doute dessus, le [c] c'est pour que le programme puisse chercher dans a sinon je n'ai rien
            print ("ok")
        else:
            print ('pas de e')
        c=c+1  # je rajoute 1 à la valeur de c sur chaque boucle jusqu'à la limite qui est donnée pars ma condition 'while'
    Le but de ce genre d'exercice est de vous faire comprendre qu'une chaine de caractères est une séquence qu'on peut parcourir avec un index qui va permettre de tester chacun des caractères.

    Je me suis renseigné sur for et j'ai trouvé sa comme boucle qui est vraiment 1000x plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    a= "salut à tous le monde"
    for i in a :
        if i == 'e' :
            print (" ok")
    Pas besoin d'ajouter plein de variables, d'utiliser le langage len(), []
    Si vous voulez apprendre à programmer, il faut le faire pas à pas.
    Lorsque vous avez un soucis pour faire un exercice, il faut relire le chapitre en cours (et peut être ceux qui précèdent). Car vous devez essayez de faire votre exo. en utilisant les notions qui vous ont été présentées: ce sont ces notions qui sont importantes. Et l'exercice est juste là pour vous permettre de les saisir en essayant de les appliquer.
    D'autres constructions comme la boucle "for" seront présentées dans les chapitres suivants.
    Vous découvrirez aussi le mot clef "in" qui permettrait d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a= "salut à tous le monde"
    if 'e' in a:
            print (" ok")
    Pas de "while", ni de "for", ni d'index.
    Mais là vous êtes encore au chapitre qui essaie de vous apprendre tableaux, index (qui commence à 0) et boucles while.

    - W

  11. #11
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Merci pour votre réponse.

    J'ai regardé le for car on ma demandé pourquoi ne pas mettre for ? donc je me suis renseigné pour être sur de ne pas avoir loupé d'étapes et voir la différence avec for.

    J'ai relu 10x les exercices mes il faut vraiment avoir complètement compris le cours pour pouvoir les faire.
    Sachant qu'il y a 3 jours je n'avais aucune notion de programmation vraiment rien du tout .
    De toute façon je ne suis pas pressé, mon objectif à terme et de faire des algos de trading.
    Pour du trading automatique ou juste analyser des choses qui sont trop longues/complexe à faire à la main

  12. #12
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Citation Envoyé par outiat Voir le message
    J'ai relu 10x les exercices mes il faut vraiment avoir complètement compris le cours pour pouvoir les faire.
    Les exercices sont juste là pour vous aider à jouer avec les concepts abordés dans le cours/chapitres *ET* vous confronter à la mise au point de petits bouts de codes.
    Ils paraissent insignifiants mais des messages d'erreurs comme IndexError, NameError, ... sont communs lorsqu'on débute.
    Et l'apprentissage, c'est pas tellement faire un code qui fonctionne du premier coup mais ce que vous faites pour à comprendre pourquoi il ne marche pas et corriger le problème.

    Citation Envoyé par outiat Voir le message
    J'ai regardé le for car on ma demandé pourquoi ne pas mettre for ? donc je me suis renseigné pour être sur de ne pas avoir loupé d'étapes et voir la différence avec for.
    Demander de l'aide dans un forum de discussion est contre productif: on ne sait pas quels sont les constructions que vous êtes supposé utiliser pour votre exercice. On pourra vous suggérer une solution qui fonctionne mais qui vous fait passer complétement à côté des concepts que l'exercice essaie de vous faire pratiquer (tableau, index, while) pour mieux les maîtriser. In fine, vous aurez un code qui fonctionne mais vous serez passé à côté de ce que vous étiez supposé apprendre.

    - W

  13. #13
    Membre à l'essai
    Homme Profil pro
    magasinié
    Inscrit en
    Décembre 2018
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : magasinié

    Informations forums :
    Inscription : Décembre 2018
    Messages : 34
    Points : 21
    Points
    21
    Par défaut
    Oui de toute façon je fais dans l'ordre du livre.
    Je voulais juste comprende la signification de la boucle for ^^

    Pour demander sur le forum, j'ai mieux compris grâce justement à vos réponses que sur le livre.
    Je pense que chacun à sa façon d'apprendre et la façon dont est écrit un livre pour expliquer ne peu pas forcément correspondre à tous le monde.

    Je reste sur ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    a= "j'ai mangé des frites"
    c=0
    while c< len(a) :
        if a[c] == 'e' :
            print ('ok')
        else :
            print ('pas de e')
        c=c+1

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 355
    Points : 36 883
    Points
    36 883
    Par défaut
    Citation Envoyé par outiat Voir le message
    Je pense que chacun à sa façon d'apprendre et la façon dont est écrit un livre pour expliquer ne peu pas forcément correspondre à tous le monde.
    Vous vous débrouillez un peu comme vous voulez/pouvez.
    N'oubliez pas que le but de tout çà est que vous sachiez relire les lignes de code que vous avez écrit en vous mettant à la place de l'interpréteur Python.
    Le réflexe de base à acquérir pour çà est de lancer la console et essayer de reproduire le problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> a = 'salut, tu va bien ?'
    >>> c = len(a)
    >>> a[c]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: string index out of range
    >>>
    Dans ce cas particulier, se souvenir que si "len" retourne le nombre d'éléments comme les index commencent à 0, le dernier élément sera len(a) - 1 sont des informations qui sont dans le tuto. mais il faut poser de bonnes questions pour y retrouver la réponse.

    - W

Discussions similaires

  1. aide exercice python
    Par brunette83 dans le forum Général Python
    Réponses: 10
    Dernier message: 21/11/2012, 08h36
  2. aide exercice python
    Par brunette83 dans le forum Général Python
    Réponses: 1
    Dernier message: 13/11/2012, 22h40
  3. problème exercice python
    Par moushti dans le forum Général Python
    Réponses: 2
    Dernier message: 09/02/2011, 03h52
  4. aide exercice python
    Par cedric190985 dans le forum Général Python
    Réponses: 2
    Dernier message: 24/03/2010, 12h57
  5. exercice python premiere annee
    Par agui26 dans le forum Général Python
    Réponses: 3
    Dernier message: 10/01/2010, 11h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo