Devoir sur Python

Résolu/Fermé
k.by78 Messages postés 3 Date d'inscription mercredi 1 février 2023 Statut Membre Dernière intervention 2 février 2023 - Modifié le 3 févr. 2023 à 14:55
 k.by78 - 4 févr. 2023 à 00:09

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...

A voir également:

6 réponses

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
k.by78 Messages postés 3 Date d'inscription mercredi 1 février 2023 Statut Membre Dernière intervention 2 février 2023
Modifié le 3 févr. 2023 à 14:59

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

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

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

J'ai bien peur de devoir te renvoyer vers ton cours de Python.
Si tu ne connais pas l'indentation, tu ne pourras pas aller très loin.

0
k.by78 Messages postés 3 Date d'inscription mercredi 1 février 2023 Statut Membre Dernière intervention 2 février 2023
2 févr. 2023 à 12:10

je n'ai pas de cours sur ceci

0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168 > k.by78 Messages postés 3 Date d'inscription mercredi 1 février 2023 Statut Membre Dernière intervention 2 février 2023
2 févr. 2023 à 13:13
1
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
2 févr. 2023 à 12:41

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
Whismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 919
2 févr. 2023 à 12:42

Ps pour poster tes codes, il faut faire comme décrit là 

https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

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
mamiemando Messages postés 33284 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 25 septembre 2024 7 787
3 févr. 2023 à 16:16

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

Merci beaucoup 

0