1 / 57

Programming for Linguists

Programming for Linguists. An Introduction to Python 17 /11/2011. From Last Week…. Write a script called yourname_ex1.py that calculates the average weight of 5 variables: 36.5 kg 47.8 kg 33 kg 68.3 kg 72 kg. w1 = 36.5 w2 = 47.8 w3 = 33 w4 = 68.3 w5 = 72

neva
Download Presentation

Programming for Linguists

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programming for Linguists An Introduction to Python17/11/2011

  2. From Last Week… • Write a script called yourname_ex1.py that calculates the average weight of 5 variables: • 36.5 kg • 47.8 kg • 33 kg • 68.3 kg • 72 kg

  3. w1 = 36.5 w2 = 47.8 w3 = 33 w4 = 68.3 w5 = 72 average_w = (w1 + w2 + w3 + w4 + w5)/5 print “The average weight of”, w1, “,”, w2, “,”, w3, “,”, w4, “and”, w5 “kg is:”, average_w, “kg.”

  4. Write a script called yourname_ex2.py that assigns an integer value to a variable “age” and prints “you are a minor” if the value is under 18, that prints “you are over 18” if the value is 18 or more and prints “you are kidding” if the value is less than 0.

  5. age = 0 if age>=0 andage<18 : print "you are a minor” elifage>=18 : print "you are over 18” else: print "you are kidding"

  6. Nested Conditionals • One or more conditionals are nested within another ifage>= 0: ifage <18: print “you are a minor” else: print “you are over 18” else: print “you are kidding”

  7. Nested conditionals are more difficult to read • They can often be simplified by logical operators

  8. ifage>=0: ifage<18: print “you are a minor”ifage>=0 andage<18:print “you are a minor”if 0 <= age < 18:print “you are a minor”

  9. Conversion Functions • Python has a number of built-in functions • To convert an argument into respectively an integer, a string and a floating-point number: • int(20) • str(20) • float(20)

  10. Try this: • convert 104.89 into an integer • convert 104.89 into a string • convert 37 into a floating-point number • make the division of 10/3 a floating-point division using a type conversion function

  11. Python’s Math Module • Module = a file that contains a collection of related functions • If you want to use it, you have to import it first import math  from __future__ import division • Every import command is usually given at the beginning of a script

  12. If you want to access one of the functions you have to use dot notation: e.g. use the square root function from the math module:import mathmath.sqrt(64) math.exp(8)math.pow(8, 2) # 8 raised to power 2 • or import each function from the module:from math importsqrt, exp, powsqrt(64)

  13. Seehttp://docs.python.org/release/2.6.2/library/math.htmlfor a full overview of all math functions in Python

  14. Composition • So far: variables, statements, expressions in isolation • Combinations are also possible: • the argument of a function can also be a functione.g. math.sqrt(int(64.3)) • note: the inside function is executed first

  15. Some String Methods in Python a = “this is a sentence.” • a.capitalize( )  “This is a sentence.” • a.lower( )  “this is a sentence.” • a.upper( )  “THIS IS A SENTENCE.” • a.title( )  “This Is A Sentence.” • a.center(25)  “     this is a sentence.     ” • a.ljust(25)  “this is a sentence.          ” • a.rjust(25)  “          this is a sentence.”

  16. a = “this is a sentence.” • a.count(“this”) 1 • a.startswith(“.”)  False • a.endswith(“.”)  True • a.replace(“a”, “no”)  “this is no sentence.” • a.find(“i”)  2 (lowest index) • a.index('i')  2 (lowest index) • a.rfind('i')  5 (highest index) • a.rindex('i')  5 (highest index)

  17. Working with Strings • A string is a sequence of characters • Youcanaccess the charactersone at a time with the indexin between square bracketsfruit = “bananas”first_letter = fruit[0]second_letter = fruit[1]last_letter = fruit[-1]

  18. Traversal with a For Loop • When you need to process one character at a time: • start at the beginning • select each character in turn and do something with it • continue to the end of the string • This pattern of processing = traversal

  19. forletter in fruit: print letter forelemin fruit: print elem forfin fruit: print f print f

  20. Each time through the loop, the next character in the string is assignedto the variableafter the for statement: letter, elem, f • The loop continuesuntil no characters are left • Ifyoudo somethingwitheach element in the for loop, you have touse the samevariable name as in the for loop • Outside the for loop, the variableonly has the last item as a value

  21. String Slices • A segment of a string is called a slice • Selecting a slice is similar to selecting a charactere.g.s = “Monty Python”print s[0:5]print s[6:12]

  22. The operator [n:m] returns the part of the string from the character with index n up to (but excludes) the character with index m • Also possible:[:n]  from the beginning of the string up to the character with index n[n:]  from the character with index n till the end of the string

  23. What is the result of the following?fruit = “bananas”fruit[3:3] • And fruit[:] ?

  24. strings are immutable: you can’t change an existing string • you can create a new string that is a variation on the original Starting from “Hello, world!”, make a new variable with the value “Jello, world!” using the bracket operator

  25. greet = “Hello, world!”new_greet = “J” + greet[1:] print new_greet • Thisexampleconcatenates a new first letter onto a slice of greet • It has no effect on the originalstring

  26. The In Operator • a boolean operator thattakestwostrings and returns Trueif the firstappears as a substring in the second“a” in “banana”True“Python” in “Hello, hello” False

  27. Looping and Counting word = “abracadabra” count = 0 for letter in word: if letter == “a”: count = count + 1 print count

  28. You have to initialize a variable (e.g. count) first and set it to 0 • The for loop checks every character of the string and adds 1 to count if the character is an “a” • When the for loop ends, count contains the result

  29. String Comparison • Relational operators work on strings • ==, <, > e.g. word1 == word2  is equal to word1 < word2 comes before (alphabetically) word1 > word2comes after (alphabetically)

  30. In Python all the upper-case letters comebefore all the lowercase letters • Tip: convertstrings to a standardformat, e.g.with the function .lower( ), beforeperforming the comparison

  31. Functions • Some predefined functions: • math.sqrt(64) • a.upper(“hello”) • len(“hello”) • int( ) • str( ) • float( )

  32. Function = a named series of statements that performs a computation • named: you define a function  again give it a name that describes what the function is doing • sequence of statements: e.g. assign statements and/or print statements that are to be executed in the order predetermined by you

  33. Creating New Functions • You always have to define a new function:def name( ): #enter e.g. def print_address( ): print “Lange Winkelstraat 40” print “2000 Antwerpen” • In the rest of the program you can call this function by typing print_address( )

  34. Rules for names = variables: • first character cannot be a number • you cannot use a Python keyword as a name • case sensitive • Some tips: • try to choose a name that relates to what the function is doing • avoid choosing the same name for a variable and a function

  35. To end a function: • in interactive mode  enter empty line • in script mode  new line/empty line(s) • Note: functions can take no, one or more argument(s) • type(37) • print_address( )

  36. More arguments: def print_word(token, number): print token*number word = “Nevermore”print_word(word, 3) • Note: the names of the arguments are only temporary substitutes for other variables in the program: parameters

  37. Composition • Functions you created yourself can also be combined: def repeat_words( ): print_word(word, 3 ) print_word(word, 4 )repeat_words ( )

  38. Try it yourself: • assign the word “python” to a variable, define a function that calculates and prints the word length of “python”, 1) using no argument 2) using the variable as an argument

  39. 1) word = “python” def word_length( ): print len(word) word_length( )

  40. 2) defword_length(word): print len(word) word_length(“hello”) text = “hi” word_length(text)

  41. What would happen if you try to print the variable word outside the function if it is inside the function only?def word_length( ): word = “python” print len(word) print word

  42. When you create a variable inside a function, it is local, i.e. it only exists inside the function !

  43. Flow of Execution • The order in which statements are executed • Begins at the top of the program • One at a time • From top to bottom • Functions do not change the order, but statements inside a function are only executed after the function is called

  44. Functions are like a detour: • statements are executed in order • a function is called • the program jumps to the body of the function and executes all statements inside the body (and does the same for functions within the function) • the program continues with the statements under the function call

  45. Arguments and Parameters def print_twice(franky): print franky print franky • the function assigns the argument to a parameter named franky • whenever the function is called it will print the value of the parameter you pass into the function twice

  46. Try: print_twice(‘spam’)print_twice(101)print_twice(123.45) • What would happen if you try:print_twice(‘spam’*5)print_twice(franky)

  47. Fruitful Functions vs. Void Functions • Fruitful functions: return a value • e.g. >>>result = len(“python”)>>>type(result)<type ‘int’> • Void functions: do not return a value • e.g.>>>result = print_twice(“python”)>>>type(result)<type ‘NoneType’>

  48. Why Use Functions? • Less work for you: if you write a function once, you can use it again as much as you want during the program • You can group a piece of your code, so that it is easy to read and debug • If there is a bug, you only need to correct it once

  49. Why Use Functions? (2) • If you save them, you can import them in other scripts • You can use the return values of fruitful functions in the rest of your program

  50. Ex. Define a function that will count the letters of a word and prints the word + “has less than 5 letters” or “has more than 5 letters” or “no word given” if you put in an empty string “” .

More Related