122 lines
3.4 KiB
Python
Executable File
122 lines
3.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
"""
|
|
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
|
|
import sys
|
|
|
|
|
|
def main(): # pragma: nocover
|
|
"""
|
|
Fonction principale, qui va attendre les instructions de l'utilisateur.
|
|
"""
|
|
print("Bienvenue dans le chatbot du séminaire de l'intégration continue !")
|
|
print("Veuillez taper une commande. Tapez \"aide\" pour afficher l'aide.")
|
|
|
|
while True:
|
|
command = input("> ")
|
|
args = command.split(" ")
|
|
print(commande(args[0], *args[1:]))
|
|
|
|
|
|
def commande(name: str, *args):
|
|
"""
|
|
Exécute la commande `name` avec les arguments donnés.
|
|
"""
|
|
return globals()[name](*args)
|
|
|
|
|
|
def aide():
|
|
"""
|
|
Affiche l'aide
|
|
"""
|
|
return "aide\t\tAffiche l'aide\n" \
|
|
"seminaire\tLance le séminaire\n" \
|
|
"blague\t\tRaconte une blague\n" \
|
|
"calcul\t\tVérifie une opération arithmétique. " \
|
|
"Par exemple, check(1, 2, 3, '+') renvoie True\n" \
|
|
"tri\t\tTrie une liste d'entiers.\n" \
|
|
"stop\t\tQuitte le programme"
|
|
|
|
|
|
def seminaire():
|
|
"""
|
|
Affiche les slides du séminaire.
|
|
"""
|
|
return "\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():
|
|
"""
|
|
Renvoie une blague aléatoire.
|
|
"""
|
|
return choice(
|
|
["Je vais vous raconter une blague sur UDP, mais vous "
|
|
"ne l'aurez peut-être pas.",
|
|
"Connaissez-vous la différence entre la théorie "
|
|
"et la pratique ? Il n'y en a pas, en théorie."])
|
|
|
|
|
|
def calcul(left: int, right: int, res: int, operation='+'):
|
|
"""
|
|
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.
|
|
"""
|
|
left = int(left)
|
|
right = int(right)
|
|
res = int(res)
|
|
|
|
if operation in ['+', 'add', 'sum']:
|
|
result = left + right
|
|
elif operation in ['-', 'sub']:
|
|
result = left - right
|
|
elif operation in ['*', 'mul', 'prod']:
|
|
result = left * right
|
|
elif operation in ['/', 'div']:
|
|
result = left / right
|
|
elif operation in ['&', 'and']:
|
|
result = left & right
|
|
elif operation in ['|', 'or']:
|
|
result = left | right
|
|
elif operation in ['^', 'xor']:
|
|
result = left ^ right
|
|
else:
|
|
result = left % right
|
|
return res == result
|
|
|
|
|
|
def tri(*args):
|
|
"""
|
|
Trie les éléments donnés en argument.
|
|
"""
|
|
return sorted(int(number) for number in args)
|
|
|
|
|
|
def stop(exit_code: int = 0):
|
|
"""
|
|
Stoppe le programme avec le code d'erreur donné.
|
|
"""
|
|
print("Fin du programme, merci !")
|
|
sys.exit(exit_code)
|
|
|
|
|
|
if __name__ == '__main__': # pragma: nocover
|
|
main()
|