269x Filetype PDF File size 0.67 MB Source: beej.us
Beej’s Guide to Python Programming
For Beginners
Brian “Beej Jorgensen” Hall
v0.0.8, Copyright © November 11, 2020
Contents
Intro 1
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Platform and Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Official Homepage and Books For Sale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Email Policy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Mirroring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Note for Translators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Copyright, Distribution, and Legal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Dedication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Publishing Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
WhatisProgramming,Anyway? 4
Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
MoreTerminologyThanYouWanted . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
What’s This Talk About Problem Solving? . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
SoHowToSolveIt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
WhatisPython? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
WhatsoftwarewillIneed? 7
Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Whatareall these things? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Terminal/Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Windowsgitbash (optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
WindowsShellApp(optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
WindowsWSL(optional) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Linux/Unix-likes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Codeeditor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
WindowsVSCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Linux and other Unix-likes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Python itself! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
AnoteonPython2versusPython3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Checking to see if you already have Python installed . . . . . . . . . . . . . . . . . . . 10
Windowsnative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
WindowsWSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Linux/Unix-likes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
HowdoIwriteaprogram? 12
Objectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
TheProblemThatNeedsSolving . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Start with the Terminal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
i
CONTENTS ii
Launching your code editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Running the Program! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
DataandProcessingData 15
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Data, Variables, and Math . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Assiging from One Variable to Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Your Mental Model of Computation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
User Input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Converting Between Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Input Two Numbers and Print the Sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Wrapping it Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
FlowControlandLooping 26
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
WhatisFlowControl? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Boolean Algebra and Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Boolean Operations in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
TheAlmightyifStatement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
AndNow: whileLoops! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Looping: for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
WhenwhileandWhenfor? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Chapter Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Strings 37
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
WhatisaString? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Creating Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Converting Other Types To Strings and Vice Versa . . . . . . . . . . . . . . . . . . . . . . . 38
String Concatenation with + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
MidtermChallenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Getting Individual Characters From Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
MidtermChallenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Interlude: Mutable versus Immutable Types . . . . . . . . . . . . . . . . . . . . . . . . . . 41
for-loops with Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
String Functions and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Formatted Output with F-Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
.format()Method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
%printf Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Chapter Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Lists 51
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
WhatAreLists? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
List Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
forandLists—PowerfulStuff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
CONTENTS iii
forandenumerate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Midterm: Doubling The Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Built-in Functions for Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
WhatGoodAreThey? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
MidtermChallenge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Building New Lists, Repeating and Empty . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
List Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Lists of Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Chapter Project Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Dictionaries 72
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
WhatareDictionaries? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Initializing a Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Speed Demon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Doesthis dict have this key? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Iterating over Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
CommonBuilt-inDictionary Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Dictionary Comprehensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Dictionaries of Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Dictionaries are Mutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
TheChapter Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Functions 84
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
WhatAreFunctions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Using Built-In Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Writing Your Own Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Multiple Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
WhatMakesaGoodFunction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Positional Arguments versus Keyword Arguments . . . . . . . . . . . . . . . . . . . . . . . 90
Interlude: Evaluation Strategies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
TheChapter Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Classes and Objects 99
Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Chapter Project Specification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
WhatProblemAreWeEvenTryingToSolve? . . . . . . . . . . . . . . . . . . . . . . . . . 100
WhatareClasses and Objects? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
MakingDifferent StarShips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Using Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
MoreonMethods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Pretty Printing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Objects are Mutable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Objects and None . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Testing for Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Chapter Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
no reviews yet
Please Login to review.