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()
× 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.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique