diff --git a/Chapter_3/corpus.py b/Chapter_3/corpus.py index e267400b14a093f5fd41ddef9e620eefa8681b7d..a8dcffb870e08426561d11c77d4e8a67699ffaad 100644 --- a/Chapter_3/corpus.py +++ b/Chapter_3/corpus.py @@ -7,7 +7,6 @@ Débuts chaotiques Genève. Lundi 13 mars 1989. Une page de l’histoire s’écrit au CERN, l’Organisation européenne pour la recherche nucléaire. L’informaticien britannique Tim Berners-Lee dépose dans le bureau de son supérieur un document de quelques pages, sobrement intitulé Gestion de l’information : proposition. Tim Berners-Lee constate qu’il est parfois difficile d’échanger et d’accéder aux innombrables publications scientifiques éparpillées dans le monde entier. Pour y parvenir, l’article suggère l’association de deux technologies qui existaient à l’époque. Le CERN est aujourd'hui considéré comme le berceau du World-Wide Web. -Le CERN est aujourd'hui considéré comme le berceau du World-Wide Web. - © J. Covolo La première est l’internet, inventé en 1974 par les américains Vint Cerf et Bob Khan. Il permet à des ordinateurs de s’échanger très rapidement des informations au moyen du réseau téléphonique, quel que soit leur emplacement. @@ -227,7 +226,7 @@ C'est une découverte scientifique majeure dans la compréhension de l'univers e C’était donc l’ambiance des grands jours le mercredi 4 juillet 2012 au département physique de la Faculté des sciences de l'UMons... Si la découverte du boson de Brout-Englert-Higgs laisse le commun des mortels assez indifférent, ici, on parle d'une avancée majeure. -Il faut dire que cela fait près de cinquante ans que l'on cherchait à prouver l'existence de cette particule qui joue un rôle important dans la compréhension de la matière. Cette fois donc ça y est, il a été découvert au LHC. +Il faut dire que cela fait près de cinquante ans que l'on cherchait à prouver l'existence de cette particule qui joue un rôle important dans la compréhension de la matière. Cette fois donc ça y est, il a été découvert au LHC. Le LHC, c'est le plus grand accélérateur de particules du monde, il se trouve à Genève au CERN, le Centre Européen de Recherche Nucléaire. Evelyne Daubie y va régulièrement, elle fait partie des milliers de physiciens qui se relaient pour suivre des expériences. diff --git a/Chapter_3/ex1.py b/Chapter_3/ex1.py new file mode 100644 index 0000000000000000000000000000000000000000..69bb7977b013127fbb41055a5e138df5776109d4 --- /dev/null +++ b/Chapter_3/ex1.py @@ -0,0 +1,33 @@ + +n_dim = int(input("Nombre de dimensions : ")) + +u = [float(input("u_{0} = ".format(i))) for i in range(n_dim)] +v = [float(input("v_{0} = ".format(i))) for i in range(n_dim)] + +print("Somme : ") +for i in range(n_dim): + print (u[i]+v[i]) + + +prod_scal = 0 +for i in range(n_dim): + prod_scal += u[i]*v[i] +print("Produit scalaire : {0}".format(prod_scal)) + + +if n_dim == 3: + prod_vec = [ u[1]*v[2] - u[2]*v[1], + -u[0]*v[2] + u[2]*v[0], + u[0]*v[1] - u[1]*v[0] + ] + + print("Produit vectoriel : w = ({0}, {1}, {2})".format(prod_vec[0],prod_vec[1],prod_vec[2])) + prod_scal = 0 + for i in range(n_dim): + prod_scal += prod_vec[i]*u[i] + print("u.w = {0}".format(prod_scal)) + prod_scal = 0 + for i in range(n_dim): + prod_scal += prod_vec[i]*v[i] + print("v.w = {0}".format(prod_scal)) + diff --git a/Chapter_3/ex2.py b/Chapter_3/ex2.py new file mode 100644 index 0000000000000000000000000000000000000000..5c189e2f963e4675c23f913218f05a1fd080ae19 --- /dev/null +++ b/Chapter_3/ex2.py @@ -0,0 +1,44 @@ + +numbers = [] +last = 0 +while last >= 0: + last = int(input("Entrez un nombre : ")) + numbers.append(last) + +numbers = numbers[:-1] + +print ("Les nombres sont {0}:".format(numbers)) + +# Brute-force. +# Each step, find the minimum of the vector and place it in the +# first position. + +for index in range(len(numbers)): + minimum = numbers[index] + minimum_index = index + for i in range(index+1,len(numbers)): + if numbers[i] < minimum: + minimum = numbers[i] + minimum_index = i + numbers[minimum_index] = numbers[index] + numbers[index] = minimum + +print ("Les nombres tries : {0}".format(numbers)) + +if len(numbers)%2 == 0: + print ("La medianne est : {0}".format(0.5*(numbers[int(len(numbers)/2)]+numbers[int(len(numbers)/2-1)]))) +else: + print ("La medianne est : {0}".format(numbers[int(len(numbers)/2)])) + + +moyenne = 0 +for x in numbers: + moyenne += x +moyenne/=len(numbers) +print("La moyenne est : {0}".format(moyenne)) + +variance = 0 +for x in numbers: + variance += (x-moyenne)**2 +variance/=len(numbers) +print("La variance est : {0}".format(variance)) diff --git a/Chapter_3/ex3.py b/Chapter_3/ex3.py new file mode 100644 index 0000000000000000000000000000000000000000..845ddf297e0c159d31c7eccb5e000969b3344397 --- /dev/null +++ b/Chapter_3/ex3.py @@ -0,0 +1,24 @@ + +txt="Les objectifs de Python en font un langage pedagogique ideal.C'est un langage general-purpose:il s'adapte a toutes les applications" + +seperatorList = " ,.;-'\":\n/\\?+()’!°" + +n_words = 0 +words = [] + +while len(txt) > 0: + seperation = len(txt) + for sep in seperatorList: + sepPos = txt.find(sep) + if sepPos >= 0 and sepPos < seperation: + seperation = sepPos + if seperation > 0: + n_words+=1 + txt=txt[seperation+1:] + elif seperation == 0: + txt=txt[seperation+1:] + else: + words.append(txt) + txt="" + +print("Il y a {0} mots dans la phrase.".format(n_words)) diff --git a/Chapter_3/ex4.py b/Chapter_3/ex4.py new file mode 100644 index 0000000000000000000000000000000000000000..89375e1352f7b5153b567e545b068fe7b18b3651 --- /dev/null +++ b/Chapter_3/ex4.py @@ -0,0 +1,36 @@ +from corpus import texte + +seperatorList = " ,.;-'\":\n/\\?+()’!°" + +word_count = {} + +while len(texte) > 0: + seperation = len(texte) + for sep in seperatorList: + sepPos = texte.find(sep) + if sepPos >= 0 and sepPos < seperation: + seperation = sepPos + if seperation > 0: + word = texte[:seperation].lower() + if word in word_count.keys(): + word_count[word] +=1 + else: + word_count[word] = 1 + texte=texte[seperation+1:] + elif seperation == 0: + texte=texte[seperation+1:] + else: + words.append(texte) + texte="" + + +sorted_words = [] +for word,count in word_count.items(): + if len(word) > 3: + sorted_words.append([count,word]) + +sorted_words.sort(reverse = True) + +for count,word in sorted_words[:50]: + print ("{0:20} apparaît {1} fois".format(word,count)) + diff --git a/Chapter_3/ex5.py b/Chapter_3/ex5.py new file mode 100644 index 0000000000000000000000000000000000000000..ca25da86f2122b4eba100aaa5f30ed14ac3b3b17 --- /dev/null +++ b/Chapter_3/ex5.py @@ -0,0 +1,18 @@ + +n_lines = int(input("Combien de lignes ? ")) + +previous_line = [1] +print ("{0:5} ".format(1)) +for line in range(1,n_lines): + new_line = [1] + for i in range(line-1): + new_line.append(previous_line[i+1]+previous_line[i]) + new_line.append(1) + + txt_to_print = "" + for entry in new_line: + txt_to_print += "{0:5} ".format(entry) + print (txt_to_print) + previous_line = new_line + + diff --git a/Chapter_3/ex6.py b/Chapter_3/ex6.py new file mode 100644 index 0000000000000000000000000000000000000000..4aeaf5822d4d9e2101495e9a3d95a2be6f49c1b7 --- /dev/null +++ b/Chapter_3/ex6.py @@ -0,0 +1,80 @@ + +n_lines = 8 +n_col = 15 + + +snake = [[1,1]] +apple = [n_lines - snake[-1][0] - 1 , n_col - snake[-1][1] - 1] + +#Positions où mettre la pomme si la case prévue est déjà occupée. +#On commence par des points proches des quatres coins +#Puis, on met toutes les autres cases. + +default_apple_positions = [[1,1],[n_lines-1,n_col-1], [1,n_col-1],[n_lines-1, 1]] +for i in range(n_lines): + for j in range(n_col): + default_apple_positions.append([i,j]) + +game_over = False + +while not game_over: + # Affichage du tableau de jeu + print ((n_col+2)*"-") + for line in range(n_lines): + txt_to_print = "|" + for col in range(n_col): + if [line,col] in snake: + txt_to_print += "@" + elif [line,col] == apple: + txt_to_print += "*" + else: + txt_to_print += " " + print(txt_to_print+"|") + print ((n_col+2)*"-") + + + # Demande instruction : + move = "" + while not move in ["z","s","q","d"]: + move = input("move : ") + + new_head_position = [snake[-1][0], snake[-1][1]] + if move == "z": + new_head_position[0] -=1 + elif move == "s": + new_head_position[0] +=1 + elif move == "q": + new_head_position[1] -=1 + elif move == "d": + new_head_position[1] +=1 + + + if new_head_position in snake or new_head_position[0] >= n_lines or new_head_position[1] >= n_col or new_head_position[0] < 0 or new_head_position[1] < 0 : + game_over = True + break + + snake.append(new_head_position) + if not new_head_position == apple: + snake = snake [1:] + else: + #Trying to place apple.. + apple = [n_lines - snake[0][0] - 1 , n_col - snake[0][1] - 1] + if apple in snake: + for apple_candidate in default_apple_positions: + if not apple_candidate in snake: + apple = apple_candidate[:] + break + + if apple in snake: + game_over = True + + +if len(snake) == n_lines*n_col: + print ("Congrats ! You have succesfully filled the grid ! Score : {0}".format(len(snake))) +else: + print ("Better luck next time... Score : {0}/{1}".format(len(snake),n_lines*n_col)) + + + + +