(IUCAA, Pune) kaustubh[at]iucaa[dot]ernet[dot]in.

Similar documents
CS61A Lecture 15 Object Oriented Programming, Mutable Data Structures. Jom Magrotker UC Berkeley EECS July 12, 2012

Python Tutorial. Day 1

Introduction to Python Language. Alice Invernizzi

Chapter 1 Summary. Chapter 2 Summary. end of a string, in which case the string can span multiple lines.

Part I. Wei Tianwen. A Brief Introduction to Python. Part I. Wei Tianwen. Basics. Object Oriented Programming

(IUCAA, Pune) kaustubh[at]iucaa[dot]ernet[dot]in.

CS Advanced Unix Tools & Scripting

(IUCAA, Pune) kaustubh[at]iucaa[dot]ernet[dot]in 1 of 29 Thursday 16 October :50 PM

Introductory Linux Course. Python I. Martin Dahlö UPPMAX. Author: Nina Fischer. Dept. for Cell and Molecular Biology, Uppsala University

1 Classes. 2 Exceptions. 3 Using Other Code. 4 Problems. Sandeep Sadanandan (TU, Munich) Python For Fine Programmers May 16, / 19

Python Programming: Lecture 2 Data Types

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

Introduction to Python

GIS 4653/5653: Spatial Programming and GIS. More Python: Statements, Types, Functions, Modules, Classes

IPSL python tutorial: some exercises for beginners

Beyond Blocks: Python Session #1

Introductory Linux Course. Python I. Pavlin Mitev UPPMAX. Author: Nina Fischer Dept. for Cell and Molecular Biology, Uppsala University

CSCE 110 Programming I

STSCI Python Introduction. Class URL

Sequences and iteration in Python

Interactive use. $ python. >>> print 'Hello, world!' Hello, world! >>> 3 $ Ctrl-D

Interactive use. $ python. >>> print 'Hello, world!' Hello, world! >>> 3 $ Ctrl-D

Advanced Python. Executive Summary, Session 1

06/11/2014. Subjects. CS Applied Robotics Lab Gerardo Carmona :: makeroboticsprojects.com June / ) Beginning with Python

Python and Bioinformatics. Pierre Parutto

EE 355 Unit 17. Python. Mark Redekopp

STA141C: Big Data & High Performance Statistical Computing

cs1114 REVIEW of details test closed laptop period

Python review. 1 Python basics. References. CS 234 Naomi Nishimura

Data Structures. Lists, Tuples, Sets, Dictionaries

Worksheet 6: Basic Methods Methods The Format Method Formatting Floats Formatting Different Types Formatting Keywords

The Pyth Language. Administrivia

Python I. Some material adapted from Upenn cmpe391 slides and other sources

Programming with Python

Here n is a variable name. The value of that variable is 176.

The current topic: Python. Announcements. Python. Python

Positional, keyword and default arguments

61A Lecture 2. Friday, August 28, 2015

Visualize ComplexCities

Python: common syntax

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

There are four numeric types: 1. Integers, represented as a 32 bit (or longer) quantity. Digits sequences (possibly) signed are integer literals:

Selection Statement ( if )

Lecture #15: Generic Functions and Expressivity. Last modified: Wed Mar 1 15:51: CS61A: Lecture #16 1

Introduction to Python

Intro. Scheme Basics. scm> 5 5. scm>

Harness the power of Python magic methods and lazy objects.

Python. Executive Summary

A lot of people make repeated mistakes of not calling their functions and getting errors. Make sure you're calling your functions.

Lecture 6: A step back

Introduction to Python

An Introduction to Python

Python a modern scripting PL. Python

Lists, loops and decisions

Python for C programmers

Module 04: Lists. Topics: Lists and their methods Mutating lists Abstract list functions Readings: ThinkP 8, 10. CS116 Fall : Lists

(CC)A-NC 2.5 by Randall Munroe Python

Introduction to Python

Collections. Lists, Tuples, Sets, Dictionaries

Constants. Variables, Expressions, and Statements. Variables. x = 12.2 y = 14 x = 100. Chapter

Exercise: The basics - variables and types

Downloaded from Chapter 2. Functions

somedata = { } somedata[ cheese ] = dairy somedata[ Cheese ] = dairy items = ( ( 3, 2 ), ( 5, 7 ), ( 1, 9 ), 0, ( 1 ) )

Computational Mathematics with Python

Introduction to Python

Scripting Languages. Python basics

Python for Informatics

Python - Variable Types. John R. Woodward

SI Networked Computing: Storage, Communication, and Processing, Winter 2009

About the Final. Saturday, 7-10pm in Science Center 101. Closed book, closed notes. Not on the final: graphics, file I/O, vim, unix

18.1. CS 102 Unit 18. Python. Mark Redekopp

Large-Scale Networks

Introduction to Python

COMPSCI 105 S Principles of Computer Science. Classes 3

Princeton University COS 333: Advanced Programming Techniques A Subset of Python 2.7

Exercise: The basics - variables and types

Exception Handling. Genome 559

Computational Mathematics with Python

Be careful when deciding whether to represent data as integers or floats, and be sure that you consider all possible behaviors in computation.

A Brief Python Tutorial

PYTHON FOR MEDICAL PHYSICISTS. Radiation Oncology Medical Physics Cancer Care Services, Royal Brisbane & Women s Hospital

ECE 364 Software Engineering Tools Lab. Lecture 3 Python: Introduction

Introduction to Python

Begin to code with Python Obtaining MTA qualification expanded notes

DEBUGGING TIPS. 1 Introduction COMPUTER SCIENCE 61A

What is a class? Responding to messages. Short answer 7/19/2017. Code Listing 11.1 First Class. chapter 11. Introduction to Classes

Variables, expressions and statements

Comp Exam 1 Overview.

Introductory Linux Course. Python I. Nina Fischer Dept. for Cell and Molecular Biology, Uppsala University

Introductory Linux Course. Python I. Nina Fischer Dept. for Cell and Molecular Biology, Uppsala University

Data Handing in Python

Babu Madhav Institute of Information Technology, UTU 2015

12. Logical Maneuvers. Topics: Loop-Body Returns Exceptions Assertions Type Checking Try-Except

Lecture 3 (02/06, 02/08): Condition Statements Decision, Operations & Information Technologies Robert H. Smith School of Business Spring, 2017

Python for Non-programmers

Variables, Expressions, and Statements

Python for Non-programmers

Fundamentals of Programming (Python) Object-Oriented Programming. Ali Taheri Sharif University of Technology Spring 2018

PREPARING FOR PRELIM 1

Intro. Classes & Inheritance

Transcription:

Basics of Python - 2 by Kaustubh Vaghmare (IUCAA, Pune) E-mail: kaustubh[at]iucaa[dot]ernet[dot]in 1 of 54 Sunday 16 February 2014 05:30 PM

Our First Program - Rewritten! Let us introduce the following modifications to the program. We use floats instead of ints. We accept the numbers from the user instead of "hard coding" them. 2 of 54 Sunday 16 February 2014 05:30 PM

In [1]: # Modified first program. a = raw_input("please enter number 1: ") b = raw_input("please enter number 2: ") c, d = a+b, a-b q, r = a/b, a*b print c,d,q,r Please enter number 1: 5.0 Please enter number 2: 2.5 --------------------------------------------------------------- ------------ TypeError Traceback (most recen t call last) <ipython-input-1-82ce9ef7d8e0> in <module>() 3 b = raw_input("please enter number 2: ") 4 ----> 5 c, d = a+b, a-b 6 q, r = a/b, a*b 7 TypeError: unsupported operand type(s) for -: 'str' and 'str' 3 of 54 Sunday 16 February 2014 05:30 PM

4 of 54 Sunday 16 February 2014 05:30 PM

What happened? Anything input through the keyboard using raw_input() is... a "string". Strings support addition (concatenation) but nothing else. So what should we do? "3.0" is a string. 3.0 is a float! To convert "3.0" into a string, we use a simple function float("3.0") So, let's rewrite our program! 5 of 54 Sunday 16 February 2014 05:30 PM

In [2]: a = float( raw_input("enter Number 1: ") ) b = float( raw_input("enter Number 2: ") ) c,d = a+b, a-b q,r = a*b, a/b print "Addition = %f, Difference = %f " % (c,d) print "Division = %f, Quotient = %f" % (q,r) Enter Number 1: 5.0 Enter Number 2: 2.5 Addition = 7.500000, Difference = 2.500000 Division = 12.500000, Quotient = 2.000000 Yuck! That ugly output! Wish I could control the decimal places... 6 of 54 Sunday 16 February 2014 05:30 PM

In [3]: a = float( raw_input("enter Number 1: ") ) b = float( raw_input("enter Number 2: ") ) c,d = a+b, a-b q,r = a*b, a/b print "Addition = %.2f, Difference = %.2f " % (c,d) print "Division = %.2f, Quotient = %.2f" % (q,r) Enter Number 1: 5.0 Enter Number 2: 2.5 Addition = 7.50, Difference = 2.50 Division = 12.50, Quotient = 2.00 Ah! Now, that's much better. 7 of 54 Sunday 16 February 2014 05:30 PM

String Formatting We have seen a powerful of constructing strings in the previous example. In [4]: print "Addition = %.2f, Difference = %.2f " % (c,d) Addition = 7.50, Difference = 2.50 C / FORTRAN users will immediately understand this method of string construction. Python supports this and its own way of string formatting. 8 of 54 Sunday 16 February 2014 05:30 PM

In [5]: gal_name = "NGC 7709"; int_bmagnitude = 13.6 In [6]: statement1 = "The galaxy %s has an integrated \ B-band magnitude of %.2f" % (gal_name, int_bmagnitude) In [7]: statement2 = "The galaxy {0:s} has an integrated \ B-band magnitude of {1:.2f}".format(gal_name, int_bmagnitude) In [8]: statement3 = "The galaxy {name:s} has an integrated \ B-band magnitude of {mag:.2f}".format(name=gal_name, mag=int_bma gnitude) 9 of 54 Sunday 16 February 2014 05:30 PM

All the above statements are equivalent! In [15]: print statement1, "\n", statement2, "\n", statement3, "\n" The galaxy NGC 7709 has an integrated B-band magnitude of 13.60 The galaxy NGC 7709 has an integrated B-band magnitude of 13.60 The galaxy NGC 7709 has an integrated B-band magnitude of 13.60 You can choose whichever method you like! As a former C/C++ user, I'd prefer the first method. But... second and third methods are more "Pythonic". 10 of 54 Sunday 16 February 2014 05:30 PM

Conditionals In [16]: num = int( raw_input("enter number: ") ) if num %2 == 0: print "%d is even!" % num else: print "%d is odd!" % num Enter number: 3 3 is odd! Let us write something bigger... 11 of 54 Sunday 16 February 2014 05:30 PM

In [2]: model_choice = int(raw_input( "Enter choice [1 or 2]: ") ) spectra = 3 # In realistic case, this will be some complicated o bject. if model_choice == 1: model1(spectra) print "Model 1 fitted." elif model_choice == 2: model2(spectra) print "Model 2 fitted." else: print "Invalid model entered." Enter choice [1 or 2]: 1 Model 1 fitted. What do you notice apart from the syntax in the above example? 12 of 54 Sunday 16 February 2014 05:30 PM

Indentation - A Vital Part of the Pythonic Way Be it the if-block illustrated above or the loops or the functions (to come soon), indentation is at the heart of the Python's way of doing things! Function definitions, loops, if-blocks - nothing has your typical boundaries like { } as in C/C++/Java. The "level of the indentation" defines the scope of a "block". 13 of 54 Sunday 16 February 2014 05:30 PM

In support of indentation Look at the following C-like code. if (x>0) if (y>0) print "Woohoo!" else print "Booboo!" Which "if" does the "else" belong to? In C like languages, the braces {}s do the marking, the indentation is purely optional. In Python, indentation levels determine scopes. In Python the "the else" belongs to "if (x>0)". Python forces you to write clean code! (Obfuscation lovers, go to hell!) 14 of 54 Sunday 16 February 2014 05:30 PM

Wrapping up if-elif-else The general syntax: if <condition>: do this and this elif <condition>: this and this... else: do this and this 15 of 54 Sunday 16 February 2014 05:30 PM

Conditions are anything that return True or False. == (equal to)!= >= < <= You can combine conditionals using "logical operators" and or not 16 of 54 Sunday 16 February 2014 05:30 PM

The Boolean Data Type In [3]: a = True b = False if a: print "This comes on screen." if b: print "This won't come on screen." This comes on screen. In [4]: type(a) # To check type of object. Out[4]: bool 17 of 54 Sunday 16 February 2014 05:30 PM

Almost Everything has a Boolean Equivalent In [5]: a = 1 b = 0 if a: print "Hello!" if b: print "Oh No!" Hello! In [8]: s1 = ""; s2 = "Hello" if s1: print "Won't be printed." if s2: print "Will be printed." Will be printed. 18 of 54 Sunday 16 February 2014 05:30 PM

Conditional Expression Consider... In [9]: if 5 > 6: x = 2 else: x = 3 In [10]: y = 2 if 5 > 6 else 3 In [11]: print x,y 3 3 19 of 54 Sunday 16 February 2014 05:30 PM

A Second Tour of the Data Types The two other data types we need to know: Lists Dictionaries Data Types we will not cover (formally): Tuples (immutable lists!) Sets (key-less dictionaries!) Complex Numbers Fractions Decimals Ordered Tuples... 20 of 54 Sunday 16 February 2014 05:30 PM

Lists In [12]: a = [1,2,3,4] # simple ordered collection In [13]: b = ["Hello", 45, 7.64, True] # can be heterogeneous In [14]: a[0], a[-1], a[1:3] # All "sequence" operations supported. Out[14]: (1, 4, [2, 3]) In [15]: b[0][1] # 2nd member of the 1st member Out[15]: 'e' 21 of 54 Sunday 16 February 2014 05:30 PM

In [16]: a = [ [1,2,3], [4,5,6], [7,8,9] ] # list of lists allowed. In [17]: a[2][1] # Accessing elements in nested structures. Out[17]: 8 In [18]: [1,3,4] + [5,6,7] # Support concatenation Out[18]: [1, 3, 4, 5, 6, 7] In [19]: [1,6,8] * 3 # Repetition (like strings) Out[19]: [1, 6, 8, 1, 6, 8, 1, 6, 8] 22 of 54 Sunday 16 February 2014 05:30 PM

Lists are Mutable! (Strings are not!) In [20]: a = [1,4,5,7] In [21]: print a [1, 4, 5, 7] In [22]: a[2] = 777 In [23]: print a [1, 4, 777, 7] 23 of 54 Sunday 16 February 2014 05:30 PM

List Methods In [27]: a = [1,3,5] print a [1, 3, 5] In [28]: a.append(7) # adds an element to the end print a # the list has changed (unlike string methods!) [1, 3, 5, 7] In [29]: a.extend([9,11,13]) # concatenates a list at the end print a [1, 3, 5, 7, 9, 11, 13] 24 of 54 Sunday 16 February 2014 05:30 PM

In [30]: print a [1, 3, 5, 7, 9, 11, 13] In [31]: a.pop() # Removes one element at the end. print a [1, 3, 5, 7, 9, 11] In [32]: a.pop(2) # Removes 3rd element. print a [1, 3, 7, 9, 11] 25 of 54 Sunday 16 February 2014 05:30 PM

Don't Forget!!! In [33]: print dir(a) # list of methods for a list "a" [' add ', ' class ', ' contains ', ' delattr ', ' deli tem ', ' delslice ', ' doc ', ' eq ', ' format ', ' g e ', ' getattribute ', ' getitem ', ' getslice ', ' gt ', ' hash ', ' iadd ', ' imul ', ' init ', ' iter ', ' le ', ' len ', ' lt ', ' mul ', ' ne ', ' new ', ' reduce ', ' reduce_ex ', ' repr ', ' reversed ', ' rmul ', ' setattr ', ' setitem ', ' setslice ', ' sizeo f ', ' str ', ' subclasshook ', 'append', 'count', 'extend ', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] 26 of 54 Sunday 16 February 2014 05:30 PM

In [34]: help(a.sort) Help on built-in function sort: sort(...) L.sort(cmp=None, key=none, reverse=false) -- stable sort *I N PLACE*; cmp(x, y) -> -1, 0, 1 27 of 54 Sunday 16 February 2014 05:30 PM

Implications of Mutability In [35]: l = [1,2,3,4] m = l l.append(5) print l print m [1, 2, 3, 4, 5] [1, 2, 3, 4, 5] l and m point to the same object. When the object mutates, whether you refer to it using l or m, you get the same mutated object. 28 of 54 Sunday 16 February 2014 05:30 PM

How do I make a copy then? In [36]: l = [1,2,3,4] m = l[:] l.append(5) print l print m [1, 2, 3, 4, 5] [1, 2, 3, 4] Python has a module called "copy" available for making copies. Will be covered later. 29 of 54 Sunday 16 February 2014 05:30 PM

Dictionaries Imagine a list as a collection of objects obj0, obj1, obj2... First object has a location 0, second 1... Now, imagine renaming location 0 as "something", location 1 as "somethingelse"... Earlier, you accessed objects at numbered locations a[0]. Now, you access objects by specifying location names a["something"] Let's see this at work. 30 of 54 Sunday 16 February 2014 05:30 PM

In [37]: d1 = { "a" : 3, "b" : 5} print d1["a"] print d1["b"] 3 5 "a", "b" are called keys and 3,5 are called values. So formally, a dictionary is a collection of key-value pairs. In [38]: d1["c"] = 7 # Since "c" does not exist, a new key-value pair is made. d1["a"] = 1 # SInce "a" exists already, value is modified. print d1 # You will notice the order is not the same. {'a': 1, 'c': 7, 'b': 5} 31 of 54 Sunday 16 February 2014 05:30 PM

Dictionary Methods In [39]: keys = d1.keys() # Returns a list of all keys which is stored in "keys". print keys ['a', 'c', 'b'] In [40]: values = d1.values() # Returns a list of values. print values [1, 7, 5] In [41]: d1.items() # List of Tuples of key-value pairs. Out[41]: [('a', 1), ('c', 7), ('b', 5)] 32 of 54 Sunday 16 February 2014 05:30 PM

Defining Dictionaries - ways to do this In [42]: d1 = {"a":3, "b":5, "c":7} # we've seen this. In [43]: keys = ["a", "b", "c"] values = [3,5,7] d2 = dict( zip(keys,values) ) # creates dictionary similar to d2 In [44]: d3 = dict( a=3, b=5, c=7) # again, same as d1,d2 In [45]: d4 = dict( [ ("a",3), ("b",5), ("c",7) ] ) # same as d1,d2,d3 33 of 54 Sunday 16 February 2014 05:30 PM

Loop Loop Loop In [46]: x = 0 while x<5: print x, # NOTICE the comma at the end. Suppresses new line. x += 1 0 1 2 3 4 34 of 54 Sunday 16 February 2014 05:30 PM

In [49]: x = 1 while True: print "x = %d" % x choice = raw_input("do you want to continue? ") if choice!= "y": break # This statement breaks the loop. else: x += 1 x = 1 Do you want to continue? y x = 2 Do you want to continue? y x = 3 Do you want to continue? q 35 of 54 Sunday 16 February 2014 05:30 PM

The "for" loop - Pay Attention! In [51]: x = [5,6,7,8,9,0] # a simple list for i in x: print i 5 6 7 8 9 0 36 of 54 Sunday 16 February 2014 05:30 PM

In " for i in x", x can be anything that is a collection of things. In [52]: s = "Hello!" for c in s: print c H e l l o! 37 of 54 Sunday 16 February 2014 05:30 PM

No No No! I my good old for-loop back which generates numbers x to y in steps of z!!! In [53]: # OKAY!!! for i in range(2,15,3): print i 2 5 8 11 14 In [54]: range(10) Out[54]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] In [55]: range(2,10) Out[55]: [2, 3, 4, 5, 6, 7, 8, 9] 38 of 54 Sunday 16 February 2014 05:30 PM

Let us see some wicked for-loops. In [56]: a = [1,2,3,4,5] b = "Hello" c = zip(a,b) print c for i,j in c: print i, j [(1, 'H'), (2, 'e'), (3, 'l'), (4, 'l'), (5, 'o')] 1 H 2 e 3 l 4 l 5 o 39 of 54 Sunday 16 February 2014 05:30 PM

In [57]: a = "Hello!" for i, c in enumerate(a): print "Character no. %d is %s" % (i+1, c) Character no. 1 is H Character no. 2 is e Character no. 3 is l Character no. 4 is l Character no. 5 is o Character no. 6 is! 40 of 54 Sunday 16 February 2014 05:30 PM

You can break and continue for-loops too! 41 of 54 Sunday 16 February 2014 05:30 PM

In [60]: for i in range(10000): if i%2 == 0: # Even print "Even" continue print "Odd!" if i == 7: # What if I had said "i==8 or i==10"?????? break Even Odd! Even Odd! Even Odd! Even Odd! 42 of 54 Sunday 16 February 2014 05:30 PM

43 of 54 Sunday 16 February 2014 05:30 PM

Traversing Dictionaries using for-loops In [61]: d = dict( a = 1, b = 2, c = 3, d = 4) for key,value in d.items(): print key, "-->", value a --> 1 c --> 3 b --> 2 d --> 4 44 of 54 Sunday 16 February 2014 05:30 PM

In [63]: for key in d.keys(): print key, "-->", d[key] a --> 1 c --> 3 b --> 2 d --> 4 45 of 54 Sunday 16 February 2014 05:30 PM

Function Basics In [64]: def myfun(): print "Hello World!" In [65]: myfun() Hello World! In [66]: x = myfun() print x Hello World! None 46 of 54 Sunday 16 February 2014 05:30 PM

Functions with Arguments In [67]: def myfun(string): print string In [68]: myfun() # ERROR --------------------------------------------------------------- ------------ TypeError Traceback (most recen t call last) <ipython-input-68-f3ab186f5d61> in <module>() ----> 1 myfun() # ERROR TypeError: myfun() takes exactly 1 argument (0 given) In [69]: myfun("happiness!") Happiness! 47 of 54 Sunday 16 February 2014 05:30 PM

Function with a Return Value In [70]: def myfun(a,b): return a+b In [71]: x = myfun(2,3) print x 5 Function with Optional Arguments In [72]: def myfun( string = "Hello World!"): print string In [73]: myfun() # No argument supplied. Hello World! 48 of 54 Sunday 16 February 2014 05:30 PM

In [74]: myfun("not in a Mood!") Not in a Mood! In [76]: x = "I am a string!" myfun(x) I am a string! 49 of 54 Sunday 16 February 2014 05:30 PM

Functions are Objects! In [77]: import math print math.sqrt(5) a = math.sqrt print a(5) 2.2360679775 2.2360679775 In [78]: def do(f,x): f(x) do(myfun, "Hello!") Hello! 50 of 54 Sunday 16 February 2014 05:30 PM

Handling Files Let us study how to handle files through a simple exercise. The basic approach involves creating file objects in Python and use various methods associated with file objects to handle file I/O. open() function is used to create file object. fileobject.read() - reads entire file as one big string. fileobject.write() - to write a string in a file. fileobject.readlines() - to read each line as an element of a list. fileobject.writelines() - to write a set of lines, each one being a string. fileobject.close() - to close a file (buffer flush) 51 of 54 Sunday 16 February 2014 05:30 PM

Program to "Double Space" a File In []: """ Program to create a double spaced file. Input: File Name Output: Modified File with.sp extension """ import sys # we need this to parse command line arguments. import os # we need this to check for file's existence 52 of 54 Sunday 16 February 2014 05:30 PM

In []: # Check number of arguments. if len(sys.argv) == 2: infile_name = sys.argv[1] else: print "Oops! Incorrect Number of Arguments." sys.exit(2) # Check if file exists. if not os.path.isfile(infile_name): print "File doesn't exist." sys.exit(3) 53 of 54 Sunday 16 February 2014 05:30 PM

In []: # Open the input file. infile = open(infile_name, "r") # Open an output file. outfile = open(infile_name + ".sp", "w") # Loop over each line, add new line to each line. for line in infile.readlines(): line = line+"\n" outfile.write(line) outfile.close() infile.close() 54 of 54 Sunday 16 February 2014 05:30 PM