Tarifs dégressifs (algorithme France ioi) [Résolu]

- - Dernière réponse : jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
- 1 août 2018 à 22:14
Bonjour,

Voici l'énoncé:
L'auberge dans laquelle vous avez prévu de passer la nuit ce soir propose des tarifs très intéressants, pour peu que l'on n'arrive pas trop tard. En effet, plus on arrive tôt moins on devra payer. Vous essayez de construire un programme vous donnant directement le prix à payer en fonction de votre heure d'arrivée.
Ce que doit faire votre programme :

Votre programme lira un entier, l'heure d'arrivée, qui sera compris entre 0 et 12 inclus. 0 correspond à midi, 1 à 1h de l'après-midi, etc. et 12 à minuit.

Le prix de la chambre est de 10 pièces à midi, et augmente de 5 pièces chaque heure après midi. Il est donc de 15 pièces à 13h, etc. Il ne peut cependant pas dépasser 53 pièces.

Votre programme devra afficher le prix à payer correspondant à l'heure d'arrivée donnée.

Exemple 1
entrée :
7
sortie :
45

Exemple 2
entrée :
10
sortie :
53

MON CODE:

heureArrivee = int(input())
prixChambre = 10
for loop in range(heureArrivee):
      heureArrivee += 1
      prixChambre += 5
print(prixChambre)



Je suis bloquée car je ne sais pas comment introduire l'intervalle de 0 à 12. Faut-il que j'utilise le
if 0 <= heureArrivee <= 12 ? Je ne sais jamais s'il faut que j'utilise "For loop in range" ou le "if"
Qu'est-ce qui cloche dans mon code selon vous ?

Merci :-)
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
1
Merci
Bonsoir
Il y a plusieurs algorithmes possibles.

Comment le ferais tu en mode « recette »?

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Demander heure d'arrivée
Affecter 10 au prix de la chambre
Si l'heure d'arrivée est compris entre 1 et 10
le prix de la chambre augmente de 5 euros à chaque heure
Afficher le prix de la chambre
Commenter la réponse de Whismeril
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
1
Merci
Bonjour
Nul besoin de boucle
Pour cette exercice il suffit d'un bloc conditionnel if else et d'une simple operation mathématique
Dis toi que
Prix = 10 + h*5

H etant l'heure d'arrivée entre 0 et 12
Et que le max est de 53.

.si tu entres 7 le resultat sera
10 + 7*5 = 45

Si tu entres 10 ca fera
10 + 10*5 = 60... donc max => 53

C'est franchement simple comme logique... désolé..mais j'ai du mal a comprendre que tu puisse rencontrer des difficultés...

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Dis que je suis débile ça ira plus vite....
Commenter la réponse de jordane45
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
1
Merci
Je ne te demande pas de réécrire l’énoncé, mais de décrire en français comment y répondre.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Je veux savoir le prix de la chambre en fonction de l'heure à laquelle j'arrive à l'auberge
Commenter la réponse de Whismeril
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
0
Merci
Ta recette ne tient pas compte du max, ni du 0 à 12.
Et tu n’as pas choisi l’option la plus simple.

La méthode de Jordane, même si elle n’interdit de saisir 13, est plus simple.
Tu verras que dans la vie, la soultion la plus simple est souvent la meilleur.
Mais ça n’est pas pour ça qu’elle saute aux yeux.
Surtout, si dans ton cours tu en es aux boucles for, alors c’est à ça que tu penses en premier.

Tu n’as pas encore le niveau pour qu’un algorithme te vienne de A à Z en python. C’est pourquoi, je t’ai demandé de le formuler en français.

Donc toujours en français comment faire pour n’autoriser la saisie de que 0 à 12?

Pour un compteur allant de 0 à nombre 12 ?
jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
> Kams31 -
Je sais qu'en disant ceci je vais te paraître très désagréable et je m'en excuse...
Car je ne dis pas que tu es débile.... mais dans mon message précédent je t'ai indiqué que les boucles n'étaient pas nécessaires.... et qu'il fallait utiliser un bloc conditionnel....
Avoue que de reparler encore une fois d'un compteur fait un peu tâche....
Avant de vouloir écrire du code il faut comprendre la "logique". c'est ce que Whism essaye de te faire faire....
Donc n'essaye pas d'aller trop vite. prends un peu de temps pour essayer d'analyser/comprendre le fonctionnement....
Whismeril
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
-
Non, si je rentre 15 ça doit le refuser, et me redemander.
Commenter la réponse de Whismeril
0
Merci
il faut que le prixChambre soit inférieur à 12 ?
> jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
-
heureArrivee = int(input())
prixChambre = 10
if 0 < heureArrivee < 12 : 
   prixChambre += heureArrivee * 5
if prixChambre >= 53:

print(prixChambre)
jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
> Kams31 -
.... on va faire autrement
Peux tu, pour chaque étape que je vais te lister, mettre le code correspondant ? (je fais le début je te laisse finir )
Je demande à l'utilisateur d'entrer son heure d'arrivée
heureArrivee = int(input())


Je vérifie si l'heure d'arrivée est bien entre 0 et 12
if 0 < heureArrivee <= 12 : 

Si oui ...
Je fais le calcul ( prix = ..... )
     prixChambre = 10 + heureArrivee * 5

Je vérifie SI le prix est supérieux ou égal à XX
Si Le prix est supérieur à XX alors je force le prix à XX
    if prixChambre >= 53:
        //ici je te laisse compléter


Si non ( pas la bonne heure) (l'heure d'arrivée est inférieur à 0 ou supérieur à 12 )
else:
    //ici je te laisse compléter



Le code est fait à 90% ... il ne te reste que deux lignes de code à compléter....
Tu devrais y parvenir cette fois....

Si ce n'est pas le cas, arrête de coder et va lire des TUTOS / COURS sur la programmation Python
par exemple : http://apprendre-python.com/page-apprendre-conditions-structures-conditionnelles-if-else-python-cours-debutant

Et surtout..... avant de continuer dans tes exercices, va prendre des leçons sur l'algorithmie....
Sans cette connaissance il est (presque) normal que tu galères autant....
Si tu n'as aucune logique, et que tu n'es pas capable de reformuler (ou de formuler tout simplement) le "fonctionnement" attendu du code en français (avec des phrases et pas seulement copier/coller l’énoncé qui t'a été donné.... ) ça ne sert à rien d'aller plus loin.
Si tu es capable de reformuler la demande correctement en expliquant étape par étape comme va fonctionner ton code... tu as déjà réalisé 80% du boulot. Le reste n'étant que la recherche (si nécessaire) des bonnes instructions et de leur syntaxe dans les manuels ou sur le net.

Je rappel qu'ici nous sommes là pour AIDER. pas pour réaliser le travail à ta place.
Copier/coller bêtement des lignes de code ( prises ici ou ailleurs sur le net) sans en comprendre la moindre instruction ne sert strictement à rien.

Courage.... l'apprentissage n'est pas toujours très facile. Ça dépend des capacités et de la volonté de chacun.... mais si on s'en donne la peine on fini toujours par y arriver.
jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
> jordane45
Messages postés
23643
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
18 décembre 2018
-
Bien entendu, d'autres solutions existent.
Par exemple
- Tant que l'utilisateur ne saisi pas une heure d'arrivée valide ( c'est à dire, comprise entre 0 et 12 inclus ), le programme demande d'entrer l'heure d'arrivée.
pour ça, tu peux utiliser une boucle WHILE
Ci-dessous un exemple d'utilisation

name = "pasbon"

while name!= "kams":
    name = raw_input("Quel est ton pseudo ? ")

    if name == "kams":
        print "bravo"
    else:
       print "re-essaye"


Puis, dans le IF, placer le code qui effectue le calcul comme dans ce que je t'ai donné dans mon précédent message
Votre programme lira un entier, l'heure d'arrivée, qui sera compris entre 0 et 12 inclus:
- Demander heure d'arrivée

Le prix de la chambre est de 10 pièces à midi
- Affecter 10 au prix de la chambre

Il augmente de 5 pièces chaque heure
- Prix de la chambre + 5

Afficher le prix à payer correspondant à l'heure d'arrivée donnée
-Afficher le prix de la chambre
Il ne peut cependant pas dépasser 53 pièces
- Prix de la chambre < 53
Commenter la réponse de Kams31
Messages postés
12415
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 décembre 2018
0
Merci
Je veux savoir le prix de la chambre en fonction de l'heure à laquelle j'arrive à l'auberge

Ça Jordane te l’as déjà expliqué, il te reste à faire en sorte que -1 ou 13 soit reconnus comme une saisie incorrecte.
ok, j'utilise le if pour rendre le -1 ou 13 incorrecte
heureArrivee = int(input())
prixChambre = 10
if 0 < heureArrivee < 12: 
  

C'est bien ça ?
Commenter la réponse de Whismeril

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.