|
|
Line 11: |
Line 11: |
| | | |
| >>> | | >>> |
− |
| |
| | | |
| ** install python idle 2.7 – ways to interact with Python: shell + editor | | ** install python idle 2.7 – ways to interact with Python: shell + editor |
Line 163: |
Line 162: |
| | | |
| [[Anthology]] | | [[Anthology]] |
− |
| |
− | # Some Python vocabulary
| |
− | ## the string or string object is a MODULE in Python
| |
− |
| |
− | # A MODULE simply is a file, which contains Python statements.
| |
− | Normally among these there are:
| |
− | * definition statements -> the execution of the module defines some functions
| |
− | * class statements -> the execution of the module defines some classes.
| |
− | A module may also contain names (variables) and other directly executable
| |
− | Python statements.
| |
− | # you can write your own definitions/functions and save them I a file that you can import into another python-file
| |
− | # such a document is an external module, called at the beginning of a script using 'import name_module'
| |
− | # CLASSES contain METHODS, a series of FUNCTIONS that are part of a class
| |
− | # the string-module contains classes with functions that allow you to calculate the length of the sting, slice etc
| |
− |
| |
− | # Anything in Python can be an OBJECT, because it can be assigned to a variable or can be an argument (input) for a function - OBJECT ORIENTED PROGRAMMING
| |
− |
| |
− | # an ATTRIBUTE is is a way to move from one object to the other
| |
− | # “Apply the power of the almighty dot” - objectname.attributename – and magic!
| |
− |
| |
− | # !!! to know the attributes of an object: dir()
| |
− | # This means the object has a method called __dir__()
| |
− | # dir() calls this method and prints the list of attributes
| |
− |
| |
− | dir(letter)
| |
− |
| |
− | # choose for example .endswith()
| |
− | sentence = "This is so exciting!"
| |
− | suffix = "ing!"
| |
− | print sentence.endswith(suffix)
| |
− | len(sentence)
| |
− | print sentence.endswith(suffix,20) -> False
| |
− | print sentence.endswith(suffix,16) -> True
| |
− | print sentence.endswith(suffix,16,20) -> True
| |
− |
| |
− | # Exercise: think of formula that gives TRUE for suffix 'is'
| |
− | # a long string can be annotated using 3 """ a lot of words """
| |
− | # if you have a very long string, you better use:
| |
− | very_long_string = (
| |
− | "For a long time I used to go to bed early. Etc etc …."
| |
− | )
| |
− |
| |
− | ### From STRINGS to LISTS
| |
− |
| |
− | # DISADVANTAGE fo STRINGS: they're immutable
| |
− | # that is the reason you want to change your string into a list
| |
− | sentence.split()
| |
− | # and save it as a new variable
| |
− | list_words = sentence.split()
| |
− |
| |
− | # some of the attributes of string can be used for lists
| |
− | # Exercise: which previously mentioned attributes function for lists?
| |
− |
| |
− | # change a list
| |
− | list_words[3] = "wtc25"
| |
− | print list_words
| |
− |
| |
− | # remove words
| |
− | list_words[2:3] = []
| |
− | note: list_words[2] = [] → this removes your 3rd element and replaces it by an empty sublist ('nested list')
| |
− |
| |
− | # put back words
| |
− | list_words[2:3] = ["so", "exciting"]
| |
− |
| |
− | # you can shorten a list
| |
− | list_words[-3:]
| |
− | # and save the shortened list into a new variable – the old continues to exist
| |
− | yezzzz = list_words[-3:]
| |
− |
| |
− | # you can combine lists, group two in one
| |
− | text = [list_words, yezzzz]
| |
− | # and you can call an element of a sublist
| |
− | word = text[1][2]
| |
− |
| |
− | # you can concatenate lists, merge two into one
| |
− | print list_words + yezzzz
| |
− | poem = list_words + yezzzz
| |
− |
| |
− | # you can add words to your list
| |
− | poem.append("is")
| |
− | print poem
| |
− |
| |
− | # you can sort your list alphabetically
| |
− | poem.sort()
| |
− |
| |
− |
| |
− |
| |
− | # you transform your list into a string again
| |
− | " ".join(poem)
| |
− | # detail: the whitespace / try without
| |
− | " ".join(poem) + "?"
| |
− |
| |
− | # you can empty your list // we have a brand new sheet of paper!!
| |
− | poem[:] = []
| |
− |
| |
− |
| |
− |
| |
− | ### LOOPS & CONDITIONS
| |
− |
| |
− | # using scripts (modules)
| |
− | # shell is ok to try out lines of code, but for longer bits we use script, or module
| |
− | # save file as .py
| |
− | #!/usr/bin/env python
| |
− | # -*- coding: utf-8 -*-
| |
− |
| |
− |
| |
− | # REMIX SONG using STRING, LIST and FOR, IN, IF, WHILE
| |
− |
| |
− | # Prince, Purple Rain
| |
− | song = (
| |
− | “I never meant to cause you any sorrow\n
| |
− | ”
| |
− | “I never meant to cause you any pain
| |
− | \n”
| |
− | “I only wanted to one time to see you laughing
| |
− | \n”
| |
− | “I only wanted to see you\n
| |
− | ”
| |
− | “Laughing in the purple rain
| |
− | .”
| |
− | )
| |
− |
| |
− | # transform string in list of words
| |
− | song = song.split()
| |
− |
| |
− | # double all words of list and print again as song
| |
− | remix1 = [word*2 for word in song]
| |
− | print(" ".join(remix1))
| |
− | remix1 = remix1[:16]
| |
− | print(" ".join(remix1))
| |
− |
| |
− | ## FOR, IN, IF
| |
− | # rewrite the songs with the words that count more than 4 letters
| |
− | remix2 = [word for word in song if len(word) <= 4]
| |
− | remix2 = "°*@".join(remix2)
| |
− | print(remix2)
| |
− |
| |
− | # transform all letters of song in lowercaps
| |
− | remix2 = remix2.lower()
| |
− |
| |
− | # Capitalize the song and end with a dot // Hèhè, a new sentence!
| |
− | print(remix2.capitalize() + ".")
| |
− |
| |
− | # print a list of words of the song + next to each word its length
| |
− | for word in song:
| |
− | print(word, len(word))
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | # print a list of words of the song + next to each word its position in the sentence
| |
− | for position in range(len(song)):
| |
− | print position, song[position]
| |
− |
| |
− | # rewrite song by copying words with r to the beginning of the song
| |
− |
| |
− | for word in song[:]: # Loop over a copy of the list
| |
− | if "r" in word:
| |
− | song.insert(0, word)
| |
− | print("\n".join(song))
| |
− |
| |
− | # create an Anaerobe of the song (remove all r's)
| |
− | http://oulipo.net/fr/contraintes/anaerobie
| |
− | song = [woord.replace("r","") if "r" in word else word for word in song]
| |
− | print(song)
| |
− | song = " \n".join(song)
| |
− |
| |
− | # Exercise: remove letter 't' and rewrite song using capitals, comma's and hard returns
| |
− |
| |
− |
| |
− | # WHILE
| |
− | # A while loop statement in Python programming language repeatedly executes a target statement
| |
− | as long as a given condition is true.
| |
− |
| |
− | # Print your song 9 times
| |
− | amount = 0
| |
− | while (amount < 10):
| |
− | print(song)
| |
− | amount = amount + 1
| |
− | else:
| |
− | print "Python can also be a printing factory!"
| |
− |
| |
− | # The reader can decide how many times she would like to see the song
| |
− | nbr = raw_input("Give a number :")
| |
− | amount = 0
| |
− | while (amount < 5):
| |
− | print gedicht
| |
− | amount = amount + 1
| |
− | else:
| |
− | print "Python can also be a printing factory!"
| |
− |
| |
− |
| |
− | # write your text to a file
| |
− | with open('song.txt', 'a') as f:
| |
− | f.write("title song" + "\n" + song)
| |
− |
| |
− | ### TEXT
| |
− |
| |
− | # you can print any text file
| |
− | # note: in this case the text is in the same folder as the script, otherwise adapt path
| |
− | with open('peter_rabbit.txt') as f:
| |
− | for line in f:
| |
− | print line
| |
− |
| |
− | # now you can call operations on this text
| |
− | new_text = []
| |
− | with open('peter_rabbit.txt') as f:
| |
− | for line in f:
| |
− | for word in line:
| |
− | if len(word) >= 5:
| |
− | newtext.append(word)
| |
− | print(“ “.join(new_text))
| |
− |
| |
− |
| |
− | # remove punctuation
| |
− | import string
| |
− | def remove_punct(f):
| |
− | tokens = (' '.join(line.replace('\n', '') for line in f)).lower()
| |
− | for c in string.punctuation:
| |
− | tokens= tokens.replace(c," ")
| |
− | return tokens
| |
− |
| |
− | tokens = remove_punct(f)
| |
− |
| |
− | # random choice & shuffle
| |
− | from random import choice, shuffle
| |
− | names = [peter, benjamin, flopsy, tod, tom, samuel, pie, ginger, moppet, nutkin, timmy, tailor, johnny, mice, tittlemouse, tiggy, rabbit, jemima, jeremy, robinson, pigling]
| |
− |
| |
− | def select(names):
| |
− | name = choice(names)
| |
− | return name
| |
− |
| |
− | mix = shuffle(names)
| |
− |
| |
− | # proposal to publish an anthology as a pdf
| |
− | * play with search for words in texts with certain suffixes from texts, remove letters
| |
− | * write new text to file
| |
− |
| |
− | * once all files are finished:
| |
− | $ cat partfilename* > outputfilename
| |
− | $ pandoc input.txt -o output.pdf
| |
Literary Python for Beginners
LETTER * WORD * SENTENCE
- Introduction to the objects string & list with their different attributes
- uses the shell or integrated development environment
- run python 2.7 – installed by default on all platforms
$ python
>>>
- install python idle 2.7 – ways to interact with Python: shell + editor
# USING STRINGS
A string is a chain of characters / text and can contain any type of characters
A string is defined by " "
* write letter using STRING
>>> "a"
* write several letters
>>> "a, b, c, d"
* write combinations
>>> "a" + "b"
>>> 3
>>> "a" + "and" + "b"
>>> "a" + " and " + "b"
>>> "a" + "+ " + 3 + " is a3" ***
>>> 3*3
>>> "a" + "+ " + "3" + " is a3"
>>> 3 * "algolit" + " in wtc25"
- Exercise: Write 'I write the alphabet 3 times.'
Note: there are always different possible solutions
* write string as variable
- Avoids having to retype your string each time you use it
- You can change values at any time of the writing process
>>> letter = "a"
>>> print letter
>>> word = "algolit"
>>> print word
>>> sentence = "I learn to read and write again at wtc25"
>>> print sentence, letter
- Exercise: print your letter, word, sentence
* add punctuation
>>> print letter + " " + word + " " + sentence + "."
>>> print letter + "! " + word + "? " + sentence + "."
>>> letter = "i"
>>> print letter + "! " + word + "? " + sentence + "."
- Exercise: change content of one of variables, over and over, see how result changes
* calculate!
>>> len(letter)
>>> len(word)
>>> len(sentence)
- we can also consider the letter/word/sentence as fields or grids, in which each letter occupies a specific position
Note: computer starts to count from 0
>>> word[0]
>>> word[3]
- Exercise: what is the middle letter of your sentence?
* Slicing and concatenating strings in order to select letters & compose new words
>>> zin[-1]
>>> word[-2]
>>> word[0:2]
or
>>> word[:2]
- find 3 letters in the middle
>>> word[2:5]
- find from 3rd letter till end
>>> word[2:]
- Exercise: If the word is "solidarity" is, what do you read here?
word[:5] + word[3:]
- Exercise: rewrite the word as 'liquidity', using slicing
* write with capitals
>>> print letter.lower()
>>> print sentence.upper()
* write first word of sentence with capital letter
>>> print sentence.capitalize()
* note the difference
>>> sentence.title()
>>> word.title()
Some_Python_Vocabulary
Loops_and_conditions
Anthology