Top Banner
CS 115 Lecture 4 More Python; testing software Neil Moore Department of Computer Science University of Kentucky Lexington, Kentucky 40506 [email protected] 27 January 2015
172

CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Feb 07, 2018

Download

Documents

trankiet
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

CS 115 Lecture 4More Python; testing software

Neil Moore

Department of Computer ScienceUniversity of Kentucky

Lexington, Kentucky [email protected]

27 January 2015

Page 2: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Statements

CodeLab questions sometimes ask for a “statement” or “expression”.What’s the difference?

A statement is the smallest unit of code that can be executed on its own.

So far we’ve seen:I Assignment: sum = first + secondI Function call: print("Hello")

Usually one line, but compound statements can be bigger.I def, for, if, etc.I We’ll see more of these in a few weeks.

Comments aren’t statements: they can’t be executed.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 2 / 26

Page 3: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Statements

CodeLab questions sometimes ask for a “statement” or “expression”.What’s the difference?

A statement is the smallest unit of code that can be executed on its own.

So far we’ve seen:I Assignment: sum = first + secondI Function call: print("Hello")

Usually one line, but compound statements can be bigger.I def, for, if, etc.I We’ll see more of these in a few weeks.

Comments aren’t statements: they can’t be executed.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 2 / 26

Page 4: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Statements

CodeLab questions sometimes ask for a “statement” or “expression”.What’s the difference?

A statement is the smallest unit of code that can be executed on its own.

So far we’ve seen:I Assignment: sum = first + secondI Function call: print("Hello")

Usually one line, but compound statements can be bigger.I def, for, if, etc.I We’ll see more of these in a few weeks.

Comments aren’t statements: they can’t be executed.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 2 / 26

Page 5: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Statements

CodeLab questions sometimes ask for a “statement” or “expression”.What’s the difference?

A statement is the smallest unit of code that can be executed on its own.

So far we’ve seen:I Assignment: sum = first + secondI Function call: print("Hello")

Usually one line, but compound statements can be bigger.I def, for, if, etc.I We’ll see more of these in a few weeks.

Comments aren’t statements: they can’t be executed.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 2 / 26

Page 6: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Statements

CodeLab questions sometimes ask for a “statement” or “expression”.What’s the difference?

A statement is the smallest unit of code that can be executed on its own.

So far we’ve seen:I Assignment: sum = first + secondI Function call: print("Hello")

Usually one line, but compound statements can be bigger.I def, for, if, etc.I We’ll see more of these in a few weeks.

Comments aren’t statements: they can’t be executed.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 2 / 26

Page 7: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"

I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 8: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user name

I Arithmetic: 3 * (x + 2)F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 9: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 10: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2

F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 11: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 12: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 13: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Syntax: Expressions

An expression is a piece of code that has a value. It is an even smallerand more fundamental unit than the statement.

Something you could use on the right hand side of assignment.

Can be used as part of bigger expressions.

Examples:I Literals: 2, 3.4, "Python"I Variable name: user nameI Arithmetic: 3 * (x + 2)

F (x + 2) is itself an expressionF . . . as are x and 2F It’s expressions all the way down!

I Function call: input("What is your name?")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 3 / 26

Page 14: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics: Data types

Inside the computer, everything is just bits. A data type says how tointerpret those bits, and what we can do with them.Every expression in Python has a type. Some of the built-in types:

Integer numbers: int (2, -44)

Floating-point numbers: float (3.0, -0.9)

Boolean (true-false) values: bool (True, False)

Strings of characters: str (’hello’, "0")

We’ll see others later (NoneType, list)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 4 / 26

Page 15: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Integers

Type int represents integers: whole numbers that may be positive,negative, or zero.

Literal integers: a sequence of digits: 24601

I . . . with no leading zeros!I 0 is okay, 007 is not.

In Python, integers have no limit to their size.I As many digits as you have memory for.I That isn’t true in most languages, like C++ and Java.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 5 / 26

Page 16: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Integers

Type int represents integers: whole numbers that may be positive,negative, or zero.

Literal integers: a sequence of digits: 24601I . . . with no leading zeros!I 0 is okay, 007 is not.

In Python, integers have no limit to their size.I As many digits as you have memory for.I That isn’t true in most languages, like C++ and Java.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 5 / 26

Page 17: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Integers

Type int represents integers: whole numbers that may be positive,negative, or zero.

Literal integers: a sequence of digits: 24601I . . . with no leading zeros!I 0 is okay, 007 is not.

In Python, integers have no limit to their size.I As many digits as you have memory for.I That isn’t true in most languages, like C++ and Java.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 5 / 26

Page 18: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Integers

Type int represents integers: whole numbers that may be positive,negative, or zero.

Literal integers: a sequence of digits: 24601I . . . with no leading zeros!I 0 is okay, 007 is not.

In Python, integers have no limit to their size.I As many digits as you have memory for.I That isn’t true in most languages, like C++ and Java.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 5 / 26

Page 19: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 20: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 21: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0

F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 22: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 23: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2

F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 24: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 25: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point

Type float represents floating-point numbers: numbers with a decimalpoint.

Limited precision and range.

Two forms of literal floats:I Number with a decimal point:

3.14, .027, 0.001, 3., 1.0F Must have a decimal point!F 1.0 or 1. is a float, but 1 is an integer!

I “E”-notation (scientific notation):F 6.022e24, 1.0E9, 31e-2F Write e for “times 10 to the”F Does not need a decimal point: the e is enough.F Exponent must be an integer.

In some languages these are called “doubles”

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 6 / 26

Page 26: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 27: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 28: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.

I Try: 10000000000000002.0 - 10000000000000001.0F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 29: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 30: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 31: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.

I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 32: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309

—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 33: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)

I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 34: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324

—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 35: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 36: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1

—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 37: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 38: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Floating-point limitations

Floats are stored in a binary form of scientific notation:I Mantissa: the digits (in binary).I Exponent: how far to move the decimal (binary) point.

In Python, the mantissa holds about 15 significant digits.I Any digits past that are lost (rounding error).

F (leading and trailing zeros don’t count)

I Limits the precision of a float.I Try: 10000000000000002.0 - 10000000000000001.0

F Python’s answer is 2.0: the 1 was rounded down!

The exponent can go from about -300 to 300.I Limits the range of a float.I Try: 1e309—gives inf (infinity)I Try: 1e-324—gives 0.0

The exact limits are on the number of bits, not digits.I Even 0.1 can’t be represented exactly

F Try: 0.1 + 0.1 + 0.1—gives 0.30000000000000004

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 7 / 26

Page 39: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.

I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 40: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 41: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.

I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 42: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 43: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .

I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 44: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 45: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Arithmetic on integers and floats

You can perform arithmetic on both ints and floats. For most arithmeticoperators (+ - * **) the rules are:

If both operands are ints, the result is an int.I 3 + 5 → 8I 2 ** 100 → 1267650600228229401496703205376

If one or both operand is a float, the result is a float.I 3.0 + 0.14 → 3.14I 100 - 1.0 → 99.0I 2.0 ** 100 → 1.2676506002282294e+30

There is one exception. . .I What is 1/2 ?

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 8 / 26

Page 46: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.

I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 47: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 48: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.

I If both operands are integers, so is the result.F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 49: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 50: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 51: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.

F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 52: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 53: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 54: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Division

Python actually has two division operators, / and //.

/ always gives a float.I 1 / 2 → 0.5I 6 / 3 → 2.0I 3.0 / 0.5 → 6.0

// does floor division: rounds the answer down to a whole number.I If both operands are integers, so is the result.

F 22 // 7 → 3F 1 // 2 → 0

I If either operand is a float, so is the result.F But it still has a whole-number value.F 22 // 7.0 → 3.0F 3.1 // 0.5 → 6.0

In either case, dividing by zero is a run-time error!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 9 / 26

Page 55: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).

I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 56: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 57: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.

I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 58: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.

I “Clock arithmetic”F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 59: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 60: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 61: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Remainder (modulo)

The % operator (modulo or mod) finds the remainder of a division.

Between 0 (inclusive) and the right hand side (exclusive).I 6 % 3 → 0I 7 % 3 → 1I 8 % 3 → 2I 9 % 3 → 0

Uses of modulo:I Even/odd: n is even if n % 2 is zero.I Digits: n % 10 is the last digit of n.I “Clock arithmetic”

F Minutes are mod 60: 3:58 + 15 minutes = 4:13F Hours are mod 12: 10:00 + 4 hours = 2:00

Python can do modulo on floats.I 5 % 2.4 → 0.2I Far more common with ints, though.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 10 / 26

Page 62: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 63: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

George Boole, English computer scientist.Image: Computer History Museum

Page 64: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, False

I No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 65: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 66: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 67: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.

I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 68: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 69: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Booleans

Type bool represents boolean values.

Named after George Boole, English mathematician and logician.

Exactly two values: True, FalseI No quotes! They aren’t strings.I Case-sensitive as always: capital T and F.

Boolean values are the basis of computer circuits: EE 280.

Can’t do arithmetic on them.I Can do and, or, and not.I Most often used with if and while statements.I More about booleans in chapter 6.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 11 / 26

Page 70: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.

I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"I If you have to include the quote character, escape it with a backslash:

msg = ’the word "don\’t" is 5 characters long’I Have to escape backslashes, too:

folder = "C:\\Python 3.4"I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + nameI Repeat a string by “multiplying” with an integer:

rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 71: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"

I If you have to include the quote character, escape it with a backslash:msg = ’the word "don\’t" is 5 characters long’

I Have to escape backslashes, too:folder = "C:\\Python 3.4"

I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + nameI Repeat a string by “multiplying” with an integer:

rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 72: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"I If you have to include the quote character, escape it with a backslash:

msg = ’the word "don\’t" is 5 characters long’I Have to escape backslashes, too:

folder = "C:\\Python 3.4"

I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + nameI Repeat a string by “multiplying” with an integer:

rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 73: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"I If you have to include the quote character, escape it with a backslash:

msg = ’the word "don\’t" is 5 characters long’I Have to escape backslashes, too:

folder = "C:\\Python 3.4"I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + nameI Repeat a string by “multiplying” with an integer:

rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 74: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"I If you have to include the quote character, escape it with a backslash:

msg = ’the word "don\’t" is 5 characters long’I Have to escape backslashes, too:

folder = "C:\\Python 3.4"I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + name

I Repeat a string by “multiplying” with an integer:rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 75: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Strings

Type str represents strings: sequences of characters.

Literal strings: a sequence of characters in single or double quotes.I ’hello’, "world", ""I Use whichever quote isn’t in the string:

’some "quotes"’, "a’postrophe"I If you have to include the quote character, escape it with a backslash:

msg = ’the word "don\’t" is 5 characters long’I Have to escape backslashes, too:

folder = "C:\\Python 3.4"I Special characters: tab \t, newline \n.

Can perform a few operations on strings:I Concatenate (join) strings with +:

greeting = "Hello, " + nameI Repeat a string by “multiplying” with an integer:

rating = ’?’ * 4 # ? ? ??bird = 2 * ’do’ # dodo

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 12 / 26

Page 76: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses

:I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 77: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 78: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 79: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHES

I p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 80: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 81: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 82: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Converting between types

Converting between types is also called type casting.

Write the name of the type you are converting to, then the expressionto convert in parentheses:

I float(2) → 2.0I int(3.14) → 3I str(1.2e3) → "1200.0"I int("02") → 2I float("0") → 0.0

Converting double to int rounds towards zero (+ down, − up)

Run-time error if a string could not be converted:I n = int("hello") # CRASHESI p = int("3.2") # CRASHES, but int(float("3.2")) is OK

Converting a string does not do arithmetic:I half = float("1/2") # CRASHES

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 13 / 26

Page 83: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 84: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 85: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 86: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")

F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 87: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)

F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 88: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)

F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 89: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 90: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Output: print

Every program needs to do output of some kind: to the screen, a file, etc.In Python, we use the print function.

Sends output to “standard output”.I This is usually the shell window.I Or the window that appears when you double-click a Python program.

Syntax: print(arguments )I arguments is a comma-separated list of things to print.

F Can have zero, one, or more arguments.

I Each argument can be a literal, variable, expression, . . .I Arguments can be any type: string, integer, float, . . .

F print("Welcome to my program")F print(6 * 7)F print("Hello", name)F print()

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 14 / 26

Page 91: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 92: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 93: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.

I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 94: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 95: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BAD

F This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 96: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 97: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of print

Evaluates the arguments (computes their values).

Prints values to standard output, starting at the cursor.

If multiple arguments are given, puts a space between.

Outputs a “newline” character at the end.I Moves the cursor to the beginning of the next line.I No-argument print() prints just a newline.

The print function does not return a value.I That means you can’t (usefully) use it in an expression:

x = print(2) # BADF This isn’t a syntax error, but x’s value will be None.F Not very useful: usually a semantic error.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 15 / 26

Page 98: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 99: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.

I print(month, day, year, sep = "/")F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 100: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 101: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)

F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 102: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)

I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 103: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 104: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 105: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Extra arguments to print

Sometimes you don’t want spaces between the arguments,or don’t want a newline at the end.

You can control these with so-called keyword arguments.

sep=string : Use string to separate arguments instead of space.I print(month, day, year, sep = "/")

F Might output: 1/27/2015

end=string : Print string at the end, not newline.I That means the next print will start on the same line:

F print("The answer is", end=":")

print(answer)F Output: The answer is:42

Either string can be empty:I print(f initial, m initial, l initial, sep=’’)I Output: NFM

Can use both, but keyword arguments must come at the end!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 16 / 26

Page 106: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Input

Most programs also need to get input from the user.In Python we do this with input function.

Syntax: input(prompt)I One argument (unlike print)I The argument is optional: input()

Returns (evaluates to) a string.I Usually used with assignment:

name = input("What is your name? ")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 17 / 26

Page 107: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Input

Most programs also need to get input from the user.In Python we do this with input function.

Syntax: input(prompt)I One argument (unlike print)I The argument is optional: input()

Returns (evaluates to) a string.I Usually used with assignment:

name = input("What is your name? ")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 17 / 26

Page 108: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Input

Most programs also need to get input from the user.In Python we do this with input function.

Syntax: input(prompt)I One argument (unlike print)I The argument is optional: input()

Returns (evaluates to) a string.I Usually used with assignment:

name = input("What is your name? ")

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 17 / 26

Page 109: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of input

The input function first prints the prompt.I Without a newline! Usually ends in a space:

name = input("What is your name? ")

I If no prompt was given, prints nothing.

Pauses the execution of the program, displays a blinking cursor.I Waits for the user to press Enter.

Returns the entire line of input.I If the user pressed just Enter, returns an empty string.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 18 / 26

Page 110: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of input

The input function first prints the prompt.I Without a newline! Usually ends in a space:

name = input("What is your name? ")I If no prompt was given, prints nothing.

Pauses the execution of the program, displays a blinking cursor.I Waits for the user to press Enter.

Returns the entire line of input.I If the user pressed just Enter, returns an empty string.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 18 / 26

Page 111: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of input

The input function first prints the prompt.I Without a newline! Usually ends in a space:

name = input("What is your name? ")I If no prompt was given, prints nothing.

Pauses the execution of the program, displays a blinking cursor.I Waits for the user to press Enter.

Returns the entire line of input.I If the user pressed just Enter, returns an empty string.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 18 / 26

Page 112: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of input

The input function first prints the prompt.I Without a newline! Usually ends in a space:

name = input("What is your name? ")I If no prompt was given, prints nothing.

Pauses the execution of the program, displays a blinking cursor.I Waits for the user to press Enter.

Returns the entire line of input.I If the user pressed just Enter, returns an empty string.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 18 / 26

Page 113: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Semantics of input

The input function first prints the prompt.I Without a newline! Usually ends in a space:

name = input("What is your name? ")I If no prompt was given, prints nothing.

Pauses the execution of the program, displays a blinking cursor.I Waits for the user to press Enter.

Returns the entire line of input.I If the user pressed just Enter, returns an empty string.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 18 / 26

Page 114: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")

I If you don’t, throws away the input!input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 115: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 116: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?

I Combine it with type casting!age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 117: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 118: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))

I What if the input cannot be converted?F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 119: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 120: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 121: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Using input

The function returns a string value.I Usually used as the right hand side of an assignment.

name = input("What is your name? ")I If you don’t, throws away the input!

input("Press Enter to continue.")

What if you need a number instead?I Combine it with type casting!

age = int(input("How old are you? "))

temp = float(input("What is the temperature? "))I What if the input cannot be converted?

F Run-time error (ValueError exception)

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 19 / 26

Page 122: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 123: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 124: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 125: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.

I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 126: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 127: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?

I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 128: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Testing

We now know enough Python to write a simple program. But how do youknow if the program works correctly?

Testing!

Verify that the progam:I Gives the correct outputs.I Doesn’t crash unexpectedly.I Doesn’t run forever (infinite loop).

For a four- or five-line program, could verify by inspection.I But once it gets longer than that, needs systematic testing.

Could plug in some random value and check the output.I But what if we missed something?I Need a plan. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 20 / 26

Page 129: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).I In CS 115, we’ll usually omit the “actual output”.

F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 130: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).I In CS 115, we’ll usually omit the “actual output”.

F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 131: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.

I In a software company, the last step is often done by dedicated testers(not the author).

I In CS 115, we’ll usually omit the “actual output”.F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 132: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).

I In CS 115, we’ll usually omit the “actual output”.F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 133: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).I In CS 115, we’ll usually omit the “actual output”.

F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.

F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 134: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).I In CS 115, we’ll usually omit the “actual output”.

F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 135: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test cases

We will test our programs by trying out a number of test cases.

A typical test case has four parts:I Description: what are you testing for?I Input data you will give to the program.I The expected output or outcome from that input.I The actual output or outcome from that input.

Do the first three parts before writing the program.I Then fill out the actual output by running the program.I In a software company, the last step is often done by dedicated testers

(not the author).I In CS 115, we’ll usually omit the “actual output”.

F If it’s different from the expected output, you have a bug.F Fix the bugs before turning in the program.F At the very least, document the bug with a comment.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 21 / 26

Page 136: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test plan

A test plan is a table with a number of test cases.

Quality is more important than quantity!

Test cases shouldn’t overlap too much.I If all your tests use positive numbers, how will you know whether

negative numbers work?

Making a good test plan requires thought and attention to theproblem specifications.

You should identify and test:I Normal cases.I Special cases.I Boundary cases.I Error cases.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 22 / 26

Page 137: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test plan

A test plan is a table with a number of test cases.

Quality is more important than quantity!

Test cases shouldn’t overlap too much.I If all your tests use positive numbers, how will you know whether

negative numbers work?

Making a good test plan requires thought and attention to theproblem specifications.

You should identify and test:I Normal cases.I Special cases.I Boundary cases.I Error cases.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 22 / 26

Page 138: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test plan

A test plan is a table with a number of test cases.

Quality is more important than quantity!

Test cases shouldn’t overlap too much.I If all your tests use positive numbers, how will you know whether

negative numbers work?

Making a good test plan requires thought and attention to theproblem specifications.

You should identify and test:I Normal cases.I Special cases.I Boundary cases.I Error cases.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 22 / 26

Page 139: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Test plan

A test plan is a table with a number of test cases.

Quality is more important than quantity!

Test cases shouldn’t overlap too much.I If all your tests use positive numbers, how will you know whether

negative numbers work?

Making a good test plan requires thought and attention to theproblem specifications.

You should identify and test:I Normal cases.I Special cases.I Boundary cases.I Error cases.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 22 / 26

Page 140: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 141: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C

Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 142: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.

Inexact change D C - - Vend one Coke, returnone quarter.

Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 143: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - -

Vend one Coke, returnone quarter.

Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 144: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.

Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 145: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C -

Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 146: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.

Continue Q C D C Flash “0.75”, vend oneCoke, return two quarters.

Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 147: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C

Flash “0.75”, vend oneCoke, return two quarters.

Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 148: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.

Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 149: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R -

Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 150: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.

Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 151: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - -

Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 152: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 153: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 154: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Sample test plan

Suppose you are writing code for a vending machine. Inputs are quarters(Q, 25 cents), dollars (D, 100 cents), Coke button (C, costs 75 cents),and Refund button (R).

Description Inputs Expected outputExact change Q Q Q C Vend one Coke.Inexact change D C - - Vend one Coke, return

one quarter.Not enough Q Q C - Flash “0.75”.Continue Q C D C Flash “0.75”, vend one

Coke, return two quarters.Refund Q Q R - Return two quarters.Refund, no money R - - - Do nothing.

Even more test cases could be described. . .

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 23 / 26

Page 155: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 156: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 157: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 158: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.

I Not just the endpoints, also adjacent numbers.F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 159: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 160: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.

I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 161: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 162: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Off-by-one errors

You need to build a fence 100 feet long, with a fence post every 10 feet.How many posts do you need?

Need 11, not 10!

This is a common source of errors in programming.I “Fencepost errors” or “off-by-one errors”.

Whenever your program involves ranges (1–10, letters “L”–“R”):I Test the boundary cases.I Not just the endpoints, also adjacent numbers.

F So 0, 1, 2 (lower boundary), 9, 10, 11 (upper).F “K”, “L”, “M” and “Q”, “R”, “S”.

Why test boundary cases?I It’s easy to miss one endpoint.I Or to go too far, past the endpoint.I Make sure in-range inputs are accepted.I Make sure out-of-range inputs are rejected.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 24 / 26

Page 163: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.

I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 164: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what?

Run test 5 again?F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 165: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 166: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?

I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 167: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 168: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 169: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 170: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

Regression testing

What happens when you find a bug?

When running your tests, you find an error on test 5.I So you fix the bug in your program.I Now what? Run test 5 again?

F Make sure you actually fixed it!

What about tests 1–4?I Those tests passed already, right?I But what if your change broke something?

A regression is when something used to work, but doesn’t anymore.I Because you (or Python, the OS, . . . ) changed something.I How to avoid regressions?

Regression testing: whenever you change the code,go back to the beginning and repeat all the tests.

I To make sure you didn’t just add a bug too!I This will save you points on CS 115 programs!

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 25 / 26

Page 171: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

The end

Next time:

Libraries and the math library.

Putting it all together: writing a complete program.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 26 / 26

Page 172: CS 115 Lecture 4keen/115/old-lectures-s15/01-27/slides-04.pdf · Syntax: Statements CodeLab questions sometimes ask for a \statement" or \expression". What’s the di erence? A statement

The end

Next time:

Libraries and the math library.

Putting it all together: writing a complete program.

Neil Moore (UK CS) CS 115 Lecture 4 Spring 2015 26 / 26