Devoir sur Python

Résolu

Bonjour,

J'ai un projet à écrire en python. Voici les consignes:

Pour gérer facilement les inscriptions, il vous a été demandé que les tickets soient gérés informatiquement. Fort heureusement, dans votre entreprise aux profils divers une personne sait créer un petit menu de saisie en ligne de commande : vous...


Le commanditaire a demandé que

  • les spectateur.ice.s au concert saisissent
    •  leur nom, puis leur prénom (séparément)
    • leur âge (en années)
    • le tarif de la place (classique : 20 $ ou vip 200 $)
  • Sera ensuite affiché à l'écran un récapitulatif :
    • Une ligne avec le nom et prénom de la personne suivi de son année de naissance, séparés par des espaces
    • Une ligne avec le type de ticket acheté suivi du prix.
    • étrangement, le commanditaire souhaite faire ristourne de 50% aux personnes qui s’appellent "Alix". Cela doit rester une surprise jusqu'au moment de leurs commande ! Il faudra donc écrire une exception dans le code quelque part...
  • (2 points) Attention aux cas particuliers !

Pour faciliter l'organisation, le commanditaire a demandé s'il est possible de faire apparaître un numéro de commande généré aléatoirement composé d'un entier suivi de l'année de naissance sur l'écran.
  
Le commanditaire a parlé d'un truc futuriste appelé emoji. Il a demandé s'il était possible d'afficher en haut et bas du récapitulatif une ligne composée de chat ou de chien.

Si quelqu'un pourrait m'aider je suis perdue...

6 réponses

  1. Comment le ferais-tu si tu n'avais rien de spécial à ajouter? (code aléatoire, truc pour Alix, emoji)
    Dans quoi placerais-tu tes informations? (plusieurs possibilités)

    0
    1. J'ai commencé mon programme ça

      nom = input("Votre nom:")
      prénom = input("Votre prénom:")
      age = int(input("Votre année de naissance:"))
      ticket = input("Souhaitez-vous un ticket classic ou vip?")
      print("Nom:", nom, "Prénom:", prénom, "Âge:", age)

      Je ne sais pas si c'est un bon début ensuite pour Alix je suppose qu'il faut utiliser la fonction if mais j'ai du mal à comprendre comment l'utiliser et ensuite pour les emoji aucune idée.

      0
  2. les spectateur.ice.s au concert saisissent

    C'est au pluriel ... Saurais-tu faire une boucle ?

    Pour les tickets, comment vérifie-t-on que c'est "classique" ou "vip" ?

    C'est le même principe que pour le prénom "Alix".

    if variable == chaine:
        # faire quelque chose.
    if prenom == "Alix":
        # Changer le tarif.

    As-tu compris le principe de l'indentation en Python ?

    0
    1. Non je n’ai pas appris à faire une boucle et quel est le principe de l’identation pouvez-vous m’expliquer s’il vous plaît 

      0
  3. Bonjour 

    un tel exercice ne peut pas être réalisé sans avoir vue les if et les boucles (while et/ou for)

    Par exemple

    if truc == machin:
        print("Ma condition est OK!")


    On voit un décalage de la ligne (ou des lignes) exécutée(s) par le if, l'indentation c'est le décalage.

    Toute la syntaxe de Python repose sur la bonne gestion de l'indentation.


    0
    1. Bonjour,

      si je savais le faire je ne demanderai pas de l’aide sur un forum j’ai passé 3 heures à essayer de réfléchir et comprendre mais je n’y arrive pas 

      0
  4. Comme Phil_1857 l'a mentionné, tu aurais intérêt à suivre un bon cours.
    Sinon, on ne va pas te donner le cours en pièces détachées.

    0
    1. Modérateur

      Bonjour,

      Il existe de nombreux cours de python gratuits en ligne, par exemple celui-ci.

      L'indentation

      L'indentation est déterminée par le nombre d'espace / tabulation écrits en début de ligne. Cela permet de savoir où une bloc de code commande et s'arrête. Par exemple ces deux codes se comportent différemment :

      my_variable = ...
      if my_variable == True:
          print("hello")
      print("x =", x)

      (ici le 2e print est toujours exécuté, le premier dépend de la valeur de my_variable)

      my_variable = ...
      if my_variable == True:
          print("hello")
          print("x =", x)

      (ici les print ne sont exécutés que si my_variable vaut True.

      Les boucles

      Les boucles permettent de répéter une série d'instructions. En python, les deux instructions permettant de faire des boucles sont for et while. for nécessite de pouvoir itérer quelque chose de borné (par exemple une plage d'entiers). C'est le type de boucle qu'on privilégie car on sait qu'elle finira par s'arrêter. while permet de répéter un série d'instruction étant donné un test arbitraire, mais il faut s'assurer que ce test finira par être faux, sans quoi le while bouclera à l'infini.

      Voici deux exemples :

      for i in range(5):
          print("i =", i)
      
      j = 0
      while j < 5:
          print("j =", j)
          j += 1

      Dans ton cas, le plus simple serait sans doute de commencer par demander le nombre de spectateurs/spectatrices à l'utilisateur et de demander les informations de chaque personne dans une boucle for.

      Par rapport au code #2, je te déconseille d'utiliser des caractères spéciaux (e.g. des caractères accentués comme dans prénom) dans tes noms de variables.

      Les classes

      Tu as sans doute intérêt à écrire une classe qui va encapsuler les informations de l'utilisateur et te permettre de réaliser des opérations dessus. Ainsi tu pourrais construire une liste de spectateur. Si tu ne veux pas utiliser de classes, tu peux utiliser une liste de tuples (qui rassemble les attributs d'un spectateurs : prénom, âge, ...).

      class Spectateur:
          def __init__(self, prenom, nom, age, ticket):
              self.prenom = prenom
              self.nom = nom
              self.age = age
              self.ticket = ticket
          def __str__(self):
              return repr(self)
          def __repr__(self):
              return f"Spectateur<{self.prenom}, {self.nom}, {self.age}, {self.ticket}>"
      
      spectateur1 = Spectateur("John", "Doe", 33, "vip")
      print(spectateur1) # Affiche "Spectateur<John, Doe, 33, vip>"

      Note que la méthode __repr__ (resp. __str__) est appelée quand tu utilises la fonction repr(spectateur) (resp. str(spectateur)). On utilise à l'intérieur de __repr__ la notion de f-string.

      Partant de là, tu pourrais faire une fonction qui demande la saisie d'un spectateur.

      def prompt_spectateur():
          nom = input("Votre nom : ")
          prenom = input("Votre prénom : ")
          age = int(input("Votre année de naissance : "))
          ticket = input("Souhaitez-vous un ticket classic ou vip ? ")
          return Spectateur(prenom, nom, age, ticket)
      
      spectateur2 = prompt_spectateur()
      print(spectateur2)

      ... puis l'utiliser dans une boucle :

      n = int(input("Nombre de spectateurs ?"))
      spectateurs = list()
      for i in range(n):
          print(f"Spectateur {i+1}/{n}:")
          spectateur = prompt_spectateur()
          spectateurs.append(spectateur)
      print(spectateurs)

      Avec ça tu as un petit aperçu des classes, des boucles, et de ce que tu pourrais faire.

      Bonne chance

      0
      1. Merci beaucoup 

        0