Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python for Systems Engineers - Part 1

Python for Systems Engineers - Part 1

Python is one of the most popular programming languages of our time and the powerhouse behind most of Cisco’s API efforts. If there is a Cisco API chances are high that there will be a software development kit for that API in python. In this 3-part webinar series we will get our hands dirty with python.

Part 1 covers the basics of the python language and some hands-on exercises to get you started on programming.

Avatar for Marcel Neidinger

Marcel Neidinger

November 07, 2019
Tweet

More Decks by Marcel Neidinger

Other Decks in Technology

Transcript

  1. python for Beginners - Part 1 ”Batteries included” Programming Marcel

    Neidinger Associate Solutions Engineer, Collaboration [email protected] 7. November 2019
  2. What is the plan? • Part 1: Introduction to python3

    • Part 2: Introduction to some useful python packages • Part 3: Hands-On - Let’s code a small MVP in one hour 1
  3. About these Slides These slides are deliberately filled with content

    and can serve as a reference for you. Code sample 1 p r i n t (”This i s a code snippet ”) Exercise 2
  4. About these Slides These slides are deliberately filled with content

    and can serve as a reference for you. Code sample 1 p r i n t (”This i s a code snippet ”) Exercise Exercise: Some trivial proofs Proof, for any decission problem P1 ∈ NP and P2 ∈ P that P1 >p P2 holds. 2
  5. What is a python? • Cross plattform (Mac, Linux, Windows,

    Embedder) • Easy to write - Easier to read • ”Batteries included” • Well integrated in the Cisco ecosystem 3
  6. What is a python? • Cross plattform (Mac, Linux, Windows,

    Embedder) • Easy to write - Easier to read • ”Batteries included” • Well integrated in the Cisco ecosystem In short python is perfect for • Large software projects • Quick proofs of concept • People starting their programming journey 3
  7. Who uses python? python where we can - C++ where

    we must! - Googles early development mantra 4
  8. Who uses python? python where we can - C++ where

    we must! - Googles early development mantra 4
  9. 6

  10. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want 8
  11. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want • (3 + 1) important (simple) data types 8
  12. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want • (3 + 1) important (simple) data types String for text (and characters) 8
  13. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want • (3 + 1) important (simple) data types String for text (and characters) int for whole numbers 8
  14. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want • (3 + 1) important (simple) data types String for text (and characters) int for whole numbers float for floating numbers 8
  15. Datatypes • Python is not statically typed • In English:

    Variables can have any datatype they want • (3 + 1) important (simple) data types String for text (and characters) int for whole numbers float for floating numbers (None for Nothing) 8
  16. Strings 1 # Strings are defined with quotation marks a

    = ”This i s a s t r i n g ” 3 b = ’ This i s also a s t r i n g ’ 5 # You can put them over multiple l i n e s with three ””” c = ””” 7 This s t r i n g goes over multiple 9 l i n e s ””” 11 # And they can be joined together 13 d = ”A s t r i n g ” e = ”can be e a s i l y connected” 15 f = d + ” ” + e 9
  17. ints 1 # D e f i n i t

    i o n a = 10 3 # Simple arithmetics with others 5 a = 10 + 5 b = a − 5 7 c = b ∗ 3 # and with themselfes 9 a = a + 3 11 # In a more pythonic way a += 3 13 a ∗= 3 10
  18. floats 1 # D e f i n i t

    i o n (mind the ”.”) a = 10.0 3 # Simple arithmetics 5 a = 10.0 + 5.0 b = a/3.0 7 # We can also add with other numbers 9 c = 10 c = i n t ( c ) 11 d = 3.0 ∗ c 13 type (d) # <c l a s s ’ f l o a t ’> 11
  19. None • What if we want to mark something as

    nothing? • 0 and -1 can be ambigious • In python we use None a = None 12
  20. Converting data types • python keeps track of (what it

    thinks) the data type of your variable is • Often operations can only be applied to variables of the same type (Examples: +,-,...) ⇒ We need to convert between data types 1 # Simple conversion a = 10.0 3 b = i n t (a) 5 # Strings and numbers d = 42 7 s = ”Das i s t ein String mit der Zahl ” s = s + ” ” + s t r (a) 9 # To check the type type (d) 11 # <c l a s s ’ i n t ’> 13
  21. Exercise for Data Types Exercise: Simple Calculations and Conversions a)

    Use python to calculate the following simple instructions • 10 + 3 the result should be a float • 10/3 the result should be a int • 5/2 the result should be a int • 10/4 the result should be a float b) What is wrong with the following code fragment? Run it to find out! 1 a = 10 p r i n t (”Wir haben insgesamt ” + a + ” Probleme”) 14
  22. Solutions Solution: Exercise for Data Types a) a1 = f

    l o a t (10 + 3) 2 # >>> 13.0 a2 = i n t (10/3) 4 # >>> 3 a3 = i n t (5/2) 6 # >>> 2 a4 = f l o a t (10/4) 8 # >>> 2.5 b) a is variable of type int. We get a type error since only strings can be concatinated. 15
  23. for-loops • for loops allow to iterate over a set

    of commands n times for i in range (0 , 10) : 2 p r i n t (”This i s the ” + s t r ( i ) + ” . i t e r a t i o n ”) 16
  24. for-loops • for loops allow to iterate over a set

    of commands n times 1 for i in range (0 , 10) : p r i n t (”This i s the ” + s t r ( i ) + ” . i t e r a t i o n ”) • The increment isn’t fixed to 1 for i in range (0 ,10 ,2) : 2 p r i n t (”Now we only show every second number in the range ( i=” + s t r ( i ) + ”) ”) 16
  25. for-loops • for loops allow to iterate over a set

    of commands n times 1 for i in range (0 , 10) : p r i n t (”This i s the ” + s t r ( i ) + ” . i t e r a t i o n ”) • The increment isn’t fixed to 1 for i in range (0 ,10 ,2) : 2 p r i n t (”Now we only show every second number in the range ( i=” + s t r ( i ) + ”) ”) • for loops can be nested (i.e. to iterate over the pixels in an image) for x in range (0 ,10) : 2 for y in range (0 ,10) : pr i nt (” Searching in coordinate (” + s t r (x) + ” , ” + s t r (y) + ”)”) 16
  26. Exercise for for-loops Exercise: Calculating multiplication tables In this Exercise

    we will calculate multiplication tables like this 1 M u l t i p l i c a t i o n table for 2 2 x 1 = 2 3 2 x 2 = 4 2 x 3 = 6 5 2 x 4 = 8 [ . . . ] 7 2 x 10 = 20 Tip Use two nested for loops to calculate all multiplication tables from 1 to 10 17
  27. Exercise for for-loops (contd.) Solution: Calculating multiplication tables 1 for

    num in range (1 , 11) : p r i nt (” M u l t i p l i c a t i o n table for ” + s t r (num) ) 3 for m u l t i p l i e r in range (1 , 11) : res = num ∗ m u l t i p l i e r 5 pr i nt ( s t r (num) + ” x ” + s t r ( m u l t i p l i e r ) + ” = ” + s t r ( res ) ) 18
  28. Control structures - the if clause • Using if-clauses we

    can change the program flow based on variable values • if-clauses need a comparisson • Instructions caried out when a comparisson is true are called a branch 1 a = 10 i f a == 10: 3 # This i s a branch p r i n t (”a has the value ” + s t r (a) ) 19
  29. Control structures - the if clause • Using if-clauses we

    can change the program flow based on variable values • if-clauses need a comparisson • Instructions caried out when a comparisson is true are called a branch 1 a = 10 i f a == 10: 3 # This i s a branch p r i n t (”a has the value ” + s t r (a) ) • You can add other possible outcomes for i in range (0 , 100) : 2 i f i%2 == 0: pr i nt ( s t r ( i ) + ” can be divided by two without a remainder ”) 4 e l i f i%5 == 0: pr i nt ( s t r ( i ) + ” can be divided by f i v e without a remainder ”) 6 e l s e : pr i nt ( s t r ( i ) + ” can not be divided by e i t h e r f i v e or two without a remainder ”) 19
  30. Exercise for if-clauses Exercise: FizzBuzz - A programming interviewers best

    friend FizzBuzz is a simple test done in programming interviews around the world. Write a program that prints the numbers from 1 to (including) 20 • For multiples of three print Fizz instead of the number • For multiples of five print Buzz instead of the number • For multiples of both three and five print FizzBuzz instead of the number Tip a is a multiple of b if a%b == 0 Tip You can chain multiple conditions with and 1 i f age > 18 and age < 50: p r i nt (”You are young enough”) 3 20
  31. Exercise for if-clauses (contd.) Solution: FizzBuzz - A programming interviewers

    best friend for num in range (1 , 21) : 2 i f num % 3 == 0 and num % 5 == 0: pr i n t ( ’ FizzBuzz ’ ) 4 e l i f num % 3 == 0: pr i n t ( ’ Fizz ’ ) 6 e l i f num % 5 == 0: pr i n t ( ’Buzz ’ ) 8 e l s e : pr i n t ( s t r (num) ) 21
  32. Functions • Often we need to re-use parts of our

    code • Copy & Paste is never the correct answer 22
  33. Functions • Often we need to re-use parts of our

    code • Copy & Paste is never the correct answer • Example: FizzBuzz from the last Exercise 1 def fizzbuzz () : for num in range (1 , 21) : 3 i f num % 3 == 0 and num % 5 == 0: p r i n t ( ’ FizzBuzz ’ ) 5 e l i f num % 3 == 0: p r i n t ( ’ Fizz ’ ) 7 e l i f num % 5 == 0: p r i n t ( ’Buzz ’ ) 9 e l s e : p r i n t (num) 11 fizzbuzz () 22
  34. Functions (contd.) • Functions can have arguments 1 def fizzbuzz

    (n) : for num in range (1 , n) : 3 . . . • Functions can return stuff 1 def fizzbuzz_generator (num) : i f num % 3 == 0 and num % 5 == 0: 3 return ”FizzBuzz” e l i f num % 3 == 0: 5 return ” Fizz ” e l i f num % 5 == 0: 7 return ”Buzz” e l s e : 9 return s t r (num) for i in range (1 , 21) : 11 p r i nt ( fizzbuzz_generator ( i ) ) 23
  35. Exercise for Functions Exercise: Maximum of Three Numbers Write a

    function that returns the maximum of three numbers x,y and z. Tip Start with a function that returns the maximum of two numbers and then use that function inside the function that calculates the maximum of three. Tip The Signature should be 1 def max_of_two(x , y) : . . . 3 def max_of_three (x , y , z ) : 5 . . . 24
  36. Exercise for Functions (contd.) Solution: Maximum of Three Numbers 1

    def max_of_two(x , y) : i f x > y : 3 return x e l s e : 5 return y 7 def max_of_three (x , y , z ) : return max_of_two(x , max_of_two(y , z ) ) 9 p r i n t ( s t r ( max_of_three (9 , 4 , 3) ) ) 25
  37. Why do we need even more structures? Chaos is awesome!

    • We already have variables. What else could we need? • What if we don’t know the number of variables? • What if we have a list of variables? • What if a function should return more then one variable? ⇒ We need mooooore 26
  38. Lists • lists save lists of objects 1 l =

    [ ] • We can add objects of different types to lists 1 l = [ ”One” , 2 , ” three ” , None ] p r i n t ( l ) 3 # [ ’One ’ , 2 , ’ three ’ , None ] • We can access list items by their index (Attention Index starts at 0) 1 l = [ ”one” , ”two” , ” three ” ] p r i n t ( l [ 0 ] ) 3 # one 27
  39. Lists (contd.) • We can append, manipulate and delete items

    from a list 1 l = [ ”one” , ”two” , ” three ” ] # Remove the f i r s t element with VALUE one 3 l . remove (”one”) # [” two” , ” three ”] 5 # Remove the element at index 1 del l [ 1 ] 7 # [” two ”] # Append to the end of the l i s t 9 l . append (” four ”) # [” two” , ” four ”] 11 # Append at a s p e c i f i c posit ion l . i n s e r t (0 , ” s i x ”) 13 # [” s i x ” , ”two” , ” four ”] # L i s t s can contain duplicates (more on t h i s l a t e r ) 15 l = [1 , 2 , 3] l . append (1) 17 # [1 ,2 ,3 ,1] 28
  40. for-loops revisited • You have been using lists all along

    1 # This function returns a l i s t range (0 , 10) 3 • We can iterate over a list using range and the number of elements l = [ ”one” , ”two” , ” three ” , ” four ” ] 2 for i in range (0 , len ( l ) ) : p r i n t ( l [ i ] ) 4 • You can also loop over lists with in (for-each syntax) 1 l = [ ”one” , ”two” , ” three ” ] for element in l : 3 p r i n t (”− ” + s t r ( element ) ) 29
  41. Where is waldo with lists • You can easily check

    if an item is in a list 1 l = [ ”one” , ”two” , ” three ” ] i f ”one” in l : 3 p r i n t (”One i s in the l i s t ”) 30
  42. Exercises for Lists Exercise: Set theory for lists In set

    theory we have the intersection(all elements in both lists) and the union(all unique elements in both lists combined). Example: l1 = [1, 2, 3] l2 = [2, 3, 5] then l1 ∩ l2 = [2, 3] Write a function that calculate the intersection of lists of integers. Test with the following two lists: 1 l1 = [1 , 2 , 3] l2 = [2 ,4 ,5] 31
  43. Exercises for Lists Solution: Set theory for lists l1 =

    [1 , 2 , 3] 2 l2 = [2 , 4 , 5] def i n t e r s e c t i o n ( l1 , l2 ) : 4 s = [ ] for e in l1 : 6 i f e in l2 : s . append ( e ) 8 return s 10 p r i n t (”The i n t e r s e c t i o n i s ” + s t r ( i n t e r s e c t i o n ( l1 , l2 ) ) ) 32
  44. Dictionaries • Typical problem: Saving key-value pairs • Settings •

    User data (name ⇒ Marcel, age ⇒ 22) • Naiive idea: Two lists with coresponding indices keys = [ ] 2 values = [ ] 4 def get ( key , keys , values ) : for i in range (0 , len ( keys ) ) : 6 i f key == keys [ i ] : return values [ i ] Just because it works that doesn’t mean that it is good • Problems? 33
  45. Dictionaries • Typical problem: Saving key-value pairs • Settings •

    User data (name ⇒ Marcel, age ⇒ 22) • Naiive idea: Two lists with coresponding indices 1 keys = [ ] values = [ ] 3 def get ( key , keys , values ) : 5 for i in range (0 , len ( keys ) ) : i f key == keys [ i ] : 7 return values [ i ] Just because it works that doesn’t mean that it is good • Problems? • python comes with a build-in data type for this 33
  46. Dictionaries (contd.) • Initialization 1 d = { ’ one

    ’ : ’ h e l l o ’ , ’two ’ : ’ world ’ , ’ three ’ : ’ ! ’} p r i n t (d [ ’ one ’ ] ) 3 p r i n t (d [ ’two ’ ] ) p r i n t (d [ ’ three ’ ] ) • We often want to access all elements in a dictionary for key , value in d . items () : 2 p r i nt ( s t r ( key ) + ” = > ” + s t r ( value ) ) # one = > h e l l o 4 # two = > world # three = > ! • Sometimes we want just the keys (or the values) 1 d = { ’ one ’ : ’ h e l l o ’ , ’two ’ : ’ world ’ , ’ three ’ : ’ ! ’} for key in d . keys () : 3 i f key == ”one” : p r i n t (”Value i s ” + s t r (d [ key ] ) ) 34
  47. Exercises for Dictionaries Exercise: Counting Words and Characters in a

    text Copy the text from the webex teams chat and count … a) The number of occurences for each letter b) The number of occurences for each word (ignoring upper and lowercase) Tip Use the split to split a space-seperated string into its words. a = ”This i s a text ” 2 s p l i t = a . s p l i t (” ”) p r i n t ( s p l i t ) 4 # [ ’ This ’ , ’ i s ’ , ’a ’ , ’ text ’] Tip You can iterate over the letters in a string like it is a list a = ” spaces ” 2 for char in a : p r i nt (” l e t t e r : ” + s t r ( char ) ) 4 Tip Call the lower() method to convert a string into all lowercase. 35
  48. Exercises for Dictionaries (contd.) Solution: Counting Words and Characters in

    a text a) Number of letters 1 long_string = ” . . . ” count = {} 3 for l e t t e r in long_string : i f l e t t e r in count . keys () : 5 count [ l e t t e r ] += 1 e l s e : 7 count [ l e t t e r ] = 1 p r i n t (” I found the following l e t t e r s ”) 9 p r i n t ( s t r ( count ) ) 36
  49. Exercises for Dictionaries (contd.) Solution: Counting Words and Characters in

    a text b) Number of words 1 word_cnt = {} words = [ ] 3 for w in long_string . s p l i t (” ”) : words . append ( s t r (w) . lower () ) 5 for word in words : 7 i f word in word_cnt . keys () : word_cnt [ word ] += 1 9 e l s e : word_cnt [ word ] = 1 11 p r i n t ( s t r ( word_cnt ) ) 37
  50. Reading files • Reading files is as easy as eating

    a pie in python. 1 f i l e _ i n = open (” te s t . txt ” , ” r ”) for l i n e in f i l e _ i n . r e a d l i n e s () : 3 pr i nt (” Line : ” + s t r ( l i n e ) ) f i l e _ i n . close () 38
  51. Writing files • Writing files is as easy as eating

    a pie in python. l i n e s = [ ” t h i s i s the f i r s t l i n e ” , ”This i s the second l i n e ” ] 2 file_out = open (” test_out . txt ” , ”w”) for l i n e in l i n e s : 4 file_out . write ( l i n e + ”\n”) file_out . close () 39
  52. Exercise for File I/O Exercise: A Simple Copy Software Write

    a simple script that copies a source file into the destination file. You only need to handle text files and can read the content. Tip Start with this code snippet 1 IN_FILE_NAME = ”<add_your_in_file_here >. txt ” OUT_FILE_NAME = ”<add_your_out_file_here >. txt ” 3 f i l e _ i n = open (IN_FILE_NAME, ” r ”) 5 file_out = open (OUT_FILE_NAME, ”w”) 7 # Your code here 40
  53. Übungen zu File I/O Solution: A Simple Copy Software 1

    IN_FILE_NAME = ”<add_your_in_file_here >. txt ” OUT_FILE_NAME = ”<add_your_out_file_here >. txt ” 3 f i l e _ i n = open (IN_FILE_NAME, ” r ”) 5 file_out = open (OUT_FILE_NAME, ”w”) 7 for l in f i l e _ i n . r e a d l i n e s () : out . write ( l ) 9 f i l e _ i n . close () 11 file_out . close () p r i n t (”Copied ” + s t r (IN_FILE_NAME) + ” to ” + s t r (OUT_FILE_NAME) ) 41
  54. Build-in functions • Don’t reinvent the wheel! • → Your

    programming skills are (very probably) worse then those who implemented the standard libary • Batteries included programming 43
  55. random - Accessing the randomness import random • Get a

    random integer in a range 1 rand_int = random . randint (0 , 100) • Random element from a list 1 l = [ ”one” , ”two” , ” three ” ] rand_elem = random . choice ( l ) 44
  56. A (few) Words of Wisdom To think that you can

    become good at programming by watching a lecture or reading a book is like thinking that you can learn to drive by watching Formula One. - Unknown • This course is about the basics. Now you have to program. Fail early - Fail often - Facebook Engineering Mantra • Failing (and the associated searching of errors) is part of the programming experience! Programmieren ist wie Puzzle spielen nur das alle 5 Minuten ein wild gewordener Affe die Stücke wieder durcheinander bringt. - Unknown 45
  57. Projects - Introduction • Following are three proposed programming projects

    you can work on • Projects one and two are slightly more complex (and math-heavy) • If you have your own idea: go with it • Feel free to collaborate on the projects 46
  58. Projects - Introduction • Following are three proposed programming projects

    you can work on • Projects one and two are slightly more complex (and math-heavy) • If you have your own idea: go with it • Feel free to collaborate on the projects Walk-In Clinic Monday to Friday 11:15 - 12:00, 4th floor 46
  59. Project 1 - Numerical Integration with Polynoms The goal of

    this project is to calculate the area under a polynom in the interval [0, 10]. The polynom is defined in a text file and is passed on to the program at runtime. $ python3 integrate . py polynom . txt As a reminder, polynoms can be defined by their coefficients as p(x) = n ∑ i=0 αi xi and for integration the trapez rule defines, for a interval [c, d] and a function f d ∫ c f dx ≈ QT [c,d] (f) = (d − c) 2 [f(c) + f(d)] Bonus: For better precission you can use the summed trapez rule that uses N subintervals (xi, xi+1)∀i = 1, . . . , N + 1 mit xi = c + (i − 1)/h with fixed interval width h = (d−c) N 47
  60. Project 2 - Least-Square Fitter The goal of this project

    is to calculate a best-fit line between datapoints. The datapoints(x,y pairs) should be read from a text file and the program should return the fit-parameters. As a reminder: We look at the over-determined system of linear equations (in matrix notation) n ∑ j=1 Xijβj = yi , (i = 1, . . . , m) with m linear equations and n coefficients. In matrix notation: Xβ = y. Since the system is over-determined there is no gurantee that a perfect solution exists. We therefor look at the optimization problem ˆ β = arg min β S(β) with cost function S(β) = ||y − Xβ||2 Some calculations then yield ˆ β = (XTX)−1XTy as a solution. Tip XTX is p.s.d. ⇒ Use Cholesky decomposition(C = LTL) that defines C−1 = (L)−1(LT)−1. L is a triangular matrix. Inversion follows trivially from back-substitution. 48
  61. Project 3 - Encrypting Text The goal of this project

    is to develop a simple encryption/decryption software based on the Caesar algorithm. The path to a single text file or a directory containing text files is passed to the program as an argument. The content of each of these files should then be encrypted and put into a .crypt.txt file. For encryption use the shift constant K that can be passed by the user. 1 $ python3 caesar . py 3 docs/ As a reminder: The Caesar algorithm uses a constant shift constant K. For a text each letter is shifted by that constant in the alphabet. As an example for K = 3 A ⇒ D , B ⇒ E , . . .. Bonus: Write another program that can decrypt the files again. Bonus: The caesar encryption is not cryptographically sound. If you have access to a sufficiently long text you can find the constant K by counting the occurences of each letter. The most common letter in the English language is the e. Write a program that ”cracks”your encryption. 49
  62. Tuples • tuples are immutable lists • In English: Once

    created the elements in a tuple can not be altered 1 t = (1 , 2 , 3) t = ( ’ Marcel ’ , 22) • Accessing an element p r i n t (”The element i s ” + s t r ( t [ 0 ] ) ) 2 • Tuples with one element still need a comma 1 t = (1 ,) • We can’t add/remove/delete parts of a tuple ⇒ create a new one with parts of others 1 t1 = (1 ,) t2 = (3 , 4 , 5) 3 t = t1 + t2 [ 1 : 3 ]
  63. Sets • sets are unorderd, unique lists • In English:

    The order in which elements are added is ignored • In English: Every value occures only once in a set • Operations are same as on lists A = {1 , 2 , 3} 2 A. add (4) # Discard w i l l ignore non−e x i s t i n g elements . remove w i l l throw an e r r o r 4 A. discard (5) A. remove (5) • Basic set operations are also supported 1 A = {1 , 2 , 3} B = {3 , 4 , 5} 3 A. union (B) A. i n t e r s e c t i o n (B) 5
  64. os - Access to the Operating System import os •

    Create a folder 1 os . mkdir (” testordner ”) • Rename a folder or a file 1 os . rename(” testordner ” , ” testordner2 ”) • Join paths 1 path = os . path . j o i n (”/home/marcel” , ”Downloads”) • Delete files and folders 1 os . remove (” datei . txt ”) # Delete f i l e os . rmdir (” testordner /”) # Delete f o l d e r 3 os . rmdirs (” testornder /”) # Delete f o l d e r r e c u r s i v l y
  65. datetime - Calculating dates and times 1 import datetime •

    Get current time 1 now = datetime . datetime . now() • Specify a future time 1 # year , month , day , hour , minute , seconds , microseconds l a t e r = datetime . datetime (2019 , 2 , 21 , 10 , 8 , 22 , 0) • Calculating differences delta = l a t e r − now 2 p r i n t (”The d i f f e r e n c e in seconds i s ” + s t r ( delta . seconds ) )
  66. sys - Accessing system information import sys • Accessing command

    line parameters (i.e. when calling python3 test.py parameter1 parameter2) 1 p r i n t (”Name of the s c r i p t : ” + s t r ( sys . argv [ 0 ] ) ) # In the example : te s t . py 3 p r i n t (” F i r s t parameter : ” + s t r ( sys . argv [ 1 ] ) ) # In the example : parameter1
  67. math - Basic mathematics import math • Constants like π,

    e, ... 1 PI = math . pi • Triangular functions (note that all values are in radians) 1 math . sin (0.5) math . cos (0.5) • Convert angle from radians to degrees and vice-versa math . degrees (0.5) # radians to degrees 2 math . radians (290) # degrees to radians • Math functions math . pow(x , y) # x^y 2 math . sqrt (x) # square root of x
  68. Links • The python3 standard library: https://docs.python.org/3/library/ • Installing python

    for development: Mac: https://docs.python-guide.org/starting/install3/osx/ Windows: https://docs.python-guide.org/starting/install3/win/ Linux: https://docs.python-guide.org/starting/install3/linux/ • The core concepts of python: https://www.python-course.eu/python3_history_and_philosophy.php • Setup the atom editor for python development: https://hackernoon.com/ setting-up-a-python-development-environment-in-atom-466d7f48e297