Chapter 3 Writing Simple Programs. What Is Programming? Internet. Witin the web server we set lots and lots of requests which we need to respond to



Similar documents
Chapter 2 Writing Simple Programs

Python Loops and String Manipulation

Introduction to Python

Python Lists and Loops

Exercise 1: Python Language Basics

Computers. An Introduction to Programming with Python. Programming Languages. Programs and Programming. CCHSG Visit June Dr.-Ing.

CSCE 110 Programming I Basics of Python: Variables, Expressions, and Input/Output

University of Hull Department of Computer Science. Wrestling with Python Week 01 Playing with Python

6.170 Tutorial 3 - Ruby Basics

Introduction to Python

We will learn the Python programming language. Why? Because it is easy to learn and many people write programs in Python so we can share.

Exercise 4 Learning Python language fundamentals

Writing Simple Programs

CIS 192: Lecture 10 Web Development with Flask

Introduction to: Computers & Programming: Input and Output (IO)

CS106A, Stanford Handout #38. Strings and Chars

Web Development using PHP (WD_PHP) Duration 1.5 months

Perl in a nutshell. First CGI Script and Perl. Creating a Link to a Script. print Function. Parsing Data 4/27/2009. First CGI Script and Perl

LEARNING TO PROGRAM WITH PYTHON. Richard L. Halterman

Webapps Vulnerability Report

Python Programming: An Introduction to Computer Science

Python. KS3 Programming Workbook. Name. ICT Teacher Form. Do you speak Parseltongue?

High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)

Python Programming: An Introduction to Computer Science

Python Objects. Charles Severance

Introduction to Computer Science I Spring 2014 Mid-term exam Solutions

Name: Class: Date: 9. The compiler ignores all comments they are there strictly for the convenience of anyone reading the program.

Your First Web Page. It all starts with an idea. Create an Azure Web App

CSE 1223: Introduction to Computer Programming in Java Chapter 2 Java Fundamentals

Welcome to Introduction to programming in Python

Python Evaluation Rules

PHP Tutorial From beginner to master

JavaScript: Introduction to Scripting Pearson Education, Inc. All rights reserved.

Python Programming: An Introduction To Computer Science

Advanced BIAR Participant Guide

Teamstudio USER GUIDE

White Paper. Blindfolded SQL Injection

2 SYSTEM DESCRIPTION TECHNIQUES

Real SQL Programming 1

A Python Tour: Just a Brief Introduction CS 303e: Elements of Computers and Programming

Self-review 9.3 What is PyUnit? PyUnit is the unit testing framework that comes as standard issue with the Python system.

IVR Studio 3.0 Guide. May Knowlarity Product Team

Introduction to Python for Text Analysis

Computer Science for San Francisco Youth

Hadoop and Map-reduce computing

MOC 20461C: Querying Microsoft SQL Server. Course Overview

Introduction to Python

How To Write A File System On A Microsoft Office (Windows) (Windows 2.3) (For Windows 2) (Minorode) (Orchestra) (Powerpoint) (Xls) (

CS 1133, LAB 2: FUNCTIONS AND TESTING

Creating While Loops with Microsoft SharePoint Designer Workflows Using Stateful Workflows

Modern Web Application Framework Python, SQL Alchemy, Jinja2 & Flask

Microsoft Access 3: Understanding and Creating Queries

NewsletterAdmin 2.4 Setup Manual

Paper An Introduction to SAS PROC SQL Timothy J Harrington, Venturi Partners Consulting, Waukegan, Illinois

Oracle SQL. Course Summary. Duration. Objectives

IBM Operational Decision Manager Version 8 Release 5. Getting Started with Business Rules

Lecture 5: Java Fundamentals III

Computer Science 217

Eventia Log Parsing Editor 1.0 Administration Guide

Interspire Website Publisher Developer Documentation. Template Customization Guide

CGN Computer Methods

PIC 10A. Lecture 7: Graphics II and intro to the if statement

CS177 MIDTERM 2 PRACTICE EXAM SOLUTION. Name: Student ID:

Hands-On Python A Tutorial Introduction for Beginners Python 3.1 Version

Access Queries (Office 2003)

Prescribed Specialised Services 2015/16 Shadow Monitoring Tool

Package HadoopStreaming

PHP Debugging. Draft: March 19, Christopher Vickery

Oracle Database: SQL and PL/SQL Fundamentals

PYTHON Basics

An Incomplete C++ Primer. University of Wyoming MA 5310

Object Oriented Software Design

Chapter 9: Building Bigger Programs

Moving from CS 61A Scheme to CS 61B Java

Blindfolded SQL Injection. Written By: Ofer Maor Amichai Shulman

CIS 192: Lecture 10 Web Development with Flask

latest Release 0.2.6

AppendixA1A1. Java Language Coding Guidelines. A1.1 Introduction

Hands-on Exercise 1: VBA Coding Basics

Objectives. Python Programming: An Introduction to Computer Science. Lab 01. What we ll learn in this class

Object Oriented Software Design

ACCESS Importing and Exporting Data Files. Information Technology. MS Access 2007 Users Guide. IT Training & Development (818)

Cloud Computing. Chapter Hadoop

Step One Check for Internet Connection

CME 193: Introduction to Scientific Python Lecture 8: Unit testing, more modules, wrap up

Duration Vendor Audience 5 Days Oracle End Users, Developers, Technical Consultants and Support Staff

Line Tracking Basic Lesson

Oracle Database 12c: Introduction to SQL Ed 1.1

Slides from INF3331 lectures - web programming in Python

Python Basics. S.R. Doty. August 27, Preliminaries What is Python? Installation and documentation... 4

Oracle Database: SQL and PL/SQL Fundamentals NEW

Programming Exercises

Course Outline Basic Web Development

AQA GCSE in Computer Science Computer Science Microsoft IT Academy Mapping

INTERSPIRE MARKETER

Programming Languages CIS 443

Transcription:

Chapter 3 Writing Simple Programs Charles Severance Unless otherwise noted, the content of this course material is licensed under a Creative Commons Attribution 3.0 License. http://creativecommons.org/licenses/by/3.0/. Copyright 2009, Charles Severance Textbook: Using Google App Engine, Charles Severance What Is Programming? HTML AJAX JavaScript CSS Internet HTTP Request Response GET POST Python Templates Data Store memcache Witin the web server we set lots and lots of requests which we need to respond to This is the request/response cycle We don t want to do this by hand So we write a program to communicate how we want each of the requests to be handled

Input Devices Output Devices Software Central Processing Unit Main Memory What Next? Generic Computer Secondary Memory Program Steps or Program Flow Like a recipe or installation instructions, a program is a sequence of steps to be done in order Some steps are conditional - they may be skipped Sometimes a step or group of steps are to be repeated Sometimes we store a set of steps to be reused over and over as needed several places throughout the program add 300 grams of flour add 100 ml of milk add an egg add 300 grams of flour add 100 ml of milk add an egg if altitude > 2000: add an egg if altitude > 2000: add an egg add 30 grams of salt while there are too many lumps: Beat mixture with a fork open and add provided flavor packet Sequential Conditional Repeated Store / Reuse add 30 grams of salt while there are too many lumps: Beat mixture with a fork open and add provided flavor packet Sequential Conditional Repeated Store / Reuse

usf = input('enter the US Floor Number: ') wf = usf - 1 print 'Non-US Floor Number is',wf python elev.py Enter the US Floor Number: 2 Non-US Floor Number is 1 Elevators in Europe! Input Process Output Program Steps or Program Flow The Essence of Programming Like a recipe or installation instructions, a program is a sequence of steps to be done in order Some steps are conditional - they may be skipped Sometimes a step or group of steps are to be repeated Sometimes we store a set of steps to be reused over and over as needed several places throughout the program

Sequential Steps x = 5 Conditional Steps X < 10? Yes Program: x = 1 print x x = x + 1 print x Program: x = 1 print x x = x + 1 print x Output: 1 2 X > 20? print 'Smaller' Yes print 'Bigger' x = 5 if x < 10: print 'Smaller' if x > 20: print 'Bigger' Output: Smaller Finis When a program is running, it flows from one step to the next. We as programmers set up paths for the program to follow. print 'Finis' print 'Finis' Done i = 0.. 4 print 'Bye' print i Repeated Steps Program: for i in range(5) : print i print 'Bye' Output: 0 1 2 3 4 Bye Loops (repeated steps) have iteration variables that change each time through a loop. Often these iteration variables go through a sequence of numbers. def hello() print 'Zip' hello() Stored (and reused) Steps hello(): print 'Hello' print 'Fun' Program: def hello(): print 'Hello' print 'Fun' hello() print 'Zip' hello() Output: Hello Fun Zip Hello Fun We call these little stored chunks of code subprograms or functions.

print 'Your guess is', guess if guess < answer : print 'Your guess is too low' if guess == answer : print 'Congratulations!' if guess > answer : print 'Your guess is too high' true false guess == answer print 'Good Guess' print 'Bad guess' print 'Your guess is', guess if guess == answer : print 'Good guess' else: print 'Bad guess' We can place a block of code within another block of code We call this nesting because the inner block is snugly nestled within the outer block Nesting print 'Your guess is', guess if guess == answer : print 'Congratulations!' else: if guess < answer : print 'Your guess is too low' else: print 'Your guess is too high' true print 'Congratulations' guess == answer false true print 'Too low' guess < answer print 'Your guess is', guess if guess == answer : print 'Congratulations!' else: if guess < answer : print 'Your guess is too low' else: print 'Your guess is too high' false print 'Too High'

print 'Your guess is', guess if guess == answer : print 'Congratulations!' elif guess < answer : print 'Your guess is too low' else: print 'Your guess is too high' true guess == answer false true guess < answer false print 'Too high' print 'Congrats' print 'Too low' Variables Variables are named locations in the computer s main memory We programmers use variables to store values that we want to use later in the program We get to pick the names of our variables (within limits) usf = input('enter the US Floor Number: ') wf = usf - 1 print 'Non-US Floor Number is',wf Rules for Python Variable Names Must start with a letter or underscore _ Must consist of letters and numbers Case Sensitive Good: Bad: 42secret :usf value-7 Different: usf Usf USF x usf _food food16 FOOD Menmonic Variables We often try to pick mnemonic variable names to help us remember what we intended as the contents of a variable Non-mnemonic: x42 xyzzy snagll a123 ljkljk Mnemonic: count lines word usf wf http://en.wikipedia.org/wiki/mnemonic usf = input('enter the US Floor Number: ') wf = usf - 1 print 'Non-US Floor Number is',wf

Mnemonic Non- Mnemonic usf = input('enter the US Floor Number: ') wf = usf - 1 print 'Non-US Floor Number is',wf dsjdkjds = input('enter the US Floor Number: ') xsjdkjds = dsjdkjds - 1 print 'Non-US Floor Number is', xsjdkjds Reserved Words You can not use reserved words as variable names / identifiers and del for is raise assert elif from lambda return break else global not try class except if or while continue exec import pass yield def finally in print Assignment Statements Slow Motion Assignment variable = expression Evaluate the expression to a value and then put that value into the variable x = 1 spam = 2 + 3 spam = x + 1 x = x + 1 We can use the same variable on the left and right side of an assignment statement Remember that the right side is evaluated *before* the variable is updated x: 5 6 x = x + 1 6

Input Statements Constants input('prompt') - displays the prompt and waits for us to input an expression - this works for numbers In Chapter 4 we will see how to read strings x = input('enter ') Enter 123 print x 123 We use the term constant or literal to indicate a value that is not a variable usf = input('enter the US Floor Number: ') wf = usf - 1 print 'Non-US Floor Number is', wf String Data Modern programs work with string data ('Fred', 'Ann Arbor',...) far more often than numeric data (1, 2, 3.14159) Python has great support for working with strings print 'Your guess is', guess if guess == answer : msg = 'Congratulations!' elif guess < answer : msg = 'Your guess is too low' else: msg = 'Your guess is too high' print msg We can use string constants and string variables to simplify our program. Remember that a variable is a place in memory that we can use to store something that we want to use later in our program.

When you type 25 into the form and press Submit, your browser sends a string like guess=25 to your web application. guess=25 print 'Your guess is', guess if guess < answer : print 'Your guess is too low' if guess == answer : print 'Congratulations!' if guess > answer : print 'Your guess is too high' Indexing Strings We can look at each character in a string by indexing the string with square brackets [ and ] The first character in a string is [0] python txt = 'guess=25' print txt[0] g print txt[1] u guess=25 01234567 Slicing Strings We can extract a range of characters in a string using two numbers and a colon (:) in the square brackets The second value means up to but not including guess=25 01234567 python txt = 'guess=25' print txt[2:4] es print txt[2:5] ess Slicing Strings When we slice strings, we can omit the first or second number and it implies beginning and end of the string respectively guess=25 01234567 python txt = 'guess=25' print txt[:5] guess print txt[6:] 25

Concatenating Strings We use the + operator to concatenate two strings If we want a space between the strings, we need to add the space think = 'happy' + 'thoughts' print think happythoughts think = 'happy' + ' ' + 'thoughts' print think happy thoughts The Python String Library Python has a number of powerful string manipulation capabilities in the string library (an example of the store and reuse pattern) txt = 'guess=25' print txt.find('=') 5 print txt.find('pizza') -1 guess=25 01234567 The Python String Library Other capabilities in the string library include : lowercase(), rfind(), split(), strip(), rstrip(), replace(), and many more http://docs.python.org/library/stdtypes.html Types and Conversion Every variable and constant in Python as a type and Python knows the type If you do something that is not allowed for a particular type, you will get an error We can ask Python which type a variable is using the built-in type() function txt = 'guess=25' print type(txt) <type 'str'> pos = txt.find('=') print pos 5 print type(pos) <type 'int'>

Breaking the Rules... Converting Integer to String txt = 'abc' + 'def' print txt abcdef num = 36 + 6 print num 42 huh = 'abc' + 6 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects txt = 'abc' + 'def' print txt abcdef num = 36 + 6 print num 42 huh = 'abc' + str(6) print huh abc6 If we convert the integer to a string using the built-in str() function - the types match for the concatenation (+) operation. Parsing a String Sometimes we want to break a string into pieces and do something with those pieces in several steps guess=25 01234567 txt = 'guess=25' pos = txt.find('=') sub = txt[pos+1:] print sub 25 print type(sub) <type 'str'> ival = int(sub) print ival 25 print type(ival) <type 'int'> Multi-Value Variables: Collections So far all variables we ave seen contain a single value and if we put a new value into the variable, it over-writes the existing value Collections are a type of variable that can contain more than one value at the same time We need a way to organize, store, and retrieve these multiple values

A Python List Object A Python list() object can contain more than one item Lists are stored in order and are indexed by the position of a value within a list They are like a one column spreadsheet Python lists follow European Elevator rules 0 1 2 3 pals = list() pals.append('glenn') pals.append('sally') pals.append('joe') print pals ['Glenn', 'Sally', 'Joe'] print type(pals) <type 'list'> print len(pals) 3 print pals[0] Glenn print pals[2] Joe We create an empty list by calling the built-in function list() We add new elements using append() We can find the length of the list using the built in function len() We can index the list with square brackets 0 1 2 3 print pals ['Glenn', 'Sally', 'Joe'] pals[2] = 'Joseph' print pals ['Glenn', 'Sally', 'Joseph'] pals.sort() print pals ['Glenn', 'Joseph', 'Sally'] We can replace an element in a list by using an index in an assignment statement We can sort a list using the sort method in the list library Looping Through Lists Loops are an example of the repeated code pattern We construct a loop using for and in will execute a block of code once for each value in the list We define an iteration variable that takes on the successive elemnents of the list each time through the loop pals = ['Glenn', 'Sally', 'Joseph'] for x in pals: print x print 'Done'

Looping Through Lists Loops are an example of the repeated code pattern We construct a loop using for and in will execute a block of code once for each value in the list We define an iteration variable that takes on the successive elemnents of the list each time through the loop print pals ['Glenn', 'Sally', 'Joseph'] for x in pals:... print x... Glenn Sally Joseph Looping Through Strings Strings function very much like a list of characters So we can construct a loop using for and in will execute a block of code once for each value in the list We define an iteration variable that takes on the successive elemnents of the list each time through the loop txt = 'guess=25' for x in txt:... print x... g u e s s = 2 5 Python s Backpack: Dictionaries Sometimes we want a bunch of stuff in a collection where each item has a label and the label allows us to store and retrieve a value It is more like a two-column spreadsheet label value We create an empty dictionary by calling dict() We fill up our dictionary with assignment statements where the index is the key or label which marks a value When we print a dictionary we see a list of mappings of a key to a value pal = dict() pal['first'] = 'Glenn' pal['last'] = 'Golden' pal['email'] = 'glenng@umich.edu' pal['phone'] = '517-303-8700' print pal {'phone': '517-303-8700', 'last': 'Golden', 'email': 'glenng@umich.edu', 'first': 'Glenn'} label value

Retrieving Data To retrieve an value from the dictionary, we can use the index operation [ But we must make sure that the key exists label value print pal {'phone': '517-303-8700', 'last': 'Golden', 'email': 'glenng@umich.edu', 'first': 'Glenn'} print pal['phone'] 517-303-8700 print pal['age'] Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'age' Safe Dictionary Retrieval We can deal with the missing key by using the built-in function get() and specifying a value to return if the key is not found print pal {'phone': '517-303-8700', 'last': 'Golden', 'email': 'glenng@umich.edu', 'first': 'Glenn'} print pal.get('age','age not available') Age not available print pal.get('phone', 'Phone not available') 517-303-8700 label value Looping Through a Dictionary Dictionaries do not maintain order - but we can loop through them We construct a loop with for and in The iteration variable loops through the keys in the dictionary print pal {'phone': '517-303-8700', 'last': 'Golden', 'email': 'glenng@umich.edu', 'first': 'Glenn'} for z in pal:... print z... phone last email first Looping Through a Dictionary If we can loop through the keys, we can then use those keys to look up the values key value print pal {'phone': '517-303-8700', 'last': 'Golden', 'email': 'glenng@umich.edu', 'first': 'Glenn'} for key in pal:... print key, pal[key]... phone 517-303-8700 last Golden email glenng@umich.edu first Glenn

Store/Reuse: Functions Function: How Long is a Sequence? In the last pattern, we want to write code once and reuse it several places - this allows us to make changes one place and allows us to organize larger programs into logical sub-units The len() function takes a string as a parameter and returns the number of characters in the string Actually len() tells us the number of elements of any set or sequence greet = 'Hello Bob' print len(greet) 9 x = [ 1, 2, 'fred', 99] print len(x) 4 greet = 'Hello Bob' x = len(greet) print x 9 'Hello Bob' (a string) Len Function len() function A function is some stored code that we use. A function takes some input parameter(s) and produces an output return value. 9 (a number) greet = 'Hello Bob' x = len(greet) print x 9 'Hello Bob' (a string) Len Function def len(inp): blah blah for x in y: blah blah A function is some stored code that we use. A function takes some input parameter(s) and produces an output return value. 9 (a number) Guido wrote this code

A Trivial Function Parameters to Functions The def keyword indicates the beginning of a block and defines a name for the function The block of code is not executed as part of the def process We can execute the code later using the name we assigned to the function. def welcome():... print 'Hello'... welcome() Hello welcome() Hello Sometimes we want to feed the function some value (i.e. a parameter) as its input so we can use the function for different purposes We define the formal parameter on the def statement We pass in the actual parameter on the function call def welcome(name):... print 'Hello',name... welcome('glenn') Hello Glenn welcome('sally') Hello Sally Return Values A function can return a value back to its caller using the return statement This return value comes back and can be used in an assignment statement or expression def greet(lang):... if lang == 'es':... return 'Hola'... elif lang == 'fr':... return 'Bonjour'... else:... return 'Hello'... xgr = greet('fr') print xgr, Michael' Bonjour Michael Return Values A function can return a value back to its caller using the return statement This return value comes back and can be used in an assignment statement or expression def greet(lang):... if lang == 'es':... return 'Hola'... elif lang == 'fr':... return 'Bonjour'... else:... return 'Hello'... print greet('en'),'glenn' Hello Glenn print greet('es'),'sally' Hola Sally print greet('fr'),'michael' Bonjour Michael

The try / except Structure Sometimes we know a line of code may cause traceback - perhaps because it is processing user input that may be flawed You surround a dangerous section of code with try and except. If the code in the try works - the except is skipped If the code in the try fails - it jumps to the except section The program stops here $ cat notry.py astr = 'fourtytwo' istr = int(astr) print 'First', istr astr = '123' istr = int(astr) print 'Second', istr $ python notry.py Traceback (most recent call last): File "notry.py", line 6, in <module> istr = int(astr) ValueError: invalid literal for int() with base 10: 'fourtytewo' All Done Input Devices Output Devices Software Central Processing Unit Main Memory Secondary Memory Generic Computer $ cat tryexcept.py astr = 'fourtytwo' try: istr = int(astr) except: istr = -1 print 'First', istr astr = '42' try: istr = int(astr) except: istr = -1 When the first conversion fails - it just drops into the except: clause and the program continues. $ python tryexcept.py First -1 Second 42 When the second conversion succeeds - it just skips the except: clause and the program continues. print 'Second', istr

try / except astr = 'fourtytwo' Comments in Python astr = 'fourtytwo' try: print 'Hello' istr = int(astr) print 'There' except: istr = -1 print 'Done', istr print 'Hello' istr = int(astr) print 'There' print 'Done', istr istr = -1 Safety net Python ignores blank lines in Python programs and ignores everything after it sees # on a line # This program helps travelers use elevators usf = input('enter the US Floor Number: ') wf = usf 1 # The conversion is quite simple print 'Non-US Floor Number is',wf Comments in Python Questions... Python ignores blank lines in Python programs and ignores everything after it sees # on a line usf = input('enter the US Floor Number: ') wf = usf 1 print 'Non-US Floor Number is',wf