154x 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.