• No results found

Programming Using Python

N/A
N/A
Protected

Academic year: 2021

Share "Programming Using Python"

Copied!
6
0
0

Loading.... (view fulltext now)

Full text

(1)

Introduction

to

Computation

and

Programming

Using

Python

Revised and

Expanded

Edition

John

V.

Guttag

The MIT

Press

Cambridge,

Massachusetts

London,

England

(2)

CONTENTS

PREFACE xiii

ACKNOWLEDGMENTS xv

1 GETTING STARTED 1 2 INTRODUCTION TO PYTHON 7 2.1 The Basic Elements of

Python

8

2.1.1

Objects, Expressions,

and Numerical

Types

9 2.1.2 Variables and

Assignment

11

2.1.3 IDLE 13

2.2

Branching Programs

14

2.3

Strings

and

Input

16

2.3.1

Input

18

2.4 Iteration 18

3 SOME SIMPLE NUMERICAL PROGRAMS 21 3.1 Exhaustive Enumeration 21

3.2 For

Loops

23

3.3

Approximate

Solutions and Bisection Search 25 3.4 A Few Words About

Using

Floats 29

3.5

Newton-Raphson

32

4

FUNCTIONS, SCOPING,

and ABSTRACTION 34

4.1 Functions and

Scoping

35

4.1.1 Function Definitions 35 4.1.2

Keyword Arguments

and DefaultValues 36

4.1.3

Scoping

37 4.2

Specifications

41 4.3 Recursion 44 4.3.1 Fibonacci Numbers 45 4.3.2 Palindromes 48 4.4 Global Variables 50 4.5 Modules 51 4.6 Files 53
(3)

5 STRUCTURED TYPES, MUTABILITY, AND HIGHER-ORDER FUNCTIONS.. 56

5.1

Tuples

56

5.1.1

Sequences

and

Multiple Assignment

57

5.2 Lists and

Mutability

58

5.2.1

Cloning

63

5.2.2 List

Comprehension

63 5.3 Functions as

Objects

64

5.4

Strings,

Tuples,

and Lists 66

5.5 Dictionaries 67

6 TESTING AND DEBUGGING 70

6.1

Testing

70 6.1.1 Black-Box

Testing

71 6.1.2 Glass-Box

Testing

73 6.1.3

Conducting

Tests 74 6.2

Debugging

76 6.2.1

Learning

to

Debug

78 6.2.2

Designing

the

Experiment

79 6.2.3 When the

Going

Gets

Tough

81

6.2.4 And When You Have Found "The"

Bug

82 7 EXCEPTIONS AND ASSERTIONS 84

7.1

Handling Exceptions

84

7.2

Exceptions

as a Control Flow Mechanism 87

7.3 Assertions 90

8 CLASSES AND OBJECT-ORIENTED PROGRAMMING 91 8.1 Abstract Data

Types

and Classes 91 8.1.1

Designing Programs Using

Abstract Data

Types

96

8.1.2

Using

Classes to

Keep

Track of Students and

Faculty

96 8.2 Inheritance 99 8.2.1

Multiple

Levels ofInheritance 101

8.2.2 The Substitution

Principle

102

8.3

Encapsulation

and Information

Hiding

103

8.3.1 Generators 106

(4)

ix

9 A SIMPLISTIC INTRODUCTION TO ALGORITHMIC COMPLEXITY 113

9.1

Thinking

About

Computational Complexity

113

9.2

Asymptotic

Notation 116

9.3 Some

Important

Complexity

Classes 118

9.3.1 Constant

Complexity

118 9.3.2

Logarithmic

Complexity

118 9.3.3 Linear

Complexity

119 9.3.4

Log-Linear

Complexity

120 9.3.5

Polynomial Complexity

120 9.3.6

Exponential

Complexity

121 9.3.7

Comparisons

of

Complexity

Classes 123 10 SOME SIMPLE ALGORITHMS AND DATA STRUCTURES 125

10.1 Search

Algorithms

126

10.1.1 Linear Search and

Using

Indirection to Access Elements 126 10.1.2

Binary

Search and

Exploiting Assumptions

128 10.2

Sorting

Algorithms

131

10.2.1

Merge

Sort 132

10.2.2

Exploiting

Functions asParameters 135

10.2.3

Sorting

in

Python

136

10.3 Hash Tables 137

11 PLOTTING AND MORE ABOUT CLASSES 141 11.1

Plotting

Using PyLab

141 11.2

Plotting

Mortgages,

an Extended

Example

146

12 STOCHASTIC

PROGRAMS, PROBABILITY,

AND STATISTICS 152

12.1 Stochastic

Programs

153

12.2 Inferential Statistics and Simulation 155 12.3 Distributions 166

12.3.1 Normal Distributions and Confidence Levels 168 12.3.2 UniformDistributions 170 12.3.3

Exponential

and Geometric Distributions 171 12.3.4 Benford's Distribution 173

12.4 How Often Does the Better Team Win? 174

(5)

X

13 RANDOM WALKS AND MORE ABOUT DATA VISUALIZATION 179 13.1 The Drunkard's Walk 179 13.2 Biased Random Walks 186

13.3 Treacherous Fields 191 14 MONTE CARLO SIMULATION 193

14.1 Pascal's Problem 194

14.2 Pass or Don't Pass? 195

14.3

Using

Table

Lookup

to

Improve

Performance 199

14.4

Finding

* 200

14.5 Some

Closing

Remarks About Simulation Models 204 15 UNDERSTANDING EXPERIMENTAL DATA 207 15.1 The Behavior of

Springs

207 15.1.1

Using

Linear

Regression

to Find a Fit 210

15.2 The Behavior of

Projectiles

214

15.2.1 Coefficient ofDetermination 216 15.2.2

Using

a

Computational

Model 217

15.3

Fitting Exponentially

Distributed Data 218

15.4 When

Theory

Is

Missing

221

16 LIES. DAMNED LIES, AND STATISTICS 222

16.1

Garbage

In

Garbage

Out

(GIGO)

222 16.2 Pictures CanBe

Deceiving

223

16.3 dimHoc

Ergo Propter

Hoc 225

16.4 Statistical Measures Don't Tell the Whole

Story

226

16.5

Sampling

Bias 228

16.6 Context Matters 229

16.7 Beware of

Extrapolation

229 16.8 The Texas

Sharpshooter Fallacy

230

16.9

Percentages

Can Confuse 232 16.10 Just Beware 233

17 KNAPSACK AND GRAPH OPTIMIZATION PROBLEMS 234

17.1

Knapsack

Problems 234 17.1.1

Greedy Algorithms

235 17.1.2 An

Optimal

Solution to the

0/1 Knapsack

Problem 238
(6)

17.2

Graph Optimization

Problems 240 17.2.1 Some Classic

Graph-Theoretic

Problems 244

17.2.2 The

Spread

of Disease and Min Cut 245 17.2.3 Shortest Path:

Depth-First

Search and Breadth-First Search.... 246

18 DYNAMIC PROGRAMMING 252

18.1 Fibonacci

Sequences,

Revisited 252

18.2

Dynamic Programming

and the

0/1

Knapsack

Problem 254 18.3

Dynamic

Programming

and

Divide-and-Conquer

261

19 A

QUICK

LOOK AT MACHINE LEARNING 262

19.1 Feature Vectors 264 19.2 Distance Metrics 266

19.3

Clustering

270

19.4

Types

Example

and Cluster 272

19.5 K-means

Clustering

274 19.6 A Contrived

Example

276 19.7 A Less Contrived

Example

280

19.8

Wrapping Up

286

PYTHON 2.7

QUICK

REFERENCE 287

References

Related documents

IT335 Python Introduction for Commerce CIT 134A Programming in Python or CIT 134B Advanced Python Programming. n/a

Teacher Tip: This course introduces students to the TI-Innovator Hub using Python programming on the TI 84 CE Plus Python and assumes students have no programming experience.. For

Vice-President Swedish Spine Surgeons Society Orthopaedic Spine Surgeon, Consultant Stockholm Spine Center, Upplands Väsby Karolinska Institute.

Side keys, palm keys, little finger (pinky) keys, and other keys are shown as superscripts in the left hand and subscripts in the right hand at the position the keys

Optimised and efficient production Range of solutions GRINDSTED ® LFS GRINDSTED ® PGPR DIMODAN® DIMODAN ® DIMODAN ® Emulsification GRINDSTED ® CRYSTALLIZER Emulsifier

• Appropriate for object-oriented programming languages with dynamic types - like Python.. Lists

All construction projects with federal funds All construction projects with federal funds over $3M must achieve LEED certification or over $3M must achieve LEED certification or

Evaluation of information, free amazon prime exclusive offers insights, you are also across asia and create an account at a gift codes when taking the products?. Broken