jeux python devinette

a marqué ce sujet comme résolu.

Bonjour

Je ne trouve pas la soluton pour afficher un message d’erreur si l’utilisateur ne rentre pas une réponse correcte !

Voici mon code:

`import random

def Main():

	score_user = 0
	score_cpu = 0
	compteur = 0
	devinette = True
	while devinette:

			prenom = ['jeremy', 'lydia', 'guy', 'jonathan', 'johanna', 'vanessa', 'paméla']
			print("['jeremy', 'lydia', 'guy', 'jonathan', 'johanna', 'vanessa', 'paméla']")
			cpu = random.choice(prenom)
			user = str(input("Devine a quel prenom le pc pense? "))
			
			if user == cpu:
				print("Le PC a choisi:", cpu)
				print("Gagné !")
				score_user+=1
				compteur+=1
			elif user == 'fin':
				print("Fin du jeux !")
				print("Nombre de partie:", compteur)
				print("Tu as gagné", score_user, "fois!")
				print("Le PC a gagné", score_cpu, "fois!")
				quit()
			elif user != cpu:
				print("Le PC a choisi:", cpu)
				print("Perdu !")
				score_cpu+=1
				compteur+=1
			else:
				print("Choix invalide !")

if name == "main": Main()`

Merci d’avance pour vôtre aide

+0 -0

D’abord, tu n’as pas besoin de mettre str pour input(...) car cette fonction te retourne déjà une chaîne.

Quand tu lis une donnée, si je comprend bien, c’est une erreur si le prénom n’est pas dans la liste.

Il faut faire une boucle du genre:

    while True:
        user = input("Devine a quel prenom le pc pense? ")
        if user in prenom or user == "fin": break     # Est-ce que la chaîne est dans la liste?
        # Afficher le message d'erreur.
    if user == "fin":
        # Statistiques de fin.
    # Ici on vérifie si c'est pareil ...

Tu as appelé la fonction main(). Au lieu d’appeler quit(), ce serait mieux ici de faire un simple return.

Remarques:

  • La variable devinette ne te sert à rien en fait.

  • Tu pourrais définir ta liste prenomavant la boucle puisqu’elle ne change pas.

  • Je suppose que le print des prénoms est là pour des fins de test. Je te laisse trouver comment le simplifier.

  • Que l’usager gagne ou perde, tu affiches d’abord le choix du cpu. Pourquoi ne pas l’afficher une seule fois avant le test?

  • La variable compteur peut être incrémentée à un endroit plus judicieux.

+0 -0
> elif user == 'fin'

Exprimer qu’un utilisateur vaut fin dans un programme est assez incohérent avec la réalité. Mieux vaudrait exprimer qu’il n’y a pas d’utilisateur et que donc on termine le programme.

elif not user  # ou elif user is None

Je ne trouve pas la soluton pour afficher un message d’erreur si l’utilisateur ne rentre pas une réponse correcte !

Quelle soit incorrecte et dans la liste ou pas dans la liste, elle reste incorrecte, non ?

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte