Actions

Python for beginners

From Algolit

Revision as of 19:28, 14 November 2015 by An (talk | contribs) (Created page with "== Literary Python for Beginners == === LETTER * WORD * SENTENCE === * Introduction to the objects string & list with their different attributes * uses the shell or integrat...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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!

    • the length of the string

>>> 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

    • find last letter

>>> zin[-1]

    • find last but one letter

>>> word[-2]

    • find first two letters

>>> 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

  1. Some Python vocabulary
    1. the string or string object is a MODULE in Python
  1. 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.

  1. you can write your own definitions/functions and save them I a file that you can import into another python-file
  2. such a document is an external module, called at the beginning of a script using 'import name_module'
  3. CLASSES contain METHODS, a series of FUNCTIONS that are part of a class
  4. the string-module contains classes with functions that allow you to calculate the length of the sting, slice etc
  1. 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
  1. an ATTRIBUTE is is a way to move from one object to the other
  2. “Apply the power of the almighty dot” - objectname.attributename – and magic!
  1.  !!! to know the attributes of an object: dir()
  2. This means the object has a method called __dir__()
  3. dir() calls this method and prints the list of attributes

dir(letter)

  1. 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

  1. Exercise: think of formula that gives TRUE for suffix 'is'
  2. a long string can be annotated using 3 """ a lot of words """
  3. 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 …." 
  ) 
      1. From STRINGS to LISTS
  1. DISADVANTAGE fo STRINGS: they're immutable
  2. that is the reason you want to change your string into a list

sentence.split()

  1. and save it as a new variable

list_words = sentence.split()

  1. some of the attributes of string can be used for lists
  2. Exercise: which previously mentioned attributes function for lists?
  1. change a list

list_words[3] = "wtc25" print list_words

  1. remove words

list_words[2:3] = [] note: list_words[2] = [] → this removes your 3rd element and replaces it by an empty sublist ('nested list')

  1. put back words

list_words[2:3] = ["so", "exciting"]

  1. you can shorten a list

list_words[-3:]

  1. and save the shortened list into a new variable – the old continues to exist

yezzzz = list_words[-3:]

  1. you can combine lists, group two in one

text = [list_words, yezzzz]

  1. and you can call an element of a sublist

word = text[1][2]

  1. you can concatenate lists, merge two into one

print list_words + yezzzz poem = list_words + yezzzz

  1. you can add words to your list

poem.append("is") print poem

  1. you can sort your list alphabetically

poem.sort()


  1. you transform your list into a string again

" ".join(poem)

  1. detail: the whitespace / try without

" ".join(poem) + "?"

  1. you can empty your list // we have a brand new sheet of paper!!

poem[:] = []


      1. LOOPS & CONDITIONS
  1. using scripts (modules)
  2. shell is ok to try out lines of code, but for longer bits we use script, or module
  3. save file as .py
  4. !/usr/bin/env python
  5. -*- coding: utf-8 -*-


  1. REMIX SONG using STRING, LIST and FOR, IN, IF, WHILE
  1. 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 .” )

  1. transform string in list of words

song = song.split()

  1. 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))

    1. FOR, IN, IF
  1. 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)

  1. transform all letters of song in lowercaps

remix2 = remix2.lower()

  1. Capitalize the song and end with a dot // Hèhè, a new sentence!

print(remix2.capitalize() + ".")

  1. print a list of words of the song + next to each word its length

for word in song: print(word, len(word))



  1. 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]

  1. 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))

  1. 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)

  1. Exercise: remove letter 't' and rewrite song using capitals, comma's and hard returns


  1. WHILE
  2. A while loop statement in Python programming language repeatedly executes a target statement

as long as a given condition is true.

  1. Print your song 9 times

amount = 0 while (amount < 10):

  print(song)
  amount = amount + 1 

else: print "Python can also be a printing factory!"

  1. 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!"


  1. write your text to a file

with open('song.txt', 'a') as f: f.write("title song" + "\n" + song)

      1. TEXT
  1. you can print any text file
  2. 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 
  1. 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))


  1. 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)

  1. 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)

  1. 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