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
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.
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.
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.
"Ç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
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
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))
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
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
À 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.
À 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.
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.
Le Tout est souvent plus grand que la somme de ses parties.
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.
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.
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.
Découverte Python Doc Tkinter Les chaînes de caractères
PB68
Découverte Python Doc Tkinter Les chaînes de caractères
Le Tout est souvent plus grand que la somme de ses parties.
PB68
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
...
Découverte Python Doc Tkinter Les chaînes de caractères
Découverte Python Doc Tkinter Les chaînes de caractères
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.