separation des travaux par branches|CLEAN branch

This commit is contained in:
Fred Z 2018-01-19 11:13:01 +01:00
parent b7e5ca23ed
commit 70ed2757ae
10 changed files with 0 additions and 56324 deletions

View File

@ -1,28 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 1.4-tp-bisextile : Déterminer si une année saisie par l'utilisateur est bissextile
# OpenClassrooms - Apprenez à programmer en Python - Les structures conditionnelles
# https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-structures-conditionnelles#/id/r-231173
annee = input("Saisir une année:")
annee = int(annee)
if (annee % 400) == 0 :
print(annee," est bisextile (divisible par 400)")
elif (annee % 4) == 0 and (annee % 100) != 0:
print(annee," est bisextile (divisible par 4, mais pas par 100)")
else:
print(annee," n'est PAS bisextile.")
liste = []
# La suite ne fait pas parti du TP: bonus perso
print("Voici la liste des annees bisextiles entre 1900 & 2030 :")
for a in range(1900,2030):
if ((a % 400) == 0) or ((a % 4) == 0 and (a % 100) != 0):
liste.append(a)
print(liste)

View File

@ -1,36 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 1.5-continue.py : remplacer while/continue par une structure plus claire
# OpenClassrooms - Apprenez à programmer en Python - Les boucles
# https://openclassroom
print(" Fonctionnement a reproduire:")
i = 1
while i < 20:
if i % 3 == 0:
i += 4
print("On incremente i de 4. i =", i)
continue
print("La variable i =", i)
i += 1
print(" boucle «for», probleme de scope avec la valeur de i")
for i in range(1,20):
if i % 3 == 0:
i += 4
print("On incremente i de 4. i = ", i)
else:
print("La variable i =", i)
i += 1
print(" Remplacement du «contine» par un «else»:")
i = 1
while i < 20:
if i % 3 == 0:
i += 4
print("On incremente i de 4. i =", i)
else:
print("La variable i =", i)
i += 1

View File

@ -1,11 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 1.7-test_package.py : essai d'utilisation d'un package
# OpenClassrooms - Apprenez à programmer en Python - Modularité
# https://openclassroom/courses/apprenez-a-programmer-en-python/pas-a-pas-vers-la-modularite-2-2
from package.fonctions import table
table(8, 12)

View File

@ -1,130 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 1.9-zCasino.py: petit jeu de roulette très simplifié
import math
import random
import os
# OpenClassrooms - Apprenez à programmer en Python - TP: tous au ZCasino
# https://openclassrooms.com/courses/apprenez-a-programmer-en-python/tp-tous-au-zcasino
# Le joueur mise sur un numéro compris entre 0 et 49
# En choisissant son numéro, il mise
# Les numéros pairs sont noire, les impairs sont de rouge
# Quand la roulette s'arrête:
# -Si numéro gagnant: gain = 3x la mise
# -Si même couleur: gain = 50% de la mise
# -Sinon la mise est perdue
#############
# VARIABLES #
#############
jeu_continu = True
credit = 1000
filename = ".highscore"
old_highscore = -1
#########
# TEXTE #
#########
curr_symb = ""
disclamer = "Bienvenu à la roulette, vous avez un crédit de " + \
str(credit) + curr_symb + ": bonne partie."
err_plage = "Il faut saisir un nombre dans la plage indiquée! "
err_saisie = "Il faut saisir un nombre! "
msg_resultat = "\nLa bille s'arrête sur le nunéro: "
msg_numero = "\nVotre nombre est gagnant! Votre gain: "
msg_couleur = "\nVotre couleur est gagnante! Votre gain: "
msg_perdu = "\nVous perdez votre mise!"
msg_continue = "Pour arrêter la partie, tapez « n »: "
msg_solde = "Votre solde : "
msg_arret = "Vous avez décidé d'arrêter la partie avec un solde de: "
msg_final = "Votre solde à atteind 0€: la partie s'arrête"
msg_no_score = "Pas d'ancien score."
msg_best_score = "Bravo, vous battez le précédent record de gain qui était: "
msg_bad_score = "Le record de gain enregistré était: "
################
# DÉBUT DU JEU #
################
print(disclamer)
while jeu_continu is True:
# Saisie & validation du choix
choix_valeur = 50
while choix_valeur >= 50 or choix_valeur < 0:
choix_valeur = input("Quel numéro choisissez vous (0-49)?")
try:
choix_valeur = int(choix_valeur)
except ValueError:
print(err_saisie)
choix_valeur = 50
continue
if choix_valeur >= 50 or choix_valeur < 0:
print(err_plage)
# Saisie & validation de la mise
mise = 0
while mise <= 0 or mise > credit:
mise = input("Quelle est votre mise (1-" + str(credit) + "?)")
try:
mise = int(mise)
except ValueError:
print(err_saisie)
mise = 0
continue
if mise <= 0 or mise > credit:
print(err_plage)
result_valeur = random.randrange(50) # Roulette
# Comparaison
if result_valeur == choix_valeur:
gain = mise * 3
msg = msg_resultat + str(result_valeur) + msg_numero + \
str(gain) + curr_symb
elif result_valeur % 2 == choix_valeur % 2:
gain = math.ceil(mise / 2)
msg = msg_resultat + str(result_valeur) + msg_couleur + \
str(gain) + curr_symb
else:
gain = - mise
msg = msg_resultat + str(result_valeur) + msg_perdu
credit = credit + gain
print(msg) # Affichage de fin de tour
if credit > 0: # affiche credit
print(msg_solde + str(credit))
ask_continue = str(input(msg_continue)) # demande de continuer
if ask_continue == "n": # Arret demandé par le joueur
jeu_continu = False
msg_final = (msg_arret + str(credit) + curr_symb)
else:
jeu_continu = False # fin du jeu
if os.path.isfile(filename) is True: # On recupere le highscore
with open(filename, "r") as highscore:
old_highscore = int(highscore.read())
if old_highscore == -1: # Pas encore de partie gagnante
msg_score = msg_no_score
elif credit > old_highscore and old_highscore != -1: # Highscore battu
msg_score = msg_best_score + str(old_highscore) + curr_symb
else:
msg_score = msg_bad_score + str(old_highscore) + curr_symb
if (credit > 0 and old_highscore == -1) or credit > old_highscore:
with open(filename, "w") as highscore:
highscore.write(str(credit))
print(msg_final) # Affichage du message de fin de partie
print(msg_score) # Affichage du score/highscore

View File

@ -1,12 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from package.fonctions import afficher_flottant
# 2.3-afficher_flottant.py:
# OpenClassrooms - Apprenez à programmer en Python - Entre chaînes et listes
# https://openclassrooms.com/courses/apprenez-a-programmer-en-python/les-listes-et-tuples-2-2
afficher_flottant(1.123456789)
afficher_flottant(0.1)

File diff suppressed because it is too large Load Diff

View File

@ -1,34 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# donnee.py : donnee du fichier pendu.py
""" Rassemble les donnee du script pendu.py """
# Constantes
SCORES_FILE = ".scores"
WORD_LIST_FILE = "dicolight.txt"
MAX_TURNS = 12
MAX_NAME_LEN = 7
MIN_NAME_LEN = 2
MSG_DISCLAMER = "Bienvenue au zPendu!\nLe but du jeu est de deviner"+\
" un mot de 8 lettres max en moins de {} tours.".format(MAX_TURNS)
ASK_NAME = "Votre nom ({} à {} caratères) : ".format(MIN_NAME_LEN, MAX_NAME_LEN)
ASK_LETTER = "Choisissez une lettre : "
ERR_WORD_LIST_FILE = "\t#!@?# Oups… Le dictionnaire n'est pas accesible! #?@!#"
ERR_LETTER_LEN = "\t#!@?# Oups… Saisie trop courte ou trop longue! #?@!#"
ERR_LETTER_ALPHA = "\t#!@?# Oups… Il faut saisir une lettre! #?@!#"
ERR_LETTER_USED = "\t#!@?# Oups… Cette lettre à déjà été jouée! #?@!#"
MSG_END_GAME = "Partie terminée avec {} point(s).\nLe mot mystère était : \n"
MSG_1ST_GAME = "C'était votre 1ère partie ;-)"
MSG_SCORES = "\n-== Les Scores : ==-"
# Variables
game_continue = True
player_name = str()
letter = str()
turns = 0
alphabet = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
]

View File

@ -1,50 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# fonction.py : fonctions du fichier pendu.py
""" Rassemble les fonctions du script pendu.py """
def check_letter(letter, target):
"""
Verifie la presence de **letter** dans **target**
Retourne la liste des positions de la letter ou False
@letter str
@target list of letters
"""
if len(letter) != 1 or len(target) < 2 and letter is not str:
return False
else:
return [k for k, v in enumerate(target) if letter == v]
def cls():
""" Efface l'historique de la console """
import os
os.system('clear')
return
def stringalise (letter_list):
"""
Convertit un liste en une chaine
@letter_list list()
@return string()
"""
stringalised = str()
for letter in letter_list:
stringalised = stringalised + ' ' + letter
return stringalised
if __name__ == "__main__":
# Tests de la fonction
print(check_letter('A', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('M', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('o', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter('À', ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter(1, ['M', 'A', 'M', 'O', 'U', 'T', 'H']))
print(check_letter(False, ['M', 'A', 'M', 'O', 'U', 'T', 'H']))

View File

@ -1,153 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
import os
import pickle
from donnees import *
from fonctions import *
#check_letter, cls, stringalise
# 2.7-zPendu.py: Jeu de pendu avec cumul des scores des differant joueurs
# OpenClassrooms - Apprenez a programmer en Python -
# https://openclassrooms.com/courses/apprenez-a-programmer-en-python/tp-un-bon-vieux-pendu
# Le joueur donne son nom au debut (enregistrement du score)
# Le script choisit un mot (8 lettres max) au hasard dans une liste
# Le joueur a chaque tour saisit une lettre
# Si la lettre figure dans le mot, l'ordinateur affiche le mot avec
# les lettres deja trouvees. Celles qui ne le sont pas encore sont
# remplacees par des etoiles (*). Le joueur a autant de chances que
# le nombre de lettre du mot. Au dela, perdu.
# Le score: score courant (0 si aucun score deja enregistre), a
# chaque partie, ajoute le nombre de coups restants (non utilise)
# intégrer la date de 1ere partie dans le score
# intégrer la partie au plus fort score
# zerofill les scores
# Constantes
SCORES_FILE = ".scores"
WORD_LIST_FILE = "dicolight.txt"
MAX_TURNS = 12
MAX_NAME_LEN = 7
MIN_NAME_LEN = 2
MSG_DISCLAMER = "Bienvenue au zPendu!\nLe but du jeu est de deviner" + \
" un mot de 8 lettres max en moins de {} tours.".format(MAX_TURNS)
ASK_NAME = "Votre nom ({} à {} caratères) : "\
.format(MIN_NAME_LEN, MAX_NAME_LEN)
ASK_LETTER = "Choisissez une lettre : "
ERR_WORD_LIST_FILE = "\t#!@?# Oups… Le dictionnaire n'est pas accesible! #?@!#"
ERR_LETTER_LEN = "\t#!@?# Oups… Saisie trop courte ou trop longue! #?@!#"
ERR_LETTER_ALPHA = "\t#!@?# Oups… Il faut saisir une lettre! #?@!#"
ERR_LETTER_USED = "\t#!@?# Oups… Cette lettre à déjà été jouée! #?@!#"
MSG_END_GAME = "Partie terminée avec {} point(s).\nLe mot mystère était : \n"
MSG_1ST_GAME = "C'était votre 1ère partie ;-)"
MSG_SCORES = "\n-== Les Scores : ==-"
# Variables
game_continue = True
player_name = str()
letter = str()
turns = 0
alphabet = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
]
cls()
print(MSG_DISCLAMER)
while (
len(player_name) < MIN_NAME_LEN or
len(player_name) > MAX_NAME_LEN or
player_name.isalnum() is False
): # Le joueur donne son nom
player_name = str(input(ASK_NAME)).capitalize()
if len(player_name) < MIN_NAME_LEN or len(player_name) > MAX_NAME_LEN:
print(ERR_LETTER_LEN)
if player_name.isalnum() is False:
print(ERR_LETTER_ALPHA)
if os.path.isfile(WORD_LIST_FILE) is True: # Chargement du dictionnaire
with open(WORD_LIST_FILE, "r") as word_list_file:
word_list = word_list_file.read().splitlines()
else:
raise ValueError(ERR_WORD_LIST_FILE)
# Choix du mot cible
target_word = list(word_list[random.randrange(0, len(word_list))])
player_word = list("*" * len(target_word))
# Debut de partie
while game_continue is True:
while (
len(letter) != 1
or letter.isalpha() is False
or alphabet.count(letter) != 1
): # Le joueur choisi une lettre
letter = str(input(ASK_LETTER)).upper()
if len(letter) != 1:
print(ERR_LETTER_LEN)
elif letter.isalpha() is False:
print(ERR_LETTER_ALPHA)
elif alphabet.count(letter) != 1:
print(ERR_LETTER_USED)
# Presence de la lettre?
if check_letter(letter, target_word) is not False:
positions = check_letter(letter, target_word)
for i in positions:
player_word[i] = letter
alphabet[alphabet.index(letter)] = '_'
turns += 1
if turns == MAX_TURNS or player_word.count("*") == 0: # Fin de partie?
game_continue = False
# Affichage de la fin de tour
cls()
print(stringalise(alphabet))
print("tour : ", turns, "sur ", MAX_TURNS)
print(stringalise(player_word))
# Fin de partie
points = (MAX_TURNS - turns) + 1
cls()
print(MSG_END_GAME.format(points))
print(stringalise(target_word))
# Affichage du score de la partie et des highscores
if os.path.isfile(SCORES_FILE) is True: # Ouverture du fichier
with open(SCORES_FILE, "rb") as scores_file:
scores = pickle.Unpickler(scores_file).load()
else:
scores = {player_name: 0}
print(MSG_1ST_GAME)
# Calcul du score
if scores.get(player_name, False) is False: # Nouveau joueur
scores.update({player_name: 0})
scores[player_name] = scores[player_name] + points
# Enregistrement du score
with open(SCORES_FILE, "wb") as scores_file:
pickle.Pickler(scores_file).dump(scores)
print(MSG_SCORES)
for score in sorted(
{(points, player) for player, points in scores.items()},
reverse=True
):
print("{}\t: {} points".format(score[1], score[0]))

View File

@ -1,76 +0,0 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Ce fichier abrite le code du ZCasino, un jeu de roulette adapté
from random import randrange
from math import ceil
# Déclaration des variables de départ
argent = 1000 # On a 1000 $ au début du jeu
continuer_partie = True # Booléen qui est vrai tant qu'on doit \
# continuer la partie
print("Vous vous installez à la table de roulette avec", argent, "$.")
while continuer_partie: # Tant qu'on doit continuer la partie
# on demande à l'utilisateur de saisir le nombre sur
# lequel il va miser
nombre_mise = -1
while nombre_mise < 0 or nombre_mise > 49:
nombre_mise = input("Tapez le nombre sur lequel vous voulez miser (entre 0 et 49) : ")
# On convertit le nombre misé
try:
nombre_mise = int(nombre_mise)
except ValueError:
print("Vous n'avez pas saisi de nombre")
nombre_mise = -1
continue
if nombre_mise < 0:
print("Ce nombre est négatif")
if nombre_mise > 49:
print("Ce nombre est supérieur à 49")
# À présent, on sélectionne la somme à miser sur le nombre
mise = 0
while mise <= 0 or mise > argent:
mise = input("Tapez le montant de votre mise : ")
# On convertit la mise
try:
mise = int(mise)
except ValueError:
print("Vous n'avez pas saisi de nombre")
mise = -1
continue
if mise <= 0:
print("La mise saisie est négative ou nulle.")
if mise > argent:
print("Vous ne pouvez miser autant, vous n'avez que", argent, "$")
# Le nombre misé et la mise ont été sélectionnés par
# l'utilisateur, on fait tourner la roulette
numero_gagnant = randrange(50)
print("La roulette tourne... ... et s'arrête sur le numéro", numero_gagnant)
# On établit le gain du joueur
if numero_gagnant == nombre_mise:
print("Félicitations ! Vous obtenez", mise * 3, "$ !")
argent += mise * 3
elif numero_gagnant % 2 == nombre_mise % 2: # ils sont de la même couleur
mise = ceil(mise * 0.5)
print("Vous avez misé sur la bonne couleur. Vous obtenez", mise, "$")
argent += mise
else:
print("Désolé l'ami, c'est pas pour cette fois. Vous perdez votre mise.")
argent -= mise
# On interrompt la partie si le joueur est ruiné
if argent <= 0:
print("Vous êtes ruiné ! C'est la fin de la partie.")
continuer_partie = False
else:
# On affiche l'argent du joueur
print("Vous avez à présent", argent, "$")
quitter = input("Souhaitez-vous quitter le casino (o/n) ? ")
if quitter == "o" or quitter == "O":
print("Vous quittez le casino avec vos gains.")
continuer_partie = False