securite.py

Created by schraf

Created on January 24, 2019

1.21 KB

Sécurité routière

Les « 0 » ci-dessous représentent des éléments de véhicules, par exemple « 000 » est un véhicule de longueur 3 (un camion) et « 0 » une petite voiture.

route = "==000==0==00=000==00=0000===00=====000===00=000====0=0====00===="

Les « = » représentent la route et on imagine que les véhicules se déplacent vers la droite. Donc sur la route ci-dessus on a à gauche un camion et devant lui une petite voiture etc.

  • Créez une fonction vehic qui admet une route en paramètre et donne en retour le nombre total de véhicules (camions et voitures)
  • Créez une fonction voit qui donne uniquement le nombre de voitures (C’est-dire un véhicule de longueur inférieure à 3)
  • Un véhicule est en infraction lorsque sa distance avec celui qui le précède est de seulement 1 « = ». Créez une fonction radar qui compte combien il y a d’infractions sur la route.
  • Créez une fonction simple qui simplifie l’écriture de la route sous la forme : “cvvcvcvcvcvvv” qui signifie camion – voiture – voiture… ?

Explications en vidéo


route = "==000==0==00=000==00=0000===00=====000===00=000====0=0====00===="

def vehic(route):
  return len(list(filter(lambda v: v!="",route.split("="))))
  
# Version 2

def vehicv2(route):
  separ = route.split("=")
  nb = 0
  for v in separ:
    if v!="" : nb+=1
  return nb

# Version 3

def vehicv3(route):
  return len([v for v in route.split("=") if v!=""])

def voit(route):
    return len(list(filter(lambda v: 0<len(v)<3,route.split("="))))

# Version 2

def voitv2(route):
  separ = route.split("=")
  nb = 0
  for v in separ:
    if 0<len(v)<3 : nb+=1
    # ou encore v=="0" or v=="00"
  return nb
  
# Version 3

def voitv3(route):
  return len([v for v in route.split("=") if 0<len(v)<3])

  
def radar(route):
  return len(list(filter(lambda v: v=="=",route.split("0"))))
  
# Version 2 

def radarv2(route):
  dist=route.split("0")
  nb = 0
  for v in dist:
    if v=="=" : nb+=1
    # ou encore len(v)==1
  return nb
  
def simple(route):
  vehic=list(filter(lambda v: v!="",route.split("=")))
  return "".join(map(lambda v: "v" if len(v)<3 else "c", vehic))
  
# Version 2

def simplev2(route):
  vehic = [v for v in route.split("=") if len(v)>0]
  return "".join(["v" if len(v)<3 else "c" for v in vehic])

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.