Home and Building Automation Systems

Operator Description + plus Sum ... that performs a computation ... Write a string to the file . Conditionals and control flow...

0 downloads 225 Views 1MB Size
Python BASICS Introduction to Python programming, basic concepts: formatting, naming conventions, variables, etc.

Editing / Formatting • Python programs are text files • The end of a line marks the end of a statement • Comments:

print 1+1 #statement

# inline comment

– Inline comments start with a #

3/12/2015

Python basics

2

Editing / Formatting • Code blocks are defined through identation – mandatory – 4 spaces strategy • Use 4 spaces for code identation • Configure the text editor to replace tabs with 4 spaces (default in PyDev) • Exploit automatic identation 3/12/2015

def print_name(): # this is a block 4 spaces name = 'sheldon' 4 spaces surname = 'cooper' 4 spaces print name, surname 4 spaces

Python basics

3

Keywords • • • • • • • • • •

3/12/2015

and del from not while as elif global or with

• • • • • • • • • • •

assert else if pass yield break except import print class exec Python basics

• • • • • • • • • •

in raise continue finally is return def for lambda try 4

Numbers and math Operator

Description

+ plus

Sum

- minus

Subtraction

/ slash

Floor division

* asterisk

Multiplication

** double asterisk

Exponentiation

% percent

Remainder

< less-than

Comparison

> greater-than

Comparison

<= less-than-equal

Comparison

>= greater-than-equal

Comparison

3/12/2015

Python basics

5

Numbers and math print "I will now count my chickens:" print "Hens", 25 + 30 / 6 print "Roosters", 100 - 25 * 3 % 4 print "Now I will count the eggs:" print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6 print "Is it true that 3 + 2 < 5 - 7?" print 3 + 2 < 5 - 7 print "What is 3 + 2?", 3 + 2 print "What is 5 - 7?", 5 - 7 print "Oh, that's why it's False." print "How about some more." print "Is it greater?", 5 > -2

3/12/2015

Python basics

6

Order of operations • PEMDAS – – – – – –

Parenthesis Exponentiation Multiplication Division Addition Subtraction

• Same precedence – Left to right execution 3/12/2015

Python basics

7

Naming conventions • joined_lower – for functions, variables, attributes

• joined_lower or ALL_CAPS – for constants

• StudlyCaps

#variables my_variable = 12 my_second_variable = 'Hello!' #functions my_function(my_variable) my_print(my_second_variable)

– for classes

3/12/2015

Python basics

8

Variables • Variable types are not explicitly declared • Runtime type-checking • The same variable can be reused for holding different data types

#integer variable a = 1 print a #float variable a = 2.345 print a

#re-assignment to string a = 'my name' print a # double quotes could be # used as well a = "my name" print a

3/12/2015

Python basics

9

More variables • Actual type can be checked through the interpreter • Check the first result, what happened? • Display 01,010,01010 • Display 08 • Octal numbering system?

3/12/2015

Python basics

10

Examples cars = 100 space_in_a_car = 4.0 drivers = 30 passengers = 90 cars_not_driven = cars - drivers cars_driven = drivers carpool_capacity = cars_driven * space_in_a_car average_passengers_per_car = passengers / cars_driven print 'There are', cars, 'cars available.' print 'There are only', drivers, 'drivers available.' print 'There will be', cars_not_driven, 'empty cars today.' print 'We can transport', carpool_capacity, 'people today.' print 'We have', passengers, 'to carpool today.' print 'We need to put about', average_passengers_per_car,'in each car.'

3/12/2015

Python basics

11

Strings • Defined by using quotes – "first string" – 'second string'

• Immutable • Each character in a string is assigned a number – the number is called index

• Mathematical operators cannot be applied • Exceptions – + : means concatenation – * : means repetition 3/12/2015

Python basics

12

Strings name = 'Anthony "Tony" Stark' age = 45 # not a lie height = 174 # cm weight = 78 # kg eyes = 'brown' teeth = 'white' hair = 'brown' print "Let's talk about %s." % name print "He's %d cm tall." % height print "He's %d pounds heavy." % weight print "Actually that's not too heavy." print "He's got %s eyes and %s hair." % (eyes, hair) print "His teeth are usually %s depending on the coffee." % teeth # this line is tricky, try to get it exactly right print "If I add %d, %d, and %d I get %d." % (age, height, weight, age + height + weight) 3/12/2015

Python basics

13

Strings Specifiers • %s, format strings %d, format name = 'Anthony•"Tony" Stark' numbers age = 45 # not a lie • %r, raw representation height = 174 # cm weight = 78 # kg eyes = 'brown' teeth = 'white' hair = 'brown'

Tuple

print "Let's talk about %s." % name print "He's %d cm tall." % height print "He's %d pounds heavy." % weight print "Actually that's not too heavy." print "He's got %s eyes and %s hair." % (eyes, hair) print "His teeth are usually %s depending on the coffee." % teeth # this line is tricky, try to get it exactly right print "If I add %d, %d, and %d I get %d." % (age, height, weight, age + height + weight) 3/12/2015

Python basics

14

More strings x = "There are %d types of people." % 10 binary = "binary" do_not = "don't" y = "Those who know %s and those who %s." % (binary, do_not) print x print y print "I said: %r." % x print "I also said: '%s'." % y hilarious = False joke_evaluation = "Isn't that joke so funny?! %r" print joke_evaluation % hilarious w = "This is the left side of..." e = "a string with a right side." print w + e

3/12/2015

Python basics

15

Escape sequences • \n – Line feed + Carriage return

• \\ – Prints a «\»

• We want to print «Hello» – print "I said: "Hello" " – Syntax error: no difference between quotes

• Solution: using escape sequences – print "I said: \“Hello\" " 3/12/2015

Python basics

16

Getting input from people • Asking questions – We want to ask the user’s age – We want to ask the user’s height

• The raw_input()function allows to read from the console print "How old are you?", age = raw_input() print "How tall are you?", height = raw_input() print "You are %s years old, and you are about %s cm tall." % (age, height)

3/12/2015

Python basics

17

More input height = int(raw_input("How tall are you? ")) name = raw_input("What's your name? ") print type(height) print type(name) print("Hello %s, you are about %d tall" %(name, height) )

3/12/2015

Python basics

18

Command-line parameters • Python scripts can receive launch parameters – Placed just after the script name – Any number – Accessible through sys.argv

• sys – Python module to handle system-level operations

• argv – Argument variable – for handling command-line parameters 3/12/2015

Python basics

19

Command-line parameters from sys import argv script, first, second, third = argv print 'The script is called:', script print 'Your first variable is:', first print 'Your second variable is:', second print 'Your third variable is:', third

3/12/2015

Python basics

20

Functions • A function is a named sequence of statements that performs a computation – Definition first: • specify the name and the sequence of statements

– Then usage: • “call” the function by name

• Examples – Type conversion functions • int(‘32’)  32 • str(3.2479)  ‘3.2479’ 3/12/2015

Python basics

21

Math functions • Located in the math module import math

signal_power = 10.0 noise_power = 0.01 ratio = signal_power / noise_power print "ratio:", ratio decibels = 10 * math.log10(ratio) print "decibels:", decibels

Function call

radians = 0.7 height = math.sin(radians) print height 3/12/2015

Python basics

22

String functions • len() – Gets the length (the number of characters) of a string

• lower() – Gets rid of all the capitalization in a string

• upper() – Transform a string in upper case

• str() – Transform «everything» in a string 3/12/2015

Python basics

23

String functions: an example course_name = 'Ambient Intelligence' string_len = len(course_name) print string_len # 20 print course_name.lower() # ambient intelligence print course_name.upper() # AMBIENT INTELLIGENCE pi = 3.14 print "the value of pi is around " + str(pi)

3/12/2015

Python basics

without str() it gives an error

24

New functions • Can be defined by developers • Typically used to group homogeneous code portions – i.e., code for accomplishing a well-defined operation

• Enable re-use – Same operation can be re-used several times

• Defined using the keyword def

3/12/2015

Python basics

25

New functions • Compute the area of a disk, given the radius import math def circle_area(radius): return radius**2*math.pi

Function definition

radius = raw_input('Please, insert the radius\n') print 'Radius: ', radius print 'Area: ', circle_area(radius) Function call

3/12/2015

Python basics

26

Docstring • Optional, multiline comment • Explains what the function does • Starts and ends with """ or ''' import math def circle_area(radius): '''Compute the circle area given its radius''' return radius**2*math.pi radius = raw_input('Please, insert the radius\n') print 'Radius: ', radius print 'Area: ', circle_area(radius) 3/12/2015

Python basics

27

Modules • A way to logically organize the code • They are files consisting of Python code – they can define (and implement) functions, variables, etc. – typically, the file containing a module is called in the same way • e.g., the module math resides in a file named math.py

• We already met them import math from sys import argv 3/12/2015

Python basics

28

Importing modules • import module_name – allows to use all the items present in a module import math

Import the math module

def circle_area(radius): return radius**2*math.pi

Call the pi variable from the math module



3/12/2015

Python basics

29

Importing modules • from module_name import name – it only imports name from the specified module from math import pi def circle_area(radius): return radius**2*pi …

Import pi from the math module

Use the pi variable

• from module_name import * – it imports all names from a module – do not use! 3/12/2015

Python basics

30

Playing with files • Python script can read and write files • First, open a file – You can use the open() function

• Then, you can read or write it – With read(), readline(), or write()

• Finally, remember to close the file – You can use the close() function

3/12/2015

Python basics

31

Reading files • Read a file taking its name from command line from sys import argv filename = argv[1] txt = open(filename)

Open the file

print “Here’s your file %r:", % filename print txt.read()

Show the file content

print “\nType the filename again:” file_again = raw_input(“> ”) txt_again = open(file_again) print txt_again.read()

3/12/2015

Python basics

32

Writing files from sys import argv script, filename = argv print "We're going to erase %r." % filename print "Opening the file..." target = open(filename, 'w') Open the file in write mode print "… truncating the file. Goodbye!" target.truncate() Empties the file print "\nNow I'm going to ask you for two lines." line1 = raw_input("line 1: ") line2 = raw_input("line 2: ") print "I'm going to write these to the file." target.write(line1) target.write("\n") Write a string to the file target.write(line2) target.write("\n") print "And finally, we close it." target.close() 3/12/2015

Python basics

33

Conditionals and control flow • Control flow gives the ability to choose among outcomes – based off what else is happening in the program

• Comparators – – – – – – 3/12/2015

Equal to  == Not equal to  != Less than  < Less than or equal to  <= Greater than  > Greater than or equal to  >= Python basics

34

Comparators: an example print 2 == 1 # False print 2 == 2 # True print 10 >= 2 # True print 2 < 10 # True print 5 != 5 # False

print 'string' == "string" # True number = 123 print number > 100 # True

3/12/2015

Python basics

35

Boolean operators • They are three: – not – and – or

• Not evaluated from left to right – not is evaluated first – and is evaluated next – or is evaluated last

3/12/2015

Python basics

36

Boolean operators: an example print 2 == 1 and True # False print 2 == 2 or True # True print 10 >= 2 and 2 != 1 # True print not True # False print 10 > 5 and 10 == 10 or 5 < 2 # True

print not False and True # True

3/12/2015

Python basics

37

Conditional statement • if is a statements that executes some code after checking if a given expression is True • Structure if expression: do something

people = 20 cats = 30 if people < cats: print 'Too many cats! The world is doomed!' if people > cats: print 'Not many cats! The world is saved!'

3/12/2015

Python basics

38

More “if” • Let’s try to “improve” the previous example people = 20 cats = 30 if people < cats: print 'Too many cats! The world is doomed!' else if elif people > cats: print 'Not many cats! The world is saved!' else: print "We can’t decide.”

• Chained conditionals – To express more than two possibilities – Each condition is checked in order 3/12/2015

Python basics

39

Loops and lists • Loop – An easy way to do repetitive things – A condition to start and stop the loop is required – e.g., for and while loops

• List – A datatype for storing multiple items • a sequence of values

– You can assign items to a list in this way: list_name = [item1, item2, …]

3/12/2015

Python basics

40

Loops and lists: an example the_count = [1, 2, 3, 4, 5] fruits = ['apples', 'oranges', 'pears', 'apricots'] change = [1, 'pennies', 2, 'dimes', 3, 'quarters']

Three lists

# this first kind of for-loop goes through a list for number in the_count: print 'This is count %d' % number # same as above for fruit in fruits: print 'A fruit of type: %s' % fruit # we can go through mixed lists too # notice that we have to use %r since we don't know what's in it for i in change: print 'I got %r' % i 3/12/2015

Python basics

41

Loops and lists: an example the_count = [1, 2, 3, 4, 5] fruits = ['apples', 'oranges', 'pears', 'apricots'] change = [1, 'pennies', 2, 'dimes', 3, 'quarters']

# this first kind of for-loop goes through a list for number in the_count: print 'This is count %d' % number # same as above Structure of a for loop for fruit in fruits: • for variable in collection: print 'A fruit of type: %s' % fruit • indent for the loop body # we can go through mixed lists too # notice that we have to use %r since we don't know what's in it for i in change: print 'I got %r' % i 3/12/2015

Python basics

42

More “for” # we can also build lists: start with an empty one… elements = [] # then use the range function to do 0 to 5 counts for i in range(0, 6): print 'Adding %d to the list.' % i # append() is a function that lists understand elements.append(i)

Empty list

Repeat 6 times

# now we can print them out for i in elements: print 'Element was: %d' % i

3/12/2015

Python basics

43

Lists • Mutable • Do not have a fixed length – You can add items to a list at any time

• Accessible by index letters = [‘a’, ‘b’, ‘c’] letters.append(‘d’) print letters # a, b, c, d print letters[0] # a print len(letters) # 4 letters[3] = ‘e’ print letters # a, b, c, e 3/12/2015

Python basics

44

More lists • List concatenation – with the + operator a = [1, 2, 3] b = [4, 5, 6] c=a+b print c # 1, 2, 3, 4, 5, 6

• List slices – to access a portion of a list – with the [:] operator c = [1, 2, 3, 4, 5, 6] d = c[1:3] # d is [2, 3] e = c[:3] # e is [1, 2, 3] f = c[:] # f is a full copy of c 3/12/2015

Python basics

45

More lists • List concatenation – with the + operator a = [1, 2, 3] b = [4, 5, 6] c=a+b print c # 1, 2, 3, 4, 5, 6

• List slices – to access a portion of a list – with the [:] operator c = [1, 2, 3, 4, 5, 6] d = c[1:3] # d is [2, 3] e = c[:3] # e is [1, 2, 3] f = c[:] # f is a full copy of c 3/12/2015

works with string, too

Python basics

46

List functions • append() – add a new element to the end of a list – e.g., my_list.append(‘d’)

• sort() – arrange the elements of the list from low to high – e.g., from a to z, from 1 to infinite, etc.

• extend() – takes a list as an argument and appends all its elements – e.g., first_list.extend(second_list) 3/12/2015

Python basics

47

Deleting elements from a list • Several ways to delete elements from a list • If you know the index of the element to remove: pop() – without providing an index, pop() delete the last element

• If you know the element to remove (but not the index): remove() • To remove more than one element: del() – with a slice index • e.g., del my_list[5:8]

3/12/2015

Python basics

48

Strings vs. lists • A string is a sequence of character, but a list of character is not a string • To convert a string into a list of characters: list() – e.g., my_list = list(my_string)

• To break a string into separate words: split() – split a list according to some delimiters (default: space) – e.g., my_list = my_string.split() – The inverse function is join() 3/12/2015

Python basics

49

Copying lists • What happens here? fruits = ['apple', 'orange', 'pear', 'apricot'] print 'The fruits are:', fruits favourite_fruits = fruits print 'My favourite fruits are', favourite_fruits # add a fruit to the original list fruits.append(‘banana’)

print 'The fruits now are:', fruits print 'My favourite fruits are', favourite_fruits

3/12/2015

Python basics

50

Copying lists • What happens here? fruits = ['apple', 'orange', 'pear', 'apricot'] print 'The fruits are:', fruits favourite_fruits = fruits print 'My favourite fruits are', favourite_fruits # add a fruit to the original list fruits.append(‘banana’)

We do not make a copy of the entire list, but we only make a reference to it!

print 'The fruits now are:', fruits print 'My favourite fruits are', favourite_fruits

3/12/2015

Python basics

51

Copying lists • How to make a full copy of a list? • Various methods exist – you can entirely slice a list • favourite_fruits = fruits[:]

– you can create a new list from the existing one • favourite_fruits = list(fruit)

– you can extend an empty list with the existing one • favourite_fruits.extend(fruit)

• Prefer the list() method, when possible! 3/12/2015

Python basics

52

Dictionaries • Similar to lists, but you can access values by looking up a key instead of an index – A key can be a string or a number

• Example – A dictionary with 3 key-value pairs dict = { ‘key1’ : 1, ‘key2’ : 2, ‘key3’ : 3 }

• Mutable, like lists – They can be changed after their creation

3/12/2015

Python basics

53

Dictionaries: an example # create a mapping of U.S. state to abbreviation states = { 'Oregon' : 'OR', Create a dictionary with 3 key-value pairs 'Florida' : 'FL', 'California' : 'CA' } print 'States:', states print 'Is Oregon available?', 'Oregon' in states # add some more states states['New York'] = 'NY' states['Michigan'] = 'MI'

Add two more key-value pairs

# print two states print "New York’s abbreviation is: ", states[‘New York’] print "Florida’s abbreviation is: ", states[‘Florida’] 3/12/2015

Python basics

54

More dictionaries # states is a dictionary defined as before

# print every state abbreviation for state, abbrev in states.items(): print "%s is abbreviated %s", % (state, abbrev) # safely get an abbreviation of a state that might not be there state = states.get('Texas', None) # None is the default if not state: print "Sorry, no Texas." # get a state abbreviation with a default value next_state = states.get('Massachusetts', 'Does Not Exist') print "Massachusetts is abbreviated %s", % next_state

3/12/2015

Python basics

55

Dictionary functions • len() – dictionary length: the number of key-value pairs

• del() – remove a key-value pair • e.g., del my_dict[my_key]

• clear() – remove all items from a dictionary

• keys() and values() – return a copy of the dictionary’s list of key and value, respectively 3/12/2015

Python basics

56

References and Links • The Python Tutorial, http://docs.python.org/2/tutorial/ • «Think Python: How to think like a computer scientist», Allen Downey, Green Tea Press, Needham, Massachusetts • «Dive into Python 2», Mark Pilgrim • «Learn Python the Hard Way», Zed Shaw • «Learning Python» (5th edition), Mark Lutz, O'Reilly • The Google Python course, https://developer.google.com/edu/python • Online Python Tutor, http://pythontutor.com 3/12/2015

Python basics

57

Questions? 01PRD AMBIENT INTELLIGENCE: TECHNOLOGY AND DESIGN

Luigi De Russis and Dario Bonino [email protected] [email protected]

License • This work is licensed under the Creative Commons “AttributionNonCommercial-ShareAlike Unported (CC BY-NC-SA 3,0)” License. • You are free: – to Share - to copy, distribute and transmit the work – to Remix - to adapt the work

• Under the following conditions: – Attribution - You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work). – Noncommercial - You may not use this work for commercial purposes. – Share Alike - If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.

• To view a copy of this license, visit http://creativecommons.org/license/by-nc-sa/3.0/

3/12/2015

Version Control with Git

59