<jupyter_start><jupyter_text>Sciences Numériques et TechnologiquesAvant de commencer cet exercice, verifier que tout fonctionne comme prévu. D'abord nous allons **relancer le noyau** (dans la bare de menu, selectionner Kernel$\rightarrow$Restart)ensuite **exécutez toutes les cellules** (dans la bare de menu, choisisez Cell$\rightarrow$Run All)Ne remplisez que les bouts de code dans lesquels il est indiqué `YOUR CODE HERE` (votre code ici) ou bien "YOUR ANSWER HERE" votre réponse, n'oubliez pas de citer vos collaborateurs si vous avez travaillé à plusieurs.<jupyter_code># QUEL EST LE NOM QUE VOUS UTILISEZ POUR VOUS IDENTIFIER
NAME = " "
# AVEC QUI AVEZ VOUS TRAVAILLE
COLLABORATEURS = " "<jupyter_output><empty_output><jupyter_text>---  Bases de la programation Python  1) Initialisation des variables et les typesNous commençon avec un type de variables qui correspondent aux nombres. Il y a deux familles  principales, les entiers appellés les `int` pour integer. Et les nombres à virgule, les irrationnels appellés `float` pour désigner les nombres dont la virgule peut être au début ou au milieu en fonction du nombre de chiffres significatifs que l'on souhaite avoir. On va tester des choses originales que la programation permet de faire, et qui sont un très semblables de ce que nous avons l'habitude de voire en mathematiques, cependant il y a des choses à apprendre. Ce que vous allez tester vous permettra de résoudre de nombreux problèmes en utilisant la méthode numérique Ces quelles opération classiques sur ces nombre qui ont été vues lors de la programation du microcontrôleur Arduino, vous permettent de comprendre que les nombres ne sont pas tout à fait manipulés de la même manière qu'en mathématiques.Ici les variables sont tour à tour des témoins d'une certaine valeur, ainsi que les récepteurs d'une nouvelle valeur.|Operation | Interpretation||-----|----------|| somme de a et b |  a + b || différence de a et b |  a - b || produit de a et b |  a * b || rapport de a par b |  a / b |Afin de mieux comprendre cela nous allons faire des opérations très simples.<jupyter_code># On définit deux nouvelles variables comme des int
a=5
b=6
# On veut faire la somme de ces variables et en avoir le résultats
c=a+b
c
# On peut egalement s'intéroger sur le type de la nouvelle variable c
print(type(c))<jupyter_output><empty_output><jupyter_text>Changez le code ci dessus pour faire d'autre opérations, par exemple le produit de a par b<jupyter_code># L'avantage des int de python c'est qu'ils sont de taille illimités
a=999999999999999999999999999999999999999999999999999999999999
print(a)
print(type(a))
b=a+1
print(b) # on renvoie la valeur de b
print(type(b)) # on explicite le format de b<jupyter_output><empty_output><jupyter_text>Déclarer la variable *a* pour qu'elle ait 60 fois la valeur 9. Cela veut dire qu'ici ~~~ pythonb=a+1~~~Aura 60 zeros.<jupyter_code># Solution
# On commence par définir B comme un entier à 600 zeros
b_char='1'+'0'*60 # On ecrit b comme une chaine de charactères.
b_int=int(b_char) # cette fonction transforme b_char en un entier
print(b_int)
a=b-1
print(a)
# On verifie que la variable a est un entier qui compte 60 neufs
A=str(a)
len(A)<jupyter_output><empty_output><jupyter_text>2) Choisir le type adaptéOn voit que ce n'est pas toujours très judicieux de travailler avec des chiffres qui ont un grand nombre de zeros. Essayons d'utiliser la notation scientifique, tout de suite le nombre considéré sera un nombre "float" c'est à dire un nombre semblable aux nombres irrationnels.<jupyter_code>a=1*1E60
print(a)
type(a)<jupyter_output><empty_output><jupyter_text>Il y a donc eu arrondi : quand un chiffre arrive à $10^{60}$ l'interpretteur python considère que c'est plus prudent de faire une approximation et de transformer les types `int` en types `float`Pouvez vous trouver la limite au dela le laquelle il n'y a plus de `int` qui vaille ?  Exercices Notés  1) Rappel sur les fonctions en langage pythonUne fonction est un outil de programmation qui permet de transformer des données en entrée (appelés arguments, ou variables) par des résultats en sortie. Sa syntaxe est très formelle : ~~~pythondef NOM_DE_LA_FONCTION (argument1):     Ecriture d'une série de lignes de commandes      qui doivent être alignées les unes par rapport aux autres     Notez bien l'indentation, ne pas la respecter     equivaut à une erreur de syntaxe !!!    return resultat~~~Notez bien les deux points `:` après la déclaration de l'argument (`argument1`), ainsi que l'indentation des commentaire (l'espace au début de la ligne où se trouve la commande)Enfin ne soyez pas surpris si votre fonction ne vous rend pas les résultats, c'est parce que vous avez oublié le `return`.~~~python    return~~~qui renvoie la 'production' de la fonction.<jupyter_code>#Fonction ajoute une variable à une autre variable
def décalage(Variable_a,Variable_b):
    #Les commentaires en rouge sont essentielment utilisées quand on demande à savoir ce que fait cette fonction en utilisant ? NOM_DE_LA_FONCTION
    """
    Cette fonction va prendre un argument Variable_a auquel il va soustraire Variable_b 
    Il va rendre directemenent la différence Variable_a-Variable_b
    """
    return Variable_a-Variable_b
#Nous testons la fonction décalage
décalage(293,273)
# La cellule suivante permet de exprimer 
# les informations qui sont en rouge au 
# début de la fonction

? décalage<jupyter_output><empty_output><jupyter_text>La fonction carré 5 pointsOn considère une fonction `carré` qui multiplie la variable entrée par elle même et qui renvoie le résultat<jupyter_code>def carré(a):
    """Cette fonction fait le carré d'une valeur entière a, 
    de telle sorte que le résultat retourné est a au carré
    On notera bien que les caractères accentués sont permis
    pour le nom des fonctions (selon la norme UTF-8)
    Par contre les caractères spéciaux (!#%) sont à proscrire
    """
    # YOUR CODE HERE
    raise NotImplementedError()<jupyter_output><empty_output><jupyter_text>Pour $a=2$ votre fonction devrait renvoyer 4pour $a=100$ on s'attends à ce qu'elle retourne 10000<jupyter_code>""" Verifier que la fonction carre renvoie la sortie correcte pour plusieurs entrées"""
assert carré(1) == 1
assert carré(2) == 4
assert carré(100) == 10000<jupyter_output><empty_output><jupyter_text>Une fonction qui convertit les degrès Celcius en Kelvin 6 pointsOn sait que le 0 absolut (en K) est à -273°C on souhaite avoir une fonction`kelvin` qui convertisse les degrès Celcius en Kelvin, comment s'y prendre ?<jupyter_code>def kelvin(temperature_celcius):
    """ Cette fonction prend un nombre 
    et le transforme en un autre par 
    une opération mathématique """
    # YOUR CODE HERE
    raise NotImplementedError()

assert kelvin(-273) == 0<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.06336371655395472, 'fraction_numerical': 0.01925904145839459, 'mean_word_length': 4.988556338028169, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 37, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '297717', 'license': 'Apache-2.0', 'n_tokens_mistral': 2301, 'n_tokens_neox': 2186, 'n_words': 926, 'path': 'Bases_types.ipynb', 'repo_name': 'DillmannFrench/SNT', 'size': '6802'}