18 Commits

Author SHA1 Message Date
9026dd56cc Changement dans l'exécution du script
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:52:15 +01:00
6bd2b3c66c On exécute le programme
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:50:52 +01:00
01337279fc Ajout de docstrings. Pylint est content
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:47:46 +01:00
d8c6b6e6bf Factorisation de tests
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:45:23 +01:00
ecec88e230 Il faut aussi renommer les variables dans leurs usages
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:43:18 +01:00
9018ab4996 On renomme a, b et c qui ne sont pas suffisamment explicites
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:41:07 +01:00
ca69954315 On quitte un programme avec sys.exit
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:37:48 +01:00
4c241eeb60 On ne redéfinit pas des fonctions pré-implémentées
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:35:59 +01:00
5e55a65b3f Pas d'espace entre le nom du paramètre et la valeur par défaut. flake8 est content
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:33:45 +01:00
e551f8b98d Les lignes ne doivent pas être trop longues
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:32:03 +01:00
55c67118b4 __main__ est une chaîne, pas une variable. Le programme a maintenant l'air de fonctionner
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:29:43 +01:00
25035a3221 Vrai se dit True en Python, pas true
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:27:40 +01:00
3d3539930a Une indentation doit être un multiple de 4 espaces
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:26:16 +01:00
461a0dac34 Guillemets manquants autour d'une chaîne à imprimer
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:24:14 +01:00
8aff3bc57d Intervetissement des : et = dans les paramètres de la fonction quit
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:23:07 +01:00
b932e1ad6e Une chaîne de caractères est entourée de guillemets
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:21:00 +01:00
4cdefaa8a3 Une comparaison se fait avec un double =
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:16:34 +01:00
5cb441f36d Virgule manquante dans les paramètres
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
2021-01-26 16:14:34 +01:00
3 changed files with 67 additions and 48 deletions

2
.gitignore vendored
View File

@ -1 +1,3 @@
*.pyc
venv venv

View File

@ -1,5 +1,6 @@
stages: stages:
- linting - linting
- test
flake8: flake8:
@ -18,3 +19,9 @@ pylint:
- pip install pylint --no-cache-dir - pip install pylint --no-cache-dir
script: pylint main.py script: pylint main.py
allow_failure: true allow_failure: true
test:
stage: test
image: python:3-alpine
script: python main.py

106
main.py
View File

@ -1,84 +1,94 @@
#!/usr/bin/env python #!/usr/bin/env python
"""
Ce script est utilisé en guise d'appui pour le séminaire Crans d'introduction
à l'intégration continue.
Le dépôt est présent sur https://gitlab.crans.org/ynerant/seminaire-ci.git
Plus d'informations sur les séminaires : https://www.crans.org/fr/seminaire/
"""
from random import choice from random import choice
import sys
def main(): def main():
"""
Fonction principale, qui va attendre les instructions de l'utilisateur.
"""
print("Bienvenue dans le chatbot du séminaire de l'intégration continue !") print("Bienvenue dans le chatbot du séminaire de l'intégration continue !")
print("Veuillez taper une commande. Tapez \"help\" pour afficher l'aide.") print("Veuillez taper une commande. Tapez \"aide\" pour afficher l'aide.")
while true: while True:
command = input("> ") command = input("> ")
args = command.split(" ") args = command.split(" ")
print(globals()[args[0]](*args[1:])) print(globals()[args[0]](*args[1:]))
def help(): def aide():
""" """
Affiche l'aide Affiche l'aide
""" """
print("help\t\tAffiche l'aide") print("aide\t\tAffiche l'aide")
print("seminaire\tLance le séminaire") print("seminaire\tLance le séminaire")
print("blague\t\tRaconte une blague") print("blague\t\tRaconte une blague")
print("calcul\t\tVérifie une opération arithmétique. Par exemple, check(1, 2, 3, '+') renvoie True") print("calcul\t\tVérifie une opération arithmétique. "
"Par exemple, check(1, 2, 3, '+') renvoie True")
print("tri\t\tTrie une liste d'entiers.") print("tri\t\tTrie une liste d'entiers.")
print("quit\t\tQuitte le programme") print("stop\t\tQuitte le programme")
def seminaire(): def seminaire():
""" """
Affiche les slides du séminaire. Affiche les slides du séminaire.
""" """
print("\x4c\x61\x69\x73\x73\x65\x20\x74\x6f\x6d\x62\x65\x72\x2c\x20\x74\x6f\x6e\x20\x74\x72\x75\x63\x20\x65\x73\x74\x20\x74\x72\x6f\x70\x20\x62\x65\x75\x67\x75\xe9\x2c\x20\x74\x75\x20\x64\x65\x76\x72\x61\x69\x73\x20\x70\x61\x73\x73\x65\x72\x20\x64\x75\x20\x74\x65\x6d\x70\x73\x20\xe0\x20\xe9\x63\x72\x69\x72\x65\x20\x64\x65\x73\x20\x74\x65\x73\x74\x73\x20\x65\x74\x20\x66\x61\x69\x72\x65\x20\x64\xe9\x66\x69\x6c\x65\x72\x20\x74\x65\x73\x20\x73\x6c\x69\x64\x65\x73") print("\x4c\x61\x69\x73\x73\x65\x20\x74\x6f\x6d\x62\x65"
"\x72\x2c\x20\x74\x6f\x6e\x20\x74\x72\x75\x63\x20"
"\x65\x73\x74\x20\x74\x72\x6f\x70\x20\x62\x65\x75"
"\x67\x75\xe9\x2c\x20\x74\x75\x20\x64\x65\x76\x72"
"\x61\x69\x73\x20\x70\x61\x73\x73\x65\x72\x20\x64"
"\x75\x20\x74\x65\x6d\x70\x73\x20\xe0\x20\xe9\x63"
"\x72\x69\x72\x65\x20\x64\x65\x73\x20\x74\x65\x73"
"\x74\x73\x20\x65\x74\x20\x66\x61\x69\x72\x65\x20"
"\x64\xe9\x66\x69\x6c\x65\x72\x20\x74\x65\x73\x20"
"\x73\x6c\x69\x64\x65\x73")
def blague(): def blague():
""" """
Renvoie une blague aléatoire. Renvoie une blague aléatoire.
""" """
return choice(["Je vais vous raconter une blague sur, mais vous ne l'aurez peut-être pas.", "Connaissez-vous la différence entre la théroie et la pratique ? Il n'y en a pas, en théorie."]) return choice(
["Je vais vous raconter une blague sur, mais vous "
"ne l'aurez peut-être pas.",
"Connaissez-vous la différence entre la théroie "
"et la pratique ? Il n'y en left pas, en théorie."])
def calcul(a b, c, operation = '+'): def calcul(left: int, right: int, res: int, operation='+'):
""" """
Vérifie si a operation b == c, où a, b et c sont des entiers. Vérifie si left operation b == c, où a, b et c sont des entiers.
L'opération peut être +, -, *, /, &, |, ^, % ou l'un de ses alias anglais. L'opération peut être +, -, *, /, &, |, ^, % ou l'un de ses alias anglais.
""" """
if operation = '+': if operation in ['+', 'add', 'sum']:
result = a + b result = left + right
if operation == 'sum': if operation in ['-', 'sub']:
result = a + b result = left - right
if operation == 'add': if operation in ['*', 'mul', 'prod']:
result = a + b result = left * right
if operation == '-': if operation in ['/', 'div']:
result = a - b result = left / right
if operation == 'sub': if operation in ['&', 'and']:
result = a - b result = left & right
if operation == '*': if operation in ['|', 'or']:
result = a * b result = left | right
if operation == 'mul': if operation in ['^', 'xor']:
result = a * b result = left ^ right
if operation == 'prod':
result = a * b
if operation == '/':
result = a / b
if operation == 'div':
result = a / b
if operation == '&':
result = a & b
if operation == 'and':
result = a & b
if operation == |:
result = a | b
if operation == 'or':
result = a | b
if operation == '^':
result = a ^ b
if operation == 'xor':
result = a ^ b
else: else:
result = a % b result = left % right
return c == result return res == result
def tri(*args): def tri(*args):
@ -88,13 +98,13 @@ def tri(*args):
return sorted(args) return sorted(args)
def quit(exit_code = int: 0): def stop(exit_code: int = 0):
""" """
Stoppe le programme avec le code d'erreur donné. Stoppe le programme avec le code d'erreur donné.
""" """
print("Fin du programme, merci !) print("Fin du programme, merci !")
exit(exit_code) sys.exit(exit_code)
if __name__ == __main__: if __name__ == '__main__':
main() main()