From cfd215f8fd034d2fa275d76ecbb9c05f715f554c Mon Sep 17 00:00:00 2001 From: Nico Maillet <nicolas.maillet@pasteur.fr> Date: Wed, 13 Sep 2023 12:47:22 +0200 Subject: [PATCH] Typo and soluce --- 1-Intro/1-CM-Intro.pdf | Bin 13090830 -> 13090830 bytes 1-Intro/1-TP-Init_python.pdf | Bin 2213104 -> 2213100 bytes 1-Intro/tp1.py | 221 +++++++++++++++++++++++++++++++++++ 3 files changed, 221 insertions(+) create mode 100644 1-Intro/tp1.py diff --git a/1-Intro/1-CM-Intro.pdf b/1-Intro/1-CM-Intro.pdf index 2a335ebe314e5a25542da164b993f1aaf90ed340..8cb509a6a49b05bbd6fa713c2535bc2c9a175b41 100644 GIT binary patch delta 565 zcmeBcn9l~n4K0i<OfAeUEG?`pY%T0994(wJTrJ!!JT1H}d@cMf0xg0qLM_5AA}yjV zVlCn=5-pM~QZ3RgGA*(#axL;L3N4B)N-fGQDlMulYAxz58ZDYFS}ocwIxV^_dM)}b z1}%myMlHrICM~8dW-aC|7A=-7RxQ>oHZ8U-b}jZT4lRx?PA$$YE-kJtZY}OD9xa|N zUM=1&J}tg2el7kj0WE<oK`p^8AuXXTVJ+b;5iOA|Q7zFeF)gtzaV_yJ2`z~&NiE4O zDJ`ijX)Wn387-MDSuNQuIW4&@c`f-Z1ucawMJ>fGB`u{bWi90`6)lx5RV~#mH7&I* zbuINR4K0l=O)bqWEiJ7rZ7uCB9W9+LT`k=$JuSU0eJ%Yh6Iv#=Olq0jGNol|%e0p1 zEi+nXw#;go-7=?TZp*xu`7H}t7Pc&ES=_RuWogT@mgOxgT2{8KYFXW~re$r*x|a1V z8(KEDY--uuvZZBf%eI#7EjwCvw(M%z-LhxP-s#Jjrre%BbJ^Z_CN;b5zn1M)WMm0< z`Zag@!@C=W+l^N2Z8uu6uia?H{&u4k2ilER9BemQaj4yB#o>0N6-U~QRvc|NT5)W< z(Td}y+#H6+hDIi428Pq~Hy@XV^R`dge7uF-+1b_9&B@u^z}(Qt$jR8$#Msr)$k5op Z#N5o(z|_#i!cM`4kdp0@yN_>W0RZ8>?M(mx delta 565 zcmeBcn9l~n4K0i<OfAeUEG?`pY%T0994(wJTrJ!!JT1H}d@cMf0xg0qLM_5AA}yjV zVlCn=5-pM~QZ3RgGA*(#axL;L3N4B)N-fGQDlMulYAxz58ZDYFS}ocwIxV^_dM)}b z1}%myMlHrICM~8dW-aC|7A=-7RxQ>oHZ8U-b}jZT4lRx?PA$$YE-kJtZY}OD9xa|N zUM=1&J}tg2el7kj0WE<oK`p^8AuXXTVJ+b;5iOA|Q7zFeF)gtzaV_yJ2`z~&NiE4O zDJ`ijX)Wn387-MDSuNQuIW4&@c`f-Z1ucawMJ>fGB`u{bWi90`6)lx5RV~#mH7&I* zbuINR4K0l=O)bqWEiJ7rZ7uCB9W9+LT`k=$JuSU0eJ%Yh6Iv#=Olq0jGNol|%e0p1 zEi+nXw#;go-7=?TZp*xu`7H}t7Pc&ES=_RuWogT@mgOxgT2{8KYFXW~re$r*x|a1V z8(KEDY--uuvZZBf%eI#7EjwCvw(M%z-LhxP-s#JjLT*f-xomGd(=q$)zn1M)WMqjj z`89X?!@C=W+l^N2Z8uu6uia?H{&u4k2ilER9BemQaj4yB#o>0N6-U~QRvc|NT5)W< z(Td}y+#CibhNcDvrY6(#Hy@XV^R`dge7uF-*~!Jo(7@2p)Y;t3!pO|R#L(5*z{S+k Z#Ld;&*xAj((N4jJkdp0@yN_>W0RSNO?mPeh diff --git a/1-Intro/1-TP-Init_python.pdf b/1-Intro/1-TP-Init_python.pdf index ef69c598b140f40569a14d9d56cf15c33e427369..c4ba2102fb98bd02112289d31fd494e7d97804bd 100644 GIT binary patch delta 2128 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 S`spKzvK+=-s;aL3Zd?HMq2M$C delta 2138 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 diff --git a/1-Intro/tp1.py b/1-Intro/tp1.py new file mode 100644 index 0000000..10c6041 --- /dev/null +++ b/1-Intro/tp1.py @@ -0,0 +1,221 @@ +""" TP1 where we learn a bit of Python""" + +# First test +print("Hello World!") + +# Variable and if +my_variable = True +if my_variable: + print("Hello World!") + +# Create a list +my_list = [1, 1, 2, 3, 5, 8, 13, 21] +print(my_list) + +# Add something in a list +my_list = [1, 1, 2, 3, 5, 8, 13, 21] +my_list.append(42) +print(my_list) + +# Access to a subpart of a list +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[0:5]) + +# Get the size of a list +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +size_list = len(my_list) +print(size_list) + +# Access to a subpart of a list +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +size_list = len(my_list) +print(my_list[5:size_list]) + +# Access to last elements +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[-1]) + +# Access to the second last element +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[-2]) + +# Notion of step: going from index 3 to the end +# but every 2 values +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[3:len(my_list):2]) + +# Notion of step: going from index 3 to the end +# but every 2 values +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[3::2]) + +# Step in list +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +for i in my_list[3:len(my_list):2]: + print(i) + +# Reverse the order +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[::-1]) + +# Reverse the order, with start/end +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[7:2:-1]) + +# Reverse the order, with start/end and step +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +print(my_list[7:2:-2]) + +# Concatenate two lists +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +my_other_list = ["Hello", "World", "Pwet"] +result = my_list + my_other_list +print(result) + +# Strings are lists +my_char = "Hi all!" +print(my_char[5:2:-1]) + +# List are objects +my_list = [1, 2, 3] +my_other_list = my_list +my_other_list.append(5) +print(my_list) + +# Correct way of creating a copy of a list +my_list = [1, 2, 3] +my_other_list = list(my_list) +my_other_list.append(5) +print(my_list) + + + + + + +# Simple for +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +for i in my_list: + print(i) + +# For with step/beg/end +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +for i in my_list[7:2:-1]: + print(i) + +# While loop +my_list = [1, 1, 2, 3, 5, 8, 13, 21, 42] +i = 0 +while i < len(my_list): + print(my_list[i]) + i += 1 + + + + + +# Example of dict +my_dict = {} +my_dict["keys1"] = 5 +my_dict["keys2"] = 6 +my_dict[42] = "Pwet" +print(my_dict) +print(my_dict[42]) + +# Print keys or values of a dict +print(my_dict.keys()) +print(my_dict.values()) + +# Play with values +for i in my_dict.values(): + print(i) + + + + + +# Import a module +import random +# Define a new function +def my_function(): + # Get a random number between 2 and 5 + my_rand = random.randint(2, 5) + # If this number is 4... + if my_rand == 4: + # Print something + print("Random") +# Execute the function +my_function() + + +# Argument in functions +def my_function(arg): + # If the string version of arg is not Pwet + if str(arg) != "Pwet": + # Print it + print(arg) + else: + # Else, print something else + print("Zbla") +# Try the function +my_function(3) +my_function("Poulpe") +my_function("Pwet") + + +# Return a value +def my_function(arg): + # The variable that will be returned + ret = "Zbla" + # If the string version of arg is not Pwet + if str(arg) != "Pwet": + # Modify the variable + ret = arg + # Return it + return ret +# Try the function +print(my_function(3)) +print(my_function("Poulpe")) +print(my_function("Pwet")) + + +# Return several values +def my_function(arg): + ret = "Zbla" + # If the string version of arg is not Pwet + if str(arg) != "Pwet": + # Modify the variable + ret = arg + # Return it and its length + return ret, len(str(ret)) +# Try the function +print(my_function("Pwet")) +# Access like a list to returned values +print(my_function("Pwet")[0]) +print(my_function("Pwet")[1]) + + + + +class MyObject: + """ Creating a new simple object """ + # Initialize the object + def __init__(self, arg1, arg2=None): # Arg2 is optional + self.arg1 = arg1 + self.arg2 = arg2 + # If arg2 does not exist, initialize a list + if self.arg2 is None: + self.arg2 = [] + + # self representation for print + def __repr__(self): + return f"Arg1 is {self.arg1}\nArg2 has a size of {len(self.arg2)}" + + def a_function(self, a_value): + """ Internal function of the object """ + # Return the concatenation arg1 and a_value + return str(self.arg1) + str(a_value) + +test = MyObject("Pwet", [0, 1, 3]) +print(test) +print(test.a_function(10)) -- GitLab