Inscription / Connexion Nouveau Sujet
Niveau seconde
Partager :

algorithme edupython

Posté par
melanie33
25-12-18 à 18:52

bonjour est ce quelqu'un  pourrait m'aider pour cet exercice :

Voici le sujet :
D'après un arrêté du 4 juin 2009, une marge d'erreur doit être déduite de la vitesse enregistrée sur un radar.Sont déduits, lors d'un contrôle de vitesse :
- 5 km.h-1 pour un radar à poste fixe jusqu'à 100 km.h-1
- 5% de la vitesse au delà.

Questions :

a) Ecrire un algorithme qui affiche la vitesse retenue après avoir saisi en entrée la vitesse enregistrée pas le radar

b) Améliorer l'algorithme précédent de façon à ce qu'il indique s'il y a infraction ou non au code de la route après avoir saisi la vitesse maximale autorisée.

voici mes recherches :

A)  from math import*
vitesse = x
if x>=100:
    x=5-x
else:
    x= x-("1/20")-x
print(x)

Posté par
melanie33
re : algorithme edupython 25-12-18 à 18:57

meme si cette exercice a déjà été posté par quelqu'un le mien n'est pas le meme car il faut utiliser edupython. Voila pourquoi je me suis permise de faire un nouveau post !

Posté par
mathafou Moderateur
re : algorithme edupython 25-12-18 à 19:20

Bonjour,

après avoir saisi en entrée la vitesse
cela n'apparait nulle part dans ce que tu as écrit
EduPython c'est du Python dans lequel on a ajouté des "gadgets" pour simplifier la vie (et prendre éventuellement de mauvaises habitudes) !

ton expression x-("1/20")-x ne rime à rien
ni mathématiquement ni dans le langage Python (qui à cet égard est totalement identique à EduPython) ni dans aucun autre langage.

faudrait peut-être savoir comment mathématiquement on écrit une diminution de 5% !!

Posté par
mathafou Moderateur
re : algorithme edupython 25-12-18 à 19:25

et puis quel que soit le langage utilisé tu penses que retrancher 5km/h de la vitesse x c'est calculer 5 km/h moins x ??

et relire l'énoncé !!
ces 5 là on le retranche dans quel cas ??

Posté par
melanie33
re : algorithme edupython 26-12-18 à 10:26

c'est 5% de la vitesse enregistrée au delà de 100 km/h

Posté par
melanie33
re : algorithme edupython 26-12-18 à 10:42

j'ai modifié mon algorithme:
if V>100
V= 0.95*V
else:
    V=V-5
if V<Vmax
print("OK pas d'infraction")
else:
print("vous êtes en infraction de")
print(V-Vmax)
print("km")

Posté par
mathafou Moderateur
re : algorithme edupython 26-12-18 à 11:08

OK, mais il manque toujours l'entrée de V
(un truc avec input, voir la doc)
et même aussi l'entrée de Vmax

Posté par
melanie33
re : algorithme edupython 26-12-18 à 11:14

int(input("Entrer V")
if V>100
V= 0.95*V
else:
    V=V-5
int(input("Entrer Vmax")
if V<Vmax
print("OK pas d'infraction")
else:
print("vous êtes en infraction de")
print(V-Vmax)
print("km")

est-ce correct ou pas ?

Posté par
melanie33
re : algorithme edupython 26-12-18 à 11:17

par contre je ne comprends pas parce que quand je veux exécuter le programme edupython me dit qu'il y a une erreur dans la ligne :
else:

mais laquelle?

Posté par
melanie33
re : algorithme edupython 26-12-18 à 11:18

voila une capture d'écran ce sera peut etre plus simple.

algorithme edupython

Posté par
mathafou Moderateur
re : algorithme edupython 26-12-18 à 11:53

tu as une erreur sur les if, au moins l'indentation et ifV en un seul mot ça ne va pas
et vérifier les histoires de ':'
il ne me semble pas cohérent d'en mettre sur le else et pas sur le if (à vérifier dans la doc, je ne l'ai pas sous la main car pas chez moi)
en tout ca s'il ne comprend pas le 1er if, ça lui fait dire que le else qui suit est incongru (un else sans if ??)

nota ta capture d'écran n'est pas lisible, mais c'est quoi ces "LF" ??

Posté par
melanie33
re : algorithme edupython 28-12-18 à 21:53

bonjour j'ai trouvé la réponse de la question A.
v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
        v_retenue = v_radar - 5
else:
        v_retenue = v_radar * 95 / 100

print(v_retenue)

Posté par
melanie33
re : algorithme edupython 28-12-18 à 21:55

Mais j'ai vraiment besoin d'aide pour la question B...
Pouvez vous m'expliquez cette question voilà mon début si vous pouvez me dire ce qu'il manque :

v_max = int(input("entrer la vitesse :"))
if v_max <=100 :
    v_retenue = infraction
print("infraction_code")

Posté par
mathafou Moderateur
re : algorithme edupython 28-12-18 à 22:20

Ok pour la question a)

question b) : ça ne rime pas à grand chose ...

v_retenue c'est à partir de v_radar pas de v_max !

la solution c'est de reprendre exactement ce que tu as fait dans le programme précédent et de le complèter par :
une demande de v_max
la comparaison de v_max avec v_retenue
("100" n'a plus rien à faire là dedans et v_retenue c'est le programme d'avant sans en changer une virgule)
et selon le résultat de ce test :
sortir un message en clair : "infraction au code de la route" et pas un truc qui ressemble à des noms de variables avec des "_"

Posté par
melanie33
re : algorithme edupython 29-12-18 à 09:34

j'ai une question: la vitesse max on la connait c'est 100 non ?

Posté par
melanie33
re : algorithme edupython 29-12-18 à 09:45

je suis désolée mais je n'y arrive pas...
je ne dois pas changer cet algorithme
v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
        v_retenue = v_radar - 5
else:
        v_retenue = v_radar * 95 / 100

print(v_retenue)

Posté par
melanie33
re : algorithme edupython 29-12-18 à 10:14

J'ai une autre question dans l'an question on a plus besoin de v_radar

Posté par
mathafou Moderateur
re : algorithme edupython 29-12-18 à 10:15

ça c'est le début du nouvel algorithme ...

la vitesse max on la connait c'est 100 non ?
non on ne la connait pas c'est une nouvelle entrée du programme, en plus de la vitesse mesurée (radar). (lire l'énoncé !!)
il y aura deux "input" :
la vitesse mesurée
et la vitesse max


100 c'est la règle pour modifier la vitesse mesurée, quelle que soit la vitesse autorisée
la vitesse max c'est 30, 50, 70, 80, 90, 110, 130 etc km/h selon les endroits .
ça n'a rien à voir avec la règle de calcul de la vitesse retenue

exemple
le radar mesure une vitesse de 90 km/h
comme c'est inférieur à 100 la vitesse retenue est 90-5 = 85 km/h
or on est sur une portion limitée à 110 km/h
donc 85 < 110, c'est bon

si avec exactement la même mesure de 90km/h (donc la vitesse retenue toujours = 85km/h) on était sur une portion limitée à 80km/h
85 > 80, il y a infraction.

le programme complet sera donc :

v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
v_retenue = v_radar - 5
else:
v_retenue = v_radar * 95 / 100
v_max = int(input(...
if ...

Posté par
melanie33
re : algorithme edupython 29-12-18 à 10:41

v_max=int(input(”entrer la vitesse maximale autorisée: "))
If v_max>=100
          v_retenue = v_max- 5

Est ce que pour le moment c'est bon ?

Posté par
mathafou Moderateur
re : algorithme edupython 29-12-18 à 11:02

NON

tu n'as toujours pas compris le code de la route

v_max=int(input(”entrer la vitesse maximale autorisée: "))
If v_retenue > vmax :
// infraction
else:
// OK


et v_retenue c'est ce qu'on a calculé avant (par le 1er programme) en fonction de la vitesse mesurée par le radar.


donc ce nouveau morceau là il est à ajouter après le 1er.
c'est à dire ce que je t'ai écrit :

Citation :
le programme complet sera donc :

v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
v_retenue = v_radar - 5
else:
v_retenue = v_radar * 95 / 100
v_max = int(input(...
if ...

Posté par
melanie33
re : algorithme edupython 29-12-18 à 11:18

v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
        v_retenue = v_radar - 5
else:
        v_retenue = v_radar * 95 / 100
v_max = int(input(«”entrer la vitesse maximale autorisée"))
If v_retenue>v_max:
Print (infraction)
else:
Print(pas d'infraction)

Est-ce possible comme ca ?

Posté par
mathafou Moderateur
re : algorithme edupython 29-12-18 à 11:32

avec les bonnes indentations et une écriture correcte des Print, oui
et c'est ce qu'on demandait

pour savoir combien de points on retire ou si carrément le permis est retiré, il faut connaitre de combien on dépasse
en cas d'infraction le dépassement de la vitesse autorisée est v_retenue - v_max, afficher cette valeur.

Posté par
melanie33
re : algorithme edupython 29-12-18 à 11:54

D'accord donc ça veut dire que je dois poursuivre l'algorithme ?

Posté par
mathafou Moderateur
re : algorithme edupython 29-12-18 à 12:09

tu dois déja surtout corriger les erreurs d'écriture signalées !

ensuite tu peux améliorer en écrivant par exemple en cas d'infraction des messages du genre :
infraction : vous dépassez la vitesse autorisée de ... km/h
ou bien
infraction ; la vitesse retenue est de ...km/h pour une vitesse autorisée de ...km/h

au lieu de juste "infraction et basta"

(ça te fera travailler un peu sur les bonnes façons d'écrire des Print et la différence entre texte et variables dans ces Print)

Posté par
melanie33
re : algorithme edupython 29-12-18 à 17:30

v_radar = int(input("entrer la vitesse : "))
if v_radar <= 100 :
        v_retenue = v_radar - 5
else:
        v_retenue = v_radar * 95 / 100
v_max = int(input(”entrer la vitesse maximale autorisée"))
If v_retenue>v_max:
Print (infraction_vitesse_dépassée)
else:
Print(pas_d'infraction_vitesse_respectée)

voilà j'ai améliorée les lignes print,je trouve ça pas mal ainsi...

Posté par
melanie33
re : algorithme edupython 29-12-18 à 17:34

il y a juste une chose que je ne comprends pas c'est pourquoi j'ai des lignes fausses...
Pouvez-vous me dire pourquoi ?

Posté par
melanie33
re : algorithme edupython 29-12-18 à 17:43

c'est bon le problème est résolu, merci

Posté par
mathafou Moderateur
re : algorithme edupython 29-12-18 à 17:53

j'allais répondre :

Citation :
(ça te fera travailler un peu sur les bonnes façons d'écrire des Print et la différence entre texte et variables dans ces Print)
visiblement tu n'avais pas compris ça !

Print (infraction_vitesse_dépassée)

veut dire imprimer le contenu de la variable infraction_vitesse_dépassée
qui n'est pas définie (et donc une erreur) et qui ne contient donc rien du tout
en particulier certainement pas le texte "infraction_vitesse_dépassée"
(texte dans lequel il n'y aurait aucune raison de mettre des _ au lieu de simples espaces d'ailleurs)

mais apparemment tu as vu maintenant

pour mélanger du texte et des variables :
print("infraction : vous rouliez à",v_retenue,"km/h dans une zone limitée à",v_max,"km/h")



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !