FORUM D’ENTRAIDE INFORMATIQUE (FEI)
Site d’assistance et de sécurité informatique

Problème débutant POO

Règles du forum : Entraide concernant la programmation informatique en général, tous langages : recherche ou correction d'un code ou d'une fonction, aide à la réalisation d'un projet...
Pour la programmation web (HTML, CSS, PHP, MySQL...), il est conseillé de s'orienter dans le forum Webmastering.
Merci de lire et de respecter la charte générale du forum.

Répondre

Afin d’empêcher la création automatisée de comptes, nous vous demandons de réussir le défi ci-contre.
Smileys
:D :) :-) ;) :| :( :cry: :cheers: :hourra: :mv: :lol: :mdr: :bonjour: :hello: :jap: :siffle: :bisou: :P :o :x :roll: :good: :bad: :super: :reflexion: :suspect: :? :oops: :peur: :zen: :boude: :bug:

Revue du sujet : Problème débutant POO Étendre la vue

Problème débutant POO

par SpookyAlexis » sam. 12 sept. 2020 15:45
Bonjour, je viens de commencer à apprendre la programmation orientée objet et je cherche à créer 2 classes simulant une voiture et un conducteur. Je code en Python 3.
Le but de l'exercice est de pouvoir accélérer ou décélérer du coté conducteur et que du coté voiture, si la vitesse dépasse la vitesse maximale autorisée (rentrée par l'utilisateur) , la voiture ne dépasse pas la vitesse max. Pareil si une vitesse est négative elle est ramenée à 0 (la voiture ne recule pas).
J'ai réussi à faire accélérer et décélérer la voiture à ma guise mais je n'arrive pas à limiter la vitesse de la voiture (grâce à la classe car). Je pense que mon erreur est toute bête mais je reste bloqué la dessus j'ai donc besoin de votre aide SVP.
Je joins ci-dessous ce que j'ai codé (les classes car et driver sont des fichiers différents du main).

car:
Code : Tout sélectionner
class car(object):
	def __init__(self,maxspeed,cspeed): #initialisation de la class car
		self.maxspeed=maxspeed   #affectation de la valeur de la vitesse max 
		self.cspeed=cspeed
	def accelerate(self): #fonction accelerate qui empêche la vitesse de la voiture de dépasser la vitesse maximale
		if self.cspeed>self.maxspeed :	#si la vitesse de la voiture insérée dans la focntion accelerate est > à la vitesse max on affecte la vitesse max à la voiture
			self.cspeed=self.maxspeed
	def decelerate(self): #fonction decelerate qui empêche la vitesse de la voiture d'être négative
		if self.cspeed<0 :	#si la vitesse de la voiture insérée dans la focntion accelerate est négative on affecte la vitesse 0 à la voiture
			self.cspeed=0		
	def retnspeed (self):	#retour de la valeur de la vitesse (avec restrictions)
		return self.cspeed		

driver:
Code : Tout sélectionner
class Driver(object):
	def __init__(self,Name,age,car,wspeed): #initialisation de la class driver
		self.Name=Name 	#affectation de la valeur nom du driver
		self.age=age	#affectation de la valeur  de l'age du driver
		self.car=car	#affectation de la valeur de la voiture du driver
		self.wspeed=wspeed #affectation de la valeur de la vitesse actuelle de la voiture
	def toHundred(self): #fonction pour augmenter la vitesse de 100
		self.wspeed+=100
	def dispSpeed(self): #fonction pour afficher la vitesse
		print(f"La vitesse actuelle est de {self.wspeed}")
	def userAcc(self):	#fonction pour augmenter la vitesse de 20
		self.wspeed+=20
	def userDec(self):	#fonction pour baisser la vitesse de 30
		self.wspeed+=-30
	def retspeed(self):	#fonction pour retourner la valeur de la vitesse 
		return self.wspeed
main:
Code : Tout sélectionner
from car import car  #on importe les classe nécessaire au programme
from driver import Driver

def main():
	cspeed=0	#initialisation de la vitesse de la voiture à 0
	print("Vitesse max :")	#demande vitesse max voulue
	vitessemax=int(input())
	print("Nom :") #demande nom
	nom=input()				
	print("Age:") #demande age
	age=input()
	print("Voiture:")	#demande voiture
	voiture=input()
	exit=2 #variable while
	Fdriver=Driver(nom,age,voiture,cspeed)#utilisation de la classe driver avec les infos récupérées (nom,age,voiture)
	Fcar=car(vitessemax,cspeed)			#utilisation de la classe car avec les infos récupérées (vitessemax)
	while(exit!=1):
		print("Pour accelerer de 100 taper 1")
		print("Pour montrer la vitesse taper 2")
		print("Pour accelerer de 20 taper 3")       #affichage menu choix 
		print("Pour decelerer de 30 taper 4")
		print("Pour quitter taper 5")
		print("")
		choix=int(input())
		if(choix==1):	#acceleration de 100
			Fdriver.toHundred()
			cspeed=Fdriver.retspeed()
			cspeed=Fcar.accelerate()
			cspeed=Fcar.retnspeed()
		if(choix==2):	#montrer la vitesse
			Fdriver.dispSpeed()
		if(choix==3):	#accelerer de 20
			Fdriver.userAcc()
			cspeed=Fdriver.retspeed()
			Fcar.accelerate()
			cspeed=Fcar.retnspeed()
		if(choix==4):	#decelerer de 30
			Fdriver.userDec()
			cspeed=Fdriver.retspeed()
			Fcar.decelerate()
			cspeed=Fcar.retnspeed()
		if(choix==5):	#quitter
			exit=1


if __name__ == '__main__':	#lancement programme
    main()

Salut j'ai un portable toshiba satellite Pro R50 C[…]

Tiktok Account for Sale

Thank you

I place great importance on seeking out advice to […]

Do you like reading books?

Occasionally, these offers can give significant be[…]