Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur non comprise

    23 juillet 2017 à 21:36:46

    Bonjour a tous, j'ai suivi le cours Démarrez votre projet avec Python , mais arrivé a l'avant dernier chapitre (le premier en bonus, celui avec le module json), mon code ne fonctionne plus. Je lance le programme, la phrase s'affiche, mais des que j'appuie sur la touche "entrée", la fenetre se ferme.

    Voici le code :

    import random
    import json
    
    #quotes = ["Ecoutez-moi, Monsieur Shakespeare, nous avons beau être ou ne pas être, nous sommes !", "On doit pouvoir choisir entre s'écouter parler et se faire entendre."]
    
    #characters = ["alvin et les Chipmunks", "Babar", "betty boop", "calimero", "casper", "le chat potté", "Kirikou"]
    
    
    def get_random_item(my_list):
        rand_num = random.randint(0, len(my_list)-1)# get a random number
        item = my_list[rand_num] # get a quote from a list
        return item # return the item
    
    
    def capitalize(words):
        for word in words:
            return word.capitalize()
    
    
    def message(character, quote):
        capitalize(character)
        capitalize(quote)
        return "{} a dit : {}".format(character, quote)
    
    
    def read_value_from_json(file, key):
    	values=[]
    	with open(file) as f:
    		data = json.load(f)
    		for entry in data:
    			values.append(entry[key])
    	return values
    
    def random_character():
    	list_characters = read_value_from_json('characters.json','characters')
    	character = get_random_item(list_characters)
    	return character
    
    def random_quote():
    	list_quotes = read_value_from_json('quotes.json','quotes')
    	quote = get_random_item(list_quotes)
    	return quote
    
    user_answer = input('Tapez entrée pour connaître une autre citation ou B pour quitter le programme.').upper()
    
    
    while user_answer != 'B':
        print(message(random_character(), random_quote()))
        user_answer = input('Tapez entrée pour connaître une autre citation ou B pour quitter le programme.')
    
    

    Pour verifier, j'ai copié collé le code proposé dans le chapitre dans un autre fichier, je l'ai lancé, et la le même problème surviens...

    Le code copié-collé : 

    # -*- coding: latin-1 -*-
    import json
    import random
    
    # Give a Json file and return a List
    def read_values_from_json(path, key):
        values = []
        with open(path) as f:
            data = json.load(f)
            for entry in data:
                values.append(entry[key])
            return values
    
    # Give a json and return a list
    def clean_strings(sentences):
        cleaned = []
        # Store quotes on a list. Create an empty list and add each sentence one by one.
        for sentence in sentences:
            # Clean quotes from whitespace and so on
            clean_sentence = sentence.strip()
            # don't use extend as it adds each letter one by one!
            cleaned.append(clean_sentence)
        return cleaned
    
    # Return a random item in a list
    def random_item_in(object_list):
        rand_numb = random.randint(0, len(object_list))
        return object_list[rand_numb]
    
    # Return a random value from a json file
    def random_value(source_path, key):
        all_values = read_values_from_json(source_path, key)
        clean_values = clean_strings(all_values)
        return random_item_in(clean_values)
    
    
    #####################
    ###### QUOTES #######
    #####################
    
    # Gather quotes from San Antonio
    
    def random_quote():
        return random_value('quotes.json', 'quotes')
    
    ######################
    #### CHARACTERS ######
    ######################
    
    # Gather characters from Wikipedia
    
    def random_character():
        return random_value('characters.json', 'characters')
    
    
    ######################
    #### INTERACTION ######
    ######################
    
    # Print a random sentence.
    
    def print_random_sentence():
        rand_quote = random_quote()
        rand_character = random_character()
        print(">>>> {} a dit : {}".format(rand_character, rand_quote))
    
    def main_loop():
        while True:
            print_random_sentence()
            message = ('Would you like another true quote? Type [enter]. '
                       'To exit, type [B].')
            choice = input(message).upper()
            if choice == 'B':
                break
                # This will stop the loop!
    
    if __name__ == '__main__':
        main_loop()

    Pour info, je suis sous Window$

    Merci d'avance !!

    • Partager sur Facebook
    • Partager sur Twitter
      23 juillet 2017 à 21:47:05

      Je suppose que c'est parce que tu lances le programme en double-cliquant sur le prgm. Ouvre le par le biais de la console
      • Partager sur Facebook
      • Partager sur Twitter
        23 juillet 2017 à 22:34:45

        Merci, ca marche un peu mieux, je peux voir mes erreurs, mais le programme ne fonctionne toujours pas... Voici ce que me r'envoie la console : 

        • Partager sur Facebook
        • Partager sur Twitter
          25 juillet 2017 à 8:47:40

          Bonjour,

          C'est normal, l'erreur provient du fichier JSON, qui n'est pas valide, comme indiqué ici.

          Essaie d'utiliser un autre cours (comme le cours de Gérard Swinnen), celui-ci est truffé d'erreurs et son auteure n'y prête aucune attention.

          • Partager sur Facebook
          • Partager sur Twitter

          Erreur non comprise

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown