Exercices
Jeu du + ou +
# Importer les librairies
from random import randint
# Generer un nombre aleatoire et d'autres variable
nbAdeviner = randint(1,200)
chercheToujours = True
c = 0
# Demarrer la boucle
while (chercheToujours):
print('')
# Entrezun chiffre
n = int(input("Entrez un nombre ==> "))
# Agir en fonction du résultat
if n > nbAdeviner:
print("c'est moins !")
c += 1
elif n < nbAdeviner:
print("c'est plus !")
c += 1
else:
print ('Bingo, vous avez trouvé en '+str(c + 1)+' coup(s)')
Amélioration du jeu du + ou du -
- Limiter le nombre de tentatives à 10 essais maximum. Après 10 essais, si l’utilisateur n’a pas trouvé, le programme indique qu’il a perdu et révèle le nombre.
- Permettre à l’utilisateur de choisir la plage de nombres (par exemple, entre 1 et 1000).
Exercice du marcheur ivre
À chaque itération, le marcheur, ivre, peut se déplacer vers l’Est, l’Ouest, le Nord ou le Sud. La direction est déterminée de manière aléatoire à chaque itération (par exemple, 100 ou 10 000 déplacements avant l’arrêt, car trop ivre).
Le point de départ est le Gros Horloge, situé aux coordonnées (121475.93, 6350115.88, EPSG::3857).
Amélioration du jeu du marcheur ivre
- Vous pouvez modifier la vitesse du marcheur à chaque itération (par exemple, il peut se mettre à courir ou marcher de plus en plus lentement).
- Autre possibilité d’amélioration : créer des obstacles dans l’environnement de simulation ou définir des limites à cet environnement.
- Ajouter un deuxième marcheur ivre.
- Fixer une destination et observer combien de temps il met à l’atteindre.
- Ajouter une mémoire au marcheur (après tout, il n’est peut-être pas si ivre que ça).
- …
import random
import matplotlib.pyplot as plt
import os
# Position du marcheur
x = [5000]
y = [5000]
# Nombre mouvements
nOfMouv = 100
# Debuter la marche
for i in range(nOfMouv):
print('Mouvement ', i)
direction = random.choice(['N', 'O', 'S', 'E'])
if direction == 'O':
print('GOOOO ===> Ouest')
x.append(x[-1] - 5)
y.append(y[-1])
elif direction == 'N':
print('GOOOO ===> Nord')
y.append(y[-1] + 5)
x.append(x[-1])
elif direction == 'E':
print('GOOOO ===> Est')
x.append(x[-1] + 5)
y.append(y[-1])
else:
print('GOOOO ===> Sud')
y.append(y[-1] - 5)
x.append(x[-1])
# Plot and save each iteration as an image
plt.plot(x, y, color='blue')
plt.xlim(4900, 5100) # Fix x-axis limits to keep it stable
plt.ylim(4900, 5100) # Fix y-axis limits to keep it stable
plt.title(f'Movement {i+1}')
plt.show()
###########################################################
###########################################################
#### PROJET ####
#### ####
###########################################################
###########################################################
###############################################################################
# ==============================================================================
# Import des librairies et des fonctions externes
# ==============================================================================
###############################################################################
import numpy as np
import matplotlib.pyplot as plt
from osgeo import gdal, ogr, osr
import os
###############################################################################
# ==============================================================================
# Script principal
# ==============================================================================
###############################################################################
# Fixer un repertoire de travail
os.chdir("/home/gilleol2/Desktop/MASTER_2")
#Initialiser un driver pour gerer le futur fichier
driver = ogr.GetDriverByName("ESRI Shapefile")
#Definir un nom pour le nouveau shapefile
output = "start.shp"
#Supprimer shapefile si il existe deja
if os.path.exists(output):
driver.DeleteDataSource(output)
#Creer les sources de donnee avec la methode CreateDataSource
ds = driver.CreateDataSource(output)
#Importer le src depuis la librairie osr
spatialref = osr.SpatialReference() # Fixe le scr
spatialref.ImportFromEPSG(3857)
#Creer la couche ou le layer avec la methode CreateLayer
layer = ds.CreateLayer('Point', spatialref, geom_type=ogr.wkbPoint)
#Ajouter un champ dans la table attributaire
#Definir l'attribut (FieldDefn)
fielddef = ogr.FieldDefn("ID", ogr.OFTInteger)
#Ajouter l'attribut a la table (CreateField)
layer.CreateField(fielddef)
# Créer l'entité
point = ogr.Geometry(ogr.wkbPoint)
# Fixer le point dans l'espace
point.AddPoint(121475.93, 6350115.88)
# Ajouter les attributs et contruire l'entité
featureDefn = layer.GetLayerDefn()
feature = ogr.Feature(featureDefn)
feature.SetGeometry(point)
feature.SetField('ID', 1)
layer.CreateFeature(feature)
# Supprimer les fichier temporaires
del layer, ds
iface.addVectorLayer("start.shp", "start", "ogr")