Partage
  • Partager sur Facebook
  • Partager sur Twitter

autorisé au lieu de 104.5 au lieu de 104.5

    29 novembre 2020 à 21:33:25

    Bonsoir,

    le quesion:

    mesure faite par un radar fixe, on doit retirer 5km/h à la vitesse mesurée si elle est inférieure à 100 km/h et 5% si elle est supérieure à 100 km/h. Le résultat est la vitesse retenue pour le véhicule pour savoir si elle dépasse la limitation de vitesse.
    Ainsi, pour une vitesse mesurée de 60 km/h, on retiendra comme vitesse 55 km/h et pour une vitesse mesurée de 110 km/h, on retiendra une vitesse de 104,5 km/h.

    Créer un programme qui prend en entrée la vitesse mesurée v et renvoie la vitesse retenue pour la verbalisation.

    Entrée : La vitesse v

    Sortie : La vitesse retenue après retrait de la marge d'erreur prévue par la loi.

    def ma_fonction(v):
       
        if v <= 100:
            return v-5
        elif v>100:
            return ("la vitesse retenu est dépassé")
        elif v>=110:
            v=v-5.5
            return ("vitesse est supérieur autorisé au lieu de 104.5")
        else:
            return("vitesse est supèrieur a autorisé")
    print(ma_fonction(60))



    En l’exécutant mon programme j'ai message suivant

    " En testant les valeurs 110 le résultat obtenu est la vitesse retenu est dépassé au lieu de 104.5 "

    Veuillez m'aidez s'il vous plaît



    -
    Edité par xavierdominique 29 novembre 2020 à 21:50:48

    • Partager sur Facebook
    • Partager sur Twitter
      29 novembre 2020 à 23:36:24

      La fonction renvoie un nombre pas un message. Par ailleurs, tu ne fais pas la distinction entre le cas général (fonction et ses paramètres) et un cas particulier (puisque tu places dans le corps de la fonction les résultats d'un exemple). Donc tu n'as pas compris le principe d'une fonction.
      • Partager sur Facebook
      • Partager sur Twitter
        29 novembre 2020 à 23:55:16

        Bonsoir.

        Dans l'énoncé, les trois choses à retenir sont :

        • 100 km/h que j'appellerai la vitesse "repère".
        • Correction de -5 km/h en-dessous de la vitesse "repère".
        • Correction de -5% à partir de la vitesse "repère".

        Par conséquent, la fonction n'a besoin que de 2 cas de figure :

        # -*- coding:utf8 -*-
        
        def ma_fonction(v):
            if v < 100:
                
                return " ".join(["La vitesse retenue est de", str(v - 5), "km/h."])
            
            else:
                return " ".join(["La vitesse retenue est de", str(v * 0.95), "km/h."])
        
        print(ma_fonction(int(input("Quelle est la vitesse relevée ? "))))

        L'énoncé ne précisant pas comment est traitée une vitesse relevée de 100 km/h, j'ai pris la liberté d'appliquer 5% de correction. Il y a peut-être des notions que vous n'avez encore pas vues mais rien d'insurmontable avec quelques recherches. Et sinon, n'hésitez pas à demander les explications.

        -
        Edité par PB68 29 novembre 2020 à 23:57:56

        • Partager sur Facebook
        • Partager sur Twitter

        PB68

          30 novembre 2020 à 0:39:40

          PB68 a écrit:

          Bonsoir.

          Dans l'énoncé, les trois choses à retenir sont :

          • 100 km/h que j'appellerai la vitesse "repère".
          • Correction de -5 km/h en-dessous de la vitesse "repère".
          • Correction de -5% à partir de la vitesse "repère".

          Par conséquent, la fonction n'a besoin que de 2 cas de figure :

          # -*- coding:utf8 -*-
          
          def ma_fonction(v):
              if v < 100:
                  
                  return " ".join(["La vitesse retenue est de", str(v - 5), "km/h."])
              
              else:
                  return " ".join(["La vitesse retenue est de", str(v * 0.95), "km/h."])
          
          print(ma_fonction(int(input("Quelle est la vitesse relevée ? "))))

          L'énoncé ne précisant pas comment est traitée une vitesse relevée de 100 km/h, j'ai pris la liberté d'appliquer 5% de correction. Il y a peut-être des notions que vous n'avez encore pas vues mais rien d'insurmontable avec quelques recherches. Et sinon, n'hésitez pas à demander les explications.


          Pour les 100km/h justement choisir l'un ou l'autre donne le même résultat : 100-5=100*0.95. Par ailleurs, je ne vois pas l'intérêt s'il apprend Python de lui donner la réponse, tout au plus est-il utile de lui donner des pistes. Par ailleurs, il est selon moi erroné de renvoyer un message (une chaîne de caractères) L'énoncé dit bien de renvoyer une vitesse donc un flottant. Si son code doit être validé automatiquement, le moindre octet qui ne correspond pas va lui dire qu'il a faux, comme sur France-IOI. Par ailleurs, ton formatage est inutilement compliqué, d'ailleurs autant afficher directement.
          • Partager sur Facebook
          • Partager sur Twitter
            30 novembre 2020 à 1:48:27

            Ça va aller mal si ma vitesse est en bas de 5 km/h. Ils vont me retourner de l'argent au lieu de m'envoyer une contravention ...
            • Partager sur Facebook
            • Partager sur Twitter

            Le Tout est souvent plus grand que la somme de ses parties.

              30 novembre 2020 à 7:54:30

              PierrotLeFou

              "Ça va aller mal si ma vitesse est en bas de 5 km/h. Ils vont me retourner de l'argent au lieu de m'envoyer une contravention ..."

              vous vous croyiez qu'il vous retournerons l'argent jamais:lol:

              merci à vos aides

              après avoir corrigé et l'exécution programme:

              def ma_fonction(v):
                  
                  if v<100:
                      return "".join(["La vitesse est de ",str(v-5)," km/h."])
                  else:
                      return "".join(["La vitesse est de ", str(v*0.95), " km/h." ])
              # print(ma_fonction(int(input("Quelle est la vitesse relevée?"))))
              print(ma_fonction(110))

              il dit toujours la même erreur:

              "

              En testant les valeurs 60 le résultat obtenu est La vitesse est de 55 au lieu de 55

              "
              ceci est la question complet :

              "

              Les radars routiers permettent de mesurer la vitesse d'un véhicule et le verbaliser s'il dépasse la limite autorisée. On pourra trouver ici leur fonctionnement. Comme pour toute mesure, il y a un des incertitudes. C'est pour cela que la loi prévoit que pour toute mesure faite par un radar fixe, on doit retirer 5km/h à la vitesse mesurée si elle est inférieure à 100 km/h et 5% si elle est supérieure à 100 km/h. Le résultat est la vitesse retenue pour le véhicule pour savoir si elle dépasse la limitation de vitesse.
              Ainsi, pour une vitesse mesurée de 60 km/h, on retiendra comme vitesse 55 km/h et pour une vitesse mesurée de 110 km/h, on retiendra une vitesse de 104,5 km/h.

              Créer un programme qui prend en entrée la vitesse mesurée v et renvoie la vitesse retenue pour la verbalisation.

              Entrée : La vitesse v

              Sortie : La vitesse retenue après retrait de la marge d'erreur prévue par la loi.

              "

              -
              Edité par xavierdominique 30 novembre 2020 à 8:22:05

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                30 novembre 2020 à 8:28:41

                Quelle erreur ?!!!

                Si v est inférieur à 100 km/h ou soustrait 5 km/h

                • Partager sur Facebook
                • Partager sur Twitter
                  30 novembre 2020 à 8:49:52

                  ceci:

                  "

                  En testant les valeurs 60 le résultat obtenu est La vitesse est de 55 au lieu de 55

                  "

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    30 novembre 2020 à 8:57:33

                    Tu ne testes pas 60 mais 110

                    print(ma_fonction(110))



                    • Partager sur Facebook
                    • Partager sur Twitter
                      30 novembre 2020 à 9:01:20

                      même en essayent comme vous demandé

                      toujours message est:

                      "

                      En testant les valeurs 110 le résultat obtenu est La vitesse est de 104.5 au lieu de 104.5

                      "

                      • Partager sur Facebook
                      • Partager sur Twitter
                        30 novembre 2020 à 9:02:14

                        Diablo76 a écrit:

                        Quelle erreur ?!!!

                        Si v est inférieur à 100 km/h ou soustrait 5 km/h


                        Je crois savoir pourquoi il dit qu'il y a une erreur. En effet, j'ai fait une proposition de code dans laquelle j'embellis la réponse demandée qui ne devrait être que le nombre représentant la vitesse retenue avec un texte. 

                        Donc, xavierdominique, je m'en excuse et vous rectifie ma proposition de code pour coller à l'énoncé. Maintenant, le résultat retourné par la fonction n'est que la vitesse corrigée. Du coup, il faudra également changer la valeur de la vitesse relevée dans la ligne "print" qui est actuellement de 60 km/h pour faire vos tests.

                        def ma_fonction(v):
                            if v < 100:
                                return (v - 5)
                        
                            else:
                                return (v * 0.95)
                        
                        print(ma_fonction(60))
                        

                        -
                        Edité par PB68 30 novembre 2020 à 9:04:10

                        • Partager sur Facebook
                        • Partager sur Twitter

                        PB68

                          30 novembre 2020 à 9:12:04

                          peut importe le km qu'on donne erreur message arrive

                          En testant les valeurs 110 le résultat obtenu est La vitesse est de 104.5 au lieu de 104.5
                          En testant les valeurs 110 le résultat obtenu est La vitesse est de 60 au lieu de 55
                          En testant les valeurs 110 le résultat obtenu est La vitesse est de 100 au lieu de 95
                          etc etc

                           pour 50

                          print(ma_fonction(50))

                          Output

                          45

                          Tests validés

                          En testant les valeurs 60 le résultat obtenu est bien 55

                          Oops!     il essaye avec un autre ...km/h ici 110

                          En testant les valeurs 110 le résultat obtenu est La vitesse est de 104.5 au lieu de 104.5
                          

                          Tests validés

                          En testant les valeurs 60 le résultat obtenu est bien 55
                          

                          Oops!

                          En testant les valeurs 110 le résultat obtenu est La vitesse est de 104.5 au lieu de 104.5
                          
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            30 novembre 2020 à 9:18:17


                            Peux-tu donner le lien de ton exercice ?

                            après la correction auto du site réclame peut-être ça pour validation:

                            def ma_fonction(v):
                                if v < 100:
                                    return (v - 5)
                             
                                else:
                                    return (v - (v*5/100))



                            -
                            Edité par Anonyme 30 novembre 2020 à 9:22:12

                            • Partager sur Facebook
                            • Partager sur Twitter
                              30 novembre 2020 à 9:19:07

                              maintenant je comprend qu'est ce qu'il veux

                              voilà le prg qu'il veut:

                              def ma_fonction(v):
                                  
                                  if v<100:
                                      return "".join(["",str(v-5) ])
                                  else:
                                      return "".join([str(v*0.95) ])
                              # print(ma_fonction(int(input("Quelle est la vitesse relevée?"))))
                              print(ma_fonction(50))

                              merci beaucoup à vos aides

                              https://www.codingame.com/playgrounds/17176/recueil-dexercices-pour-apprendre-python-au-lycee/debut-dannee



                              -
                              Edité par xavierdominique 30 novembre 2020 à 9:29:05

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                30 novembre 2020 à 9:35:29

                                En fait voilà ce que l'exo demande:

                                def ma_fonction(v):
                                    # Ne pas toucher ce qui précède
                                    # Les valeurs pour les variables en entrée seront automatiquement données
                                    # Ecrire ci-dessous en n'oubliant pas d'indenter et d'utiliser return pour renvoyer un résultat
                                    if v < 100:
                                        return v-5
                                    else:
                                        return v - v*5/100
                                        # ou v*0.95

                                Pas besoin de print

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  30 novembre 2020 à 10:20:18

                                  xavierdominique a écrit:

                                  maintenant je comprend qu'est ce qu'il veux

                                  voilà le prg qu'il veut:

                                  def ma_fonction(v):
                                      
                                      if v<100:
                                          return "".join(["",str(v-5) ])
                                      else:
                                          return "".join([str(v*0.95) ])
                                  # print(ma_fonction(int(input("Quelle est la vitesse relevée?"))))
                                  print(ma_fonction(50))

                                  Non, il ne faut pas retourner une chaîne de caractères. Les messages d'erreur sont clairs :

                                  En testant les valeurs 110 le résultat obtenu
                                  est La vitesse est de 104.5 au lieu de 104.5

                                  Ce n'est pas clair ? Alors je mets des accolades autour des résultats :

                                  En testant les valeurs 110 le résultat obtenu
                                  est {La vitesse est de 104.5} au lieu de {104.5}

                                  Bref, il ne faut pas retourner la chaîne "La vitesse est de 104.5" mais le nombre 104.5.

                                  -
                                  Edité par robun 30 novembre 2020 à 10:22:00

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    30 novembre 2020 à 11:21:30

                                    À la lecture des différents sujets postés par xavierdominique je pense qu'il est plus qu'inutile (et contre-productif) de donner des solutions clefs en main. Il va simplement continuer d'avancer dans son cours et vous lui ferez tous ses exercices, il n'aura rien appris.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      30 novembre 2020 à 11:25:45

                                      entwanne a écrit:

                                      À la lecture des différents sujets postés par xavierdominique je pense qu'il est plus qu'inutile (et contre-productif) de donner des solutions clefs en main. Il va simplement continuer d'avancer dans son cours et vous lui ferez tous ses exercices, il n'aura rien appris.


                                      + 1
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        30 novembre 2020 à 12:15:32

                                        def ma_fonction(v):
                                            return v - 5*(v<100)-(v>=100)*5*v/100
                                        Oops!
                                        En testant les valeurs 60 le résultat obtenu est 55.0 au lieu de 55
                                        ...

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 novembre 2020 à 12:21:20

                                          x)

                                          Ya min sinon :

                                          def ma_fonction(v):
                                              return min(v - 5, v * 0.95)



                                          -
                                          Edité par thelinekioubeur 30 novembre 2020 à 12:23:08

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            30 novembre 2020 à 17:22:28

                                            thelinekioubeur a écrit:

                                            x)

                                            Ya min sinon :

                                            def ma_fonction(v):
                                                return min(v - 5, v * 0.95)

                                            Fonction affine par morceaux, bien vu. Juste que pour passer leurs «tests» il faut écrire min(v * 0.95, v - 5). Autre solution :

                                            def ma_fonction(v):
                                                return v-5*(v>=100 and v/100 or 1) 



                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              30 novembre 2020 à 17:50:25

                                              OK, mon commentaire est stupide au sujet d'une vitesse de 5 km/h ou moins.
                                              Puisque le PO est censé être en apprentissage, il devrait considérer tous les cas.
                                              Reste à savoir si le site ferait un test avec une valeur inférieure à 5.
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Le Tout est souvent plus grand que la somme de ses parties.

                                                30 novembre 2020 à 18:46:22

                                                Si les gendarmes contrôlent une voiture qui roule à 3 km/h, le radar leur indiquera -2 km/s, eh ben peu importe du moment que c'est en-dessous de la vitesse limite. Donc à mon avis il n'est pas nécessaire de traiter ce cas particulier.
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  1 décembre 2020 à 1:49:38

                                                  Dans la pratique, je peux même marcher à 5 km/h. Ce n'était pas le propos.
                                                  Je voulais souligner que, dans un algorithme, il faut essayer de vérifier les cas limites.
                                                  Et le site est capable de distinguer entre '104.5' et 104.5 sans les apostrophes.
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Le Tout est souvent plus grand que la somme de ses parties.

                                                  autorisé au lieu de 104.5 au lieu de 104.5

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                  • Editeur
                                                  • Markdown