Exercice Python probléme de type

Bonjour,

J'ai un probléme avec un de mes exercices Python sur le tuto de "https://python.developpez.com/".
Alors voilà mon exercice :
6.1. Écrivez un programme qui convertisse en mètres par seconde et en km/h une vitesse fournie par l'utilisateur en miles/heure. (Rappel : 1 mile = 1609 mètres)

On me dit aussi d'utiliser la fonction raw_input() dans tous mes exos.

Si on ne saisi qu'un nombre, tout va bien : je fait x = int(), et tout est réglé. Cependant si on choisis des lettres (pour faire buger le programme ou autre...), alors tout foire...
Mon probléme est donc simple : comment faire pour eviter cela ?

Pouvez vous m'aider ?

Merci d'avance de me mettre sur la piste :)
Cordialement,
Sayu
--
Sayu -UOFF 62-
Sayu : Mac OS 10,5 / Linux XANDROS / iPod 16 Go Version 2,2
Configuration: Mac OS X 10,5
Linux Xandros sur eeepc en mode expert & emulateur linux sur Mac
Ipod Touch 16 GB
Routeur Neuf 100MB/s en debit maximal descendant, 50MB/s en debit montant
Connaissances en PC (installation de Windows XP)

5 réponses

  1. Si tu ne nous montres pas ce que tu as fait, je crains que tu n'aies pas de réponse. En effet nous ne sommes pas là pour faire l'exercice à ta place mais pour t'aider à le faire.
    Bonne continuation.
    1. Salut,

      voici une piste (J'ai fait vite fait faut que je parte manger :))) :

      #! /usr/bin/env python
      accepted = ['0','1','2','3','4','5','6','7','8','9']
      while 1:
              speed = raw_input("domme moi un vitesse : ")
              if len(speed):
                      for i in range(len(speed)):
                              if speed[i] not in accepted:
                                      print 'ERROR : j\'ai besoin de chiffres'
                                      break
                      print "%s est un nombre" % speed
                      break
              else:
                      print 'pffff, tape un truc copain'
      
      1. Je n'ai pas vu la moitié de ce que vous me proposer ^^

        Cependant, vous m'avez mis sur une bonne piste : (je vous le code à ma maniére...)
        J'ai essayé mais cela ne marche pas :x
        EDIT Si cela marche :) quelques erreurs réctifiées : les valeur en nombre de la variable list doivent etre entre ""
        Et quelques erreurs de boucles infinies réglées :)

        # Variables
        #######
        
        list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, "."] #Liste de caractéres acceptés
        c1, c2 = 0, 0                                    # compteurs
        b1, b2 = 0, 0                                     # valeurs len()
        boolean1, boolean2 = 1, 1         # variables de véritée
        miles, result = 0, 0                   # initialisation de variables diverses
        
        # Fonctions
        #######
        
        # Aucune fonctions
        
        # Script
        #####
        
        miles = raw_input("Veuillez entrer un nombre SVP :")
        b1 = len(miles)
        b2 = len(list)
        
        # Test de la valeur de miles
        while boolean1:
            if (boolean2 == 1):
                while (c1<b1):          # caractére a tester
                    c2 = 0
                    while (c2<b2):      # test du caractére
                        if (list[c2] == miles[c1]):
                            c2 = c2 + b2
                            c1 = c1 + 1
                            print "caractére", c2, "ok"
                        elif (c2 == b2 - 1):
                            print "error : Une partie de la chaine n'a pas été saisie en nombre !"
                            c2 = c2 + b2 # interuption de la boucle
                            c1 = c1 + b1
                            boolean2 = 0
                        else:
                            c2 = c2 + 1
            elif boolean2 == 0:
                miles = raw_input("Veuillez entrer une valeur VALIDE SVP :")
                boolean2 = boolean2 + 1
                c1, c2 = 0,0
            elif c1 == b1:
                print "La valeur choisie à été accepté par l'application."
                boolean1 = 0
                
        
        1. C'est bon absolument tous mes problémes ont été résolus !
          Merci de m'avoir mis sur la piste !!

          Je m'excuse loupios, je n'avais pas vu ton message :$ Mais cela a été fait dans mon optique : juste une piste :) Ensuite je l'ai fais à ma maniére qui est un peu... un peu... lourde ^^"

          Cordialement,