The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming...

123

Transcript of The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming...

Page 1: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome
Page 2: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

ThePythonGuideforBeginnersRenanMoura

2

Page 3: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

ThePythonGuideforBeginners1Preface2IntroductiontoPython3InstallingPython34RunningCode5Syntax6Comments7Variables8Types9Typecasting10UserInput11Operators12Conditionals13Lists14Tuples15Sets16Dictionaries17whileLoops18forLoops19Functions20Scope21ListComprehensions22LambdaFunctions23Modules

3

Page 4: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

24if__name__=='__main__'25Files26ClassesandObjects27Inheritance28Exceptions29Conclusion

4

Page 5: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

1PrefacePythonhasbecomeoneof the fastest-growingprogramming languagesoverthepastfewyears.

Notonlyitiswidelyused,itisalsoanawesomelanguagetotackleifyouwanttogetintotheworldofprogramming.

This Python Guide for Beginners allows you to learn the core of thelanguageinamatterofhoursinsteadofweeks.

The intention of this book is not to be an exhaustive manual oneverythingPythonhastoofferasoneofthemajorlanguagesinmodernprogramming.

Ifocusonwhatyouwillneedtousemostofthetimetosolvemostoftheproblemsasabeginner.

I deeply believe that you should be able to learn the core of anyprogramminglanguageandthengofromtheretodiveintospecificsanddetailsasneeded.

I'm Renan Moura and I write about Software Development onrenanmf.com.

Youcanalsofindmeas@renanmourafon:

Twitter:https://twitter.com/renanmouraf

5

Page 6: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Linkedin:https://www.linkedin.com/in/renanmourafInstagram:https://www.instagram.com/renanmouraf

6

Page 7: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

2IntroductiontoPythonPythonwascreatedin1990byGuidoVanRossuminHolland.

One of the objectives of the language was to be accessible to non-programmers.

Pythonwasalsodesignedtobeasecondlanguageforprogrammerstolearnduetoitslowlearningcurveandeaseofuse.

PythonrunsonMac,Linux,Windows,andmanyotherplatforms.

Pythonis:

Interpreted: it can execute at runtime, and changes in a programare instantly perceptible. To be very technical, Python has acompiler. The difference when compared to Java or C++ is howtransparentandautomaticitis.WithPython,wedon'thavetoworryaboutthecompilationstepasit'sdoneinreal-time.Thetradeoffisthatinterpretedlanguagesareusuallyslowerthancompiledones.

SemanticallyDynamic:youdon'thavetospecifytypesforvariablesandthereisnothingthatmakesyoudoit.

Object-Oriented: everything in Python is an object. But you canchoose to write code in an object-oriented, procedural, or evenfunctionalway.

7

Page 8: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Highlevel:youdon'thavetodealwithlow-levelmachinedetails.

Pythonhasbeengrowingalotrecentlypartlybecauseof itsmanyusesinthefollowingareas:

System scripting: it's a great tool to automate everyday repetitivetasks.

Data Analysis: it is a great language to experiment with and hastonsof librariesand tools tohandledata,createmodels,visualizeresults and even deploy solutions. This is used in areas likeFinance,E-commerce,andResearch.

Web Development: frameworks like Django and Flask allow thedevelopmentofwebapplications,API's,andwebsites.

MachineLearning:TensorflowandPytorcharesomeofthelibrariesthatallowscientistsandtheindustrytodevelopanddeployArtificialIntelligence solutions in Image Recognition, Health, Self-drivingcars,andmanyotherfields.

Youcaneasilyorganizeyourcodeinmodulesandreusethemorsharethemwithothers.

Finally, we have to keep in mind that Python had breaking changesbetweenversions2and3.AndsincePython2supportended in2020,thisarticleissolelybasedonPython3.

Solet'sgetstarted.

8

Page 9: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

3InstallingPython3If you use a Mac or Linux you already have Python installed. ButWindowsdoesn'tcomewithPythoninstalledbydefault.

YoualsomighthavePython2,andwearegoingtousePython3.SoyoushouldchecktoseeifyouhavePython3first.

Typethefollowinginyourterminal.

python3-V

NoticetheuppercaseV.

If your result is something similar to 'Python3.x.y', for instance,Python3.8.1,thenyouarereadytogo.

Ifnot,followthenextinstructionsaccordingtoyourOperatingSystem.

3.1InstallingPython3onWindows

Gotohttps://www.python.org/downloads/.

Downloadthelatestversion.

Afterthedownload,double-clicktheinstaller.

Onthefirstscreen,checktheboxindicatingto"AddPython3.xtoPATH"andthenclickon"InstallNow".

9

Page 10: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Wait for the installation process to finish until the next screenwith themessage"Setupwassuccessful".

Clickon"Close".

3.2InstallingPython3onMac

InstallXCodefromtheAppStore.

Installthecommandlinetoolsbyrunningthefollowinginyourterminal.

xcode-select--install

I recommend using Homebrew. Go to https://brew.sh/ and follow theinstructionsonthefirstpagetoinstallit.

After installing Homebrew, run the following brew commands to installPython3.

brewupdate

brewinstallpython3

HomebrewalreadyaddsPython3tothePATH,soyoudon'thavetodoanythingelse.

3.3InstallingPython3onLinux

Toinstallusingapt,availableinUbuntuandDebian,enterthefollowing:

sudoaptinstallpython3

10

Page 11: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Toinstallusingyum,availableinRedHatandCentOS,enterthefollowing:

sudoyuminstallpython3

11

Page 12: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

4RunningCodeYou can runPython codedirectly in the terminal as commandsor youcansavethecodeinafilewiththe.pyextensionandrunthePythonfile.

4.1Terminal

Running commands directly in the terminal is recommendedwhen youwanttorunsomethingsimple.

Openthecommandlineandtypepython3:

renan@mypc:~$python3

Youshouldseesomethinglikethisinyourterminalindicatingtheversion(inmycase,Python3.6.9), theoperatingsystem(I'musingLinux),andsomebasiccommandstohelpyou.

The>>>tellsusweareinthePythonconsole.

Python3.6.9(default,Nov72019,10:44:02)

[GCC8.3.0]onlinux

Type"help","copyright","credits"or"license"formoreinformation.

>>>

Let's test itby runningour firstprogramtoperformbasicmathandaddtwonumbers.

>>>2+2

12

Page 13: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Theoutputis:

4

ToexitthePythonconsolesimplytypeexit().

>>>exit()

4.2Running.pyfiles

If you have a complex program, with many lines of code, the Pythonconsoleisn'tthebestoption.

Thealternative issimply toopena texteditor, type thecode,andsavethefilewitha.pyextension.

Let's do that, create a file called second_program.py with the followingcontent.

print('SecondProgram')

Theprint()functionprintsamessageonthescreen.

Themessage goes inside the parentheseswith either single quotes ordoublequotes,bothworkthesame.

Toruntheprogram,onyourterminaldothefollowing:

renan@mypc:~$python3second_program.py

13

Page 14: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Theoutputis:

SecondProgram

14

Page 15: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

5SyntaxPythonisknownforitscleansyntax.

The language avoids using unnecessary characters to indicate somespecificity.

5.1Semicolons

Pythonmakesnouseofsemicolonstofinishlines.Anewlineisenoughtotelltheinterpreterthatanewcommandisbeginning.

Theprint()functionwilldisplaysomething.

Inthisexample,wehavetwocommandsthatwilldisplaythemessagesinsidethesinglequotes.

print('Firstcommand')

print('Secondcommand')

Output:

Firstcommand

Secondcommand

Thisiswrongduetothesemicolonsintheend:

print('Firstcommand');

print('Secondcommand');

15

Page 16: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

5.2Indentation

Manylanguagesusecurly-bracketstodefinescopes.

Python's interpreterusesonly indentation todefinewhenascopeendsandanotheronestarts.

Thismeans youhave to beawareofwhite spacesat the beginningofeachline--theyhavemeaningandmightbreakyourcodeifmisplaced.

Thisdefinitionofafunctionworks:

defmy_function():

print('Firstcommand')

Thisdoesn'tworkbecausetheindentationofthesecondlineismissingandwillthrowanerror:

defmy_function():

print('Firstcommand')

5.3Casesensitivityandvariables

Pythoniscasesensitive.SothevariablesnameandNamearenotthesamethingandstoredifferentvalues.

name='Renan'

16

Page 17: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Name='Moura'

Asyoucouldsee,variablesareeasilycreatedbyjustassigningvaluestothemusingthe=symbol.

Thismeansnamestores'Renan'andNamestores'Moura'.

5.4Comments

Finally,tocommentsomethinginyourcode,usethehashmark#.

Thecommentedpartdoesnotinfluencetheprogramflow.

#thisfunctionprintssomething

defmy_function():

print('Firstcommand')

Thiswasanoverview,minordetailsoneachofthesewillbecomemoreclearinthenextchapterswithexamplesandbroaderexplanations.

17

Page 18: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

6CommentsThepurposeofcommentsistoexplainwhatishappeninginthecode.

Comments are written along with your code but do not influence yourprogramflow.

Whenyouworkbyyourself,maybecommentsdon't feel likesomethingyoushouldwrite.Afterall,at themoment,youknow thewhysofeverysinglelineofcode.

Butwhatifnewpeoplecomeonboardyourprojectafterayearandtheprojecthas3modules,eachwith10,000linesofcode?

Thinkaboutpeoplewhodon'tknowathingaboutyourappandwhoaresuddenlyhavingtomaintainit,fixit,oraddnewfeatures.

Remember,thereisnosinglesolutionforagivenproblem.Yourwayofsolvingthingsisyoursandyoursonly.Ifyouask10peopletosolvethesameproblem,theywillcomeupwith10differentsolutions.

Ifyouwantotherstofullyunderstandyourreasoning,goodcodedesignismandatory,butcommentsareanintegralpartofanycodebase.

6.1HowtoWriteCommentsinPython

ThesyntaxofcommentsinPythonisrathereasy:justusethehashmark#symbolinfrontofthetextyouwanttobeacomment.

18

Page 19: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

#Thisisacommentanditwon'tinfluencemyprogramflow

Youcanuseacommenttoexplainwhatsomepieceofcodedoes.

#calculatesthesumofanygiventwonumbers

a+b

6.2MultilineComments

Maybe you want to comment on something very complex or describehowsomeprocessworksinyourcode.

Inthesecases,youcanusemultilinecomments.

Todothat,justuseasinglehashmark#foreachline.

#Everythingafterthehashmark#isacomment

#Thisisacommentanditwon'tinfluencemyprogramflow

#Calculatesthecostoftheprojectgivenvariablesaandb

#aisthetimeinmonthsitwilltakeuntiltheprojectisfinished

#bishowmuchmoneyitwillcostpermonth

a+b*10

19

Page 20: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

7VariablesInanyprogram,youneedtostoreandmanipulatedatatocreateafloworsomespecificlogic.

That'swhatvariablesarefor.

Youcanhaveavariabletostoreaname,anotheronetostoretheageofaperson,orevenuseamorecomplextypetostoreallofthisatoncelikeadictionary.

7.1CreatingalsoknownasDeclaring

DeclaringavariableisabasicandstraightforwardoperationinPython.

Justpickanameandattributeavaluetoitusethe=symbol.

name='Bob'

age=32

Youcanusetheprint()functiontoshowthevalueofavariable.

print(name)

print(age)

Bob

20

Page 21: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

32

NoticethatinPythonthereisnospecialwordtodeclareavariable.

Themomentyouassignavalue,thevariableiscreatedinmemory.

Pythonalsohasdynamictyping,whichmeansyoudon'thavetotell it ifyourvariableisatextoranumber,forinstance.

Theinterpreterinfersthetypingbasedonthevalueassigned.

If you need it, you can also re-declare a variable just by changing itsvalue.

#declaringnameasastring

name='Bob'

#re-declaringnameasanint

name=32

Keep inmymind, though, that this isnot recommendedsincevariablesmusthavemeaningandcontext.

IfIhaveavariablecallednameIdon'texpectittohaveanumberstoredinit.

7.2NamingConvention

Let's continue from the last section when I talked about meaning andcontext.

Don'tuserandomvariablenameslikexory.

21

Page 22: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Sayyouwanttostorethetimeofaparty,justcallitparty_time.

Oh,didyounoticetheunderscore_?

Byconvention, if youwant touseavariablename that iscomposedoftwo or more words, you separate them by underscores. This is calledSnakeCase.

AnotheroptionwouldbeusingCamelCaseasinpartyTime.This isverycommoninother languages,butnottheconvention inPythonasstatedbefore.

Variablesarecasesensitive, soparty_time andParty_time arenot thesame.Also,keepinmindthattheconventiontellsustoalwaysuselowercase.

Remember, use names that you can recall inside your programeasily.Badnamingcancostyoualotoftimeandcauseannoyingbugs.

Insummary,variablenames:

AreCasesensitive:timeandTIMEarenotthesameHavetostartwithanunderscore_oraletter(DONOTstartwithanumber)Are allowed to have only numbers, letters and underscores. Nospecialcharacterslike:#,$,&,@,etc.

This,forinstance,isnotallowed:party#time,10partytime.

22

Page 23: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

8TypesTostoredata inPythonyouneedtouseavariable.Andeveryvariablehasitstypedependingonthevalueofthedatastored.

Python has dynamic typing, which means you don't have to explicitlydeclarethetypeofyourvariable--butifyouwantto,youcan.

Lists, Tuples, Sets, and Dictionaries are all data types and havededicated chapters later on with more details, but we'll look at thembrieflyhere.

Thisway Icanshowyou themost importantaspectsandoperationsofeachone in theirownchapterwhilekeeping this chaptermoreconciseandfocusedongivingyouabroadviewofthemaindatatypesinPython.

8.1DeterminingtheType

Firstofall,let'slearnhowtodeterminethedatatype.

Justusethetype() functionandpassthevariableofyourchoiceasanargument,liketheexamplebelow.

print(type(my_variable))

8.2Boolean

23

Page 24: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Thebooleantypeisoneofthemostbasictypesofprogramming.

AbooleantypevariablecanonlyrepresenteitherTrueorFalse.

my_bool=True

print(type(my_bool))

my_bool=bool(1024)

print(type(my_bool))

<class'bool'>

<class'bool'>

8.3Numbers

Therearethreenumerictypes:int,float,andcomplex.

8.3.1Integer

my_int=32

print(type(my_int))

my_int=int(32)

print(type(my_int))

<class'int'>

<class'int'>

8.3.2Float

my_float=32.85

print(type(my_float))

24

Page 25: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

my_float=float(32.85)

print(type(my_float))

<class'float'>

<class'float'>

8.3.3Complex

my_complex_number=32+4j

print(type(my_complex_number))

my_complex_number=complex(32+4j)

print(type(my_complex_number))

<class'complex'>

<class'complex'>

8.4String

The text type isoneof themostcommons typesout thereand isoftencalledstringor,inPython,juststr.

my_city="NewYork"

print(type(my_city))

#Singlequoteshaveexactly

#thesameuseasdoublequotes

my_city='NewYork'

print(type(my_city))

#Settingthevariabletypeexplicitly

my_city=str("NewYork")

print(type(my_city))

25

Page 26: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

<class'str'>

<class'str'>

<class'str'>

Youcanusethe+operatortoconcatenatestrings.

Concatenationiswhenyouhavetwoormorestringsandyouwanttojointhemintoone.

word1='New'

word2='York'

print(word1+word2)

NewYork

Thestringtypehasmanybuilt-inmethodsthatletusmanipulatethem.Iwilldemonstratehowsomeofthesemethodswork.

Thelen()functionreturnsthelengthofastring.

print(len('NewYork'))

8

Thereplace()method replacesapartof thestringwithanother.Asanexample,let'sreplace'New'for'Old'.

print('NewYork'.replace('New','Old'))

26

Page 27: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

OldYork

Theupper()methodwillreturnallcharactersasuppercase.

print('NewYork'.upper())

NEWYORK

The lower() method does the opposite, and returns all characters aslowercase.

print('NewYork'.lower())

newyork

8.5Lists

A list has its items ordered and you can add the same item asmanytimesasyouwant.Animportantdetailisthatlistsaremutable.

Mutabilitymeansyoucanchangealistafteritscreationbyaddingitems,removingthem,orevenjustchangingtheirvalues.TheseoperationswillbedemonstratedlaterinthechapterdedicatedtoLists.

my_list=["bmw","ferrari","maclaren"]

print(type(my_list))

27

Page 28: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

my_list=list(("bmw","ferrari","maclaren"))

print(type(my_list))

<class'list'>

<class'list'>

8.6Tuples

Atupleisjustlikealist:ordered,andallowsrepetitionofitems.

Thereisjustonedifference:atupleisimmutable.

Immutabilitymeansyoucan'tchangeatupleafter itscreation.Ifyoutryto add an item or update one, for instance, the Python interpreter willshowyouanerror.IwillshowthattheseerrorsoccurlaterinthechapterdedicatedtoTuples.

my_tuple=("bmw","ferrari","maclaren")

print(type(my_tuple))

my_tuple=tuple(("bmw","ferrari","maclaren"))

print(type(my_tuple))

<class'tuple'>

<class'tuple'>

8.7Sets

Setsdon'tguaranteetheorderoftheitemsandarenotindexed.

Akeypointwhenusingsets:theydon'tallowrepetitionofanitem.

28

Page 29: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

my_set={"bmw","ferrari","maclaren"}

print(type(my_set))

my_set=set(("bmw","ferrari","maclaren"))

print(type(my_set))

<class'set'>

<class'set'>

8.8Dictionaries

Adictionarydoesn'tguaranteetheorderoftheelementsandismutable.

Oneimportantcharacteristic indictionariesisthatyoucansetyourownaccesskeysforeachelement.

my_dict={"country":"France","worldcups":2}

print(type(my_dict))

my_dict=dict(country="France",worldcups=2)

print(type(my_dict))

<class'dict'>

<class'dict'>

29

Page 30: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

9TypecastingTypecastingallowsyoutoconvertbetweendifferenttypes.

Thiswayyoucanhaveanintturnedintoastr,orafloatturnedintoanint,forinstance.

9.1Explicitconversion

Tocastavariabletoastringjustusethestr()function.

#thisisjustaregularexplicitintialization

my_str=str('32')

print(my_str)

#inttostr

my_str=str(32)

print(my_str)

#floattostr

my_str=str(32.0)

print(my_str)

32

32

32.0

Tocastavariabletoanintegerjustusetheint()function.

#thisisjustaregularexplicitintialization

my_int=int(32)

print(my_int)

#floattoint:roundsdownto3

my_int=int(3.2)

30

Page 31: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

print(my_int)

#strtoint

my_int=int('32')

print(my_int)

32

3

32

Tocastavariabletoafloatjustusethefloat()function.

#thisisanexplicitintialization

my_float=float(3.2)

print(my_float)

#inttofloat

my_float=float(32)

print(my_float)

#strtofloat

my_float=float('32')

print(my_float)

3.2

32.0

32.0

WhatIdidbeforeiscalledanexplicittypeconversion.

In some cases you don't need to do the conversion explicitly, sincePythoncandoitbyitself.

9.2Implicitconversion

Theexamplebelowshowsimplicitconversionwhenaddinganintanda

31

Page 32: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

float.

Notice thatmy_sum isfloat.Pythonusesfloat toavoiddata losssincetheinttypecannotrepresentthedecimaldigits.

my_int=32

my_float=3.2

my_sum=my_int+my_float

print(my_sum)

print(type(my_sum))

35.2

<class'float'>

On the other hand, in this example, when you add an int and a str,Pythonwillnotbeable tomake the implicitconversion,and theexplicittypeconversionisnecessary.

my_int=32

my_str='32'

#explicitconversionworks

my_sum=my_int+int(my_str)

print(my_sum)

#implicitconversionthrowsanerror

my_sum=my_int+my_str

64

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

TypeError:unsupportedoperandtype(s)for+:'int'and'str'

32

Page 33: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Thesameerroristhrownwhentryingtoaddfloatandstrtypeswithoutmakinganexplicitconversion.

my_float=3.2

my_str='32'

#explicitconversionworks

my_sum=my_float+float(my_str)

print(my_sum)

#implicitconversionthrowsanerror

my_sum=my_float+my_str

35.2

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

TypeError:unsupportedoperandtype(s)for+:'float'and'str'

33

Page 34: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

10UserInputIf you need to interact with a user when running your program in thecommand line (forexample, toask forapieceof information), youcanusetheinput()function.

country=input("Whatisyourcountry?")#userenters'Brazil'

print(country)

Brazil

Thecapturedvalueisalwaysstring.Justrememberthatyoumightneedtoconvertitusingtypecasting.

age=input("Howoldareyou?")#userenters'29'

print(age)

print(type(age))

age=int(age)

print(type(age))

Theoutputforeachprint()is:

29

<class'str'>

<class'int'>

34

Page 35: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Noticetheage29iscapturedasstringandthenconvertedexplicitlytoint.

35

Page 36: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

11OperatorsInaprogramminglanguage,operatorsarespecialsymbolsthatyoucanapplytoyourvariablesandvaluesinordertoperformoperationssuchasarithmetic/mathematicalandcomparison.

Pythonhas lotsofoperators thatyoucanapply toyourvariablesand Iwilldemonstratethemostusedones.

11.1ArithmeticOperators

Arithmeticoperatorsarethemostcommontypeofoperatorsandalsothemostrecognizableones.

Theyallowyoutoperformsimplemathematicaloperations.

Theyare:

+:Addition-:Subtraction*:Multiplication/:Division**:Exponentiation//:FloorDivision,roundsdowntheresultofadivision%:Modulus,givesyoutheremainderofadivision

Let'sseeaprogramthatshowshoweachofthemisused.

36

Page 37: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

print('Addition:',5+2)

print('Subtraction:',5-2)

print('Multiplication:',5*2)

print('Division:',5/2)

print('FloorDivision:',5//2)

print('Exponentiation:',5**2)

print('Modulus:',5%2)

Addition:7

Subtraction:3

Multiplication:10

Division:2.5

FloorDivision:2

Exponentiation:25

Modulus:1

11.1.1Concatenation

Concatenationiswhenyouhavetwoormorestringsandyouwanttojointhemintoone.

This isusefulwhenyouhave information inmultiplevariablesandwanttocombinethem.

For instance, in thisnextexample I combine twovariables that containmyfirstnameandmylastnamerespectivelytohavemyfullname.

The+operatorisalsousedtoconcatenate.

first_name='Renan'

last_name='Moura'

37

Page 38: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

print(first_name+last_name)

RenanMoura

Since concatenation is applied to strings, to concatenate strings withothertypes,youhavetodoanexplicittypecastusingstr().

Ihavetotypecasttheintvalue30tostringwithstr()toconcatenateitwiththerestofthestring.

age='Ihave'+str(30)+'yearsold'

print(age)

Ihave30yearsold

11.2ComparisonOperators

Usecomparisonoperatorstocomparetwovalues.

TheseoperatorsreturneitherTrueorFalse.

Theyare:

==:Equal!=:Notequal>:Greaterthan<:Lessthan>=:Greaterthanorequalto

38

Page 39: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

<=:Lessthanorequalto

Let'sseeaprogramthatshowshoweachofthemisused.

print('Equal:',5==2)

print('Notequal:',5!=2)

print('Greaterthan:',5>2)

print('Lessthan:',5<2)

print('Greaterthanorequalto:',5>=2)

print('Lessthanorequalto:',5<=2)

Equal:False

Notequal:True

Greaterthan:True

Lessthan:False

Greaterthanorequalto:True

Lessthanorequalto:False

11.3AssignmentOperators

As the name implies, these operators are used to assign values tovariables.

x=7inthefirstexampleisadirectassignmentstoringthenumber7inthevariablex.

Theassignmentoperationtakesthevalueontherightandassigns it tothevariableontheleft.

TheotheroperatorsaresimpleshorthandsfortheArithmeticOperators.

39

Page 40: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Inthesecondexamplexstartswith7andx+=2 is justanotherwaytowritex=x+2,whichmeansthepreviousvalueofxisaddedby2andreassignedtoxthatisnowequalsto9.

=:simpleassignment

x=7

print(x)

7

+=:additionandassignment

x=7

x+=2

print(x)

9

-=:subtractionandassignment

x=7

x-=2

print(x)

5

*=:multiplicationandassignment

40

Page 41: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

x=7

x*=2

print(x)

14

/=:divisionandassignment

x=7

x/=2

print(x)

3.5

%=:modulusandassignment

x=7

x%=2

print(x)

1

//=:floordivisionandassignment

x=7

x//=2

print(x)

3

41

Page 42: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

**=:exponentiationandassignment

x=7

x**=2

print(x)

49

11.4LogicalOperators

Logical operators are used to combine statements applying booleanalgebra.

Theyare:

and:Trueonlywhenbothstatementsaretrueor:Falseonlywhenbothxandyarefalsenot:Thenotoperatorsimplyinvertstheinput,TruebecomesFalseandviceversa.

Let'sseeaprogramthatshowshoweachoneisused.

x=5

y=2

print(x==5andy>3)

print(x==5ory>3)

print(not(x==5))

False

42

Page 43: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

True

False

11.5MembershipOperators

These operators provide an easy way to check if a certain object ispresentinasequence:string,list,tuple,set,anddictionary.

Theyare:

in:returnsTrueiftheobjectispresentnotin:returnsTrueiftheobjectisnotpresent

Let'sseeaprogramthatshowshoweachoneisused.

number_list=[1,2,4,5,6]

print(1innumber_list)

print(5notinnumber_list)

print(3notinnumber_list)

True

False

True

43

Page 44: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

12ConditionalsConditionalsareoneofthecornerstonesofanyprogramminglanguage.

They allow you to control the program flow according to specificconditionsyoucancheck.

12.1Theifstatement

Thewayyouimplementaconditionalisthroughtheifstatement.

Thegeneralformofanifstatementis:

ifexpression:

statement

The expression contains some logic that returns a boolean, and thestatementisexecutedonlyifthereturnisTrue.

Asimpleexample:

bob_age=32

sarah_age=29

ifbob_age>sarah_age:

print('BobisolderthanSarah')

BobisolderthanSarah

44

Page 45: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

We have two variables indicating the ages of Bob and Sarah. TheconditioninplainEnglishsays"ifBob'sageisgreaterthanSarah'sage,thenprintthephrase'BobisolderthanSarah'".

Since the condition returns True, the phrase will be printed on theconsole.

12.2Theifelseandelifstatements

In our last example, the program only does something if the conditionreturnsTrue.

Butwealsowant it todosomething if it returnsFalseorevencheckasecondorthirdconditionifthefirstonewasn'tmet.

Inthisexample,weswappedBob'sandSarah'sage.ThefirstconditionwillreturnFalsesinceSarahisoldernow,andthentheprogramwillprintthephraseaftertheelseinstead.

bob_age=29

sarah_age=32

ifbob_age>sarah_age:

print('BobisolderthanSarah')

else:

print('BobisyoungerthanSarah')

BobisyoungerthanSarah

Now,considertheexamplebelowwiththeelif.

45

Page 46: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

bob_age=32

sarah_age=32

ifbob_age>sarah_age:

print('BobisolderthanSarah')

elifbob_age==sarah_age:

print('BobandSarahhavethesameage')

else:

print('BobisyoungerthanSarah')

BobandSarahhavethesameage

The purpose of the elif is to provide a new condition to be checkedbeforetheelseisexecuted.

Onceagainwechangedtheiragesandnowbothare32yearsold.

Assuch,theconditionintheelifismet.Sincebothhavethesameagetheprogramwillprint"BobandSarahhavethesameage".

Notice you can have as many elifs as you want, just put them insequence.

bob_age=32

sarah_age=32

ifbob_age>sarah_age:

print('BobisolderthanSarah')

elifbob_age<sarah_age:

print('BobisyoungerthanSarah')

elifbob_age==sarah_age:

print('BobandSarahhavethesameage')

else:

print('Thisoneisneverexecuted')

BobandSarahhavethesameage

46

Page 47: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

In thisexample, theelse isneverexecutedbecauseall thepossibilitiesarecoveredinthepreviousconditionsandthuscouldberemoved.

12.3Nestedconditionals

You might need to check more than one conditional for something tohappen.

Inthiscase,youcannestyourifstatements.

Forinstance,thesecondphrase"Bobistheoldest"isprintedonlyifbothifspass.

bob_age=32

sarah_age=28

mary_age=25

ifbob_age>sarah_age:

print('BobisolderthanSarah')

ifbob_age>mary_age:

print('Bobistheoldest')

BobisolderthanSarah

Bobistheoldest

Or,dependingonthelogic,makeitsimplerwithBooleanAlgebra.

Thisway,yourcodeissmaller,morereadableandeasiertomaintain.

bob_age=32

sarah_age=28

mary_age=25

ifbob_age>sarah_ageandbob_age>mary_age:

47

Page 48: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

print('Bobistheoldest')

Bobistheoldest

12.4TernaryOperator

Theternaryoperatorisaone-lineifstatement.

It'sveryhandyforsimpleconditions.

Thisishowitlooks:

<expression>if<condition>else<expression>

ConsiderthefollowingPythoncode:

a=25

b=50

x=0

y=1

result=xifa>belsey

print(result)

1

Hereweusefourvariables,aandbare for thecondition,whilexandyrepresenttheexpressions.

aandbare thevalueswearecheckingagainsteachother toevaluate

48

Page 49: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

somecondition.Inthiscase,wearecheckingifaisgreaterthanb.

Iftheexpressionholdstrue,i.e.,aisgreaterthanbthenthevalueofxwillbeattributedtoresultwhichwillbeequalto0.

However, if a is less than b, then we have the value of y assigned toresult,andresultwillholdthevalue1.

Sinceaislessthanb,25<50,resultwillhave1asfinalvaluefromy.

TheeasywaytorememberhowtheconditionisevaluatedistoreaditinplainEnglish.

Ourexamplewouldread:resultwillbexifaisgreaterthanbotherwisey.

49

Page 50: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

13ListsAspromisedintheTypeschapter,thischapterandthenextthreeaboutTuples, Sets, and Dictionaries will have more in-depth explanations ofeachof themsincetheyarevery importantandbroadlyusedstructuresinPythontoorganizeanddealwithdata.

A list has its items ordered and you can add the same item asmanytimesasyouwant.

Animportantdetailisthatlistsaremutable.

Mutabilitymeansyoucanchangealistafteritscreationbyaddingitems,removingthem,orevenjustchangingtheirvalues.

13.0.1Initialization

13.0.1.1EmptyList

people=[]

13.0.1.2Listwithinitialvalues

people=['Bob','Mary']

50

Page 51: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

13.0.2AddinginaList

Toaddanitemintheendofalist,useappend().

people=['Bob','Mary']

people.append('Sarah')

print(people)

['Bob','Mary','Sarah']

Tospecifythepositionforthenewitem,usetheinsert()method.

people=['Bob','Mary']

people.insert(0,'Sarah')

print(people)

['Sarah','Bob','Mary']

13.0.3UpdatinginaList

Specifythepositionoftheitemtoupdateandsetthenewvalue.

people=['Bob','Mary']

people[1]='Sarah'

print(people)

['Bob','Sarah']

51

Page 52: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

13.0.4DeletinginaList

Usetheremove()methodtodeletetheitemgivenasanargument.

people=['Bob','Mary']

people.remove('Bob')

print(people)

['Mary']

Todeleteeverybody,usetheclear()method.

people=['Bob','Mary']

people.clear()

13.0.5RetrievinginaList

Usetheindextoreferencetheitem.

Rememberthattheindexstartsat0.

Sotoaccesstheseconditemusetheindex1.

people=['Bob','Mary']

print(people[1])

Mary

52

Page 53: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

13.0.6CheckifagivenitemalreadyexistsinaList

people=['Bob','Mary']

if'Bob'inpeople:

print('Bobexists!')

else:

print('ThereisnoBob!')

53

Page 54: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

14TuplesAtupleissimilartoalist:it'sordered,andallowsrepetitionofitems.

Thereisjustonedifference:atupleisimmutable.

Immutability, ifyou remember,meansyoucan'tchangea tupleafter itscreation.Ifyoutrytoaddanitemorupdateone,forinstance,thePythoninterpreterwillshowyouanerror.

14.0.1Initialization

14.0.1.1EmptyTuple

people=()

14.0.1.2Tuplewithinitialvalues

people=('Bob','Mary')

14.0.2AddinginaTuple

Tuplesareimmutable.Thismeansthatifyoutrytoaddanitem,youwillseeanerror.

54

Page 55: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

people=('Bob','Mary')

people[2]='Sarah'

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

TypeError:'tuple'objectdoesnotsupportitemassignment

14.0.3UpdatinginaTuple

Updateanitemwillalsoreturnanerror.

Butthereisatrick:youcanconvertintoalist,changetheitem,andthenconvertitbacktoatuple.

people=('Bob','Mary')

people_list=list(people)

people_list[1]='Sarah'

people=tuple(people_list)

print(people)

('Bob','Sarah')

14.0.4DeletinginaTuple

Forthesamereasonyoucan'taddanitem,youalsocan'tdeleteanitem,sincetheyareimmutable.

14.0.5RetrievinginaTuple

Usetheindextoreferenceanitem.

55

Page 56: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

people=('Bob','Mary')

print(people[1])

Mary

14.0.6CheckifagivenitemalreadyexistsinaTuple

people=('Bob','Mary')

if'Bob'inpeople:

print('Bobexists!')

else:

print('ThereisnoBob!')

56

Page 57: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

15SetsSetsdon'tguaranteetheorderoftheitemsandarenotindexed.

Akeypointwhenusingsets:theydon'tallowrepetitionofanitem.

15.0.1Initialization

15.0.1.1EmptySet

people=set()

15.0.1.2Setwithinitialvalues

people={'Bob','Mary'}

15.0.2AddinginaSet

Usetheadd()methodtoaddoneitem.

people.add('Sarah')

Usetheupdate()methoddoaddmultipleitemsatonce.

57

Page 58: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

people.update(['Carol','Susan'])

Remember, Sets do not allow repetition, so if you add 'Mary' again,nothingchanges.

people={'Bob','Mary'}

people.add('Mary')

print(people)

{'Bob','Mary'}

15.0.3UpdatinginaSet

Itemsinasetarenotmutable.Youhavetoeitheraddordeleteanitem.

15.0.4DeletinginaSet

ToremoveBobfromtheset:

people={'Bob','Mary'}

people.remove('Bob')

print(people)

{'Mary'}

Todeleteeverybody:

58

Page 59: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

people.clear()

15.0.5Checkifagivenitemalreadyexistsinaset

people={'Bob','Mary'}

if'Bob'inpeople:

print('Bobexists!')

else:

print('ThereisnoBob!')

59

Page 60: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

16DictionariesThe dictionary doesn't guarantee the order of the elements and it ismutable.

One important characteristic of dictionaries is that you can set yourcustomizedaccesskeysforeachelement.

16.0.1InitializationofaDictionary

16.0.1.1EmptyDictionary

people={}

16.0.1.2Dictionarywithinitialvalues

people={'Bob':30,'Mary':25}

16.0.2AddinginaDictionary

Ifthekeydoesn'texistyet,itisappendedtothedictionary.

people['Sarah']=32

60

Page 61: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

16.0.3UpdatingaDictionary

Ifthekeyalreadyexists,thevalueisjustupdated.

#Bob'sageis28now

people['Bob']=28

Noticethatthecodeisprettymuchthesame.

16.0.4DeletinginaDictionary

ToremoveBobfromthedictionary:

people.pop('Bob')

Todeleteeverybody:

people.clear()

16.0.5RetrievinginaDictionary

bob_age=people['Bob']

print(bob_age)

30

61

Page 62: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

16.0.6CheckifagivenkeyalreadyexistsinaDictionary

if'Bob'inpeople:

print('Bobexists!')

else:

print('ThereisnoBob!')

62

Page 63: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

17whileLoopsLoops are used when you need to repeat a block of code a certainnumberoftimesorapplythesamelogicovereachiteminacollection.

Therearetwotypesofloops:forandwhile.

Youwilllearnaboutforloopsinthenextchapter.

17.1BasicSyntax

Thebasicsyntaxofawhileloopisasbelow.

whilecondition:

statement

TheloopwillcontinueuntiltheconditionisTrue.

17.2Thesquareofanumberis

The example below takes each value of number and calculates itssquaredvalue.

number=1

whilenumber<=5:

print(number,'squaredis',number**2)

number=number+1

1squaredis1

63

Page 64: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

2squaredis4

3squaredis9

4squaredis16

5squaredis25

You can use any variable name, but I chose number because itmakessenseinthecontext.Acommongenericchoicewouldbesimplyi.

Theloopwillgoonuntilnumber(initializedwith1)islessthanorequalto5.

Notice that after the print() command, the variable number isincrementedby1totakethenextvalue.

If you don't do the incrementation you will have an infinite loop sincenumberwillnever reachavaluegreater than5.This isavery importantdetail!

17.3elseblock

WhentheconditionreturnsFalse,theelseblockwillbecalled.

number=1

whilenumber<=5:

print(number,'squaredis',number**2)

number=number+1

else:

print('Nonumbersleft!')

1squaredis1

2squaredis4

3squaredis9

4squaredis16

5squaredis25

Nonumbersleft!

64

Page 65: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Noticethephrase'Nonumbersleft!'isprintedaftertheloopends,thatisaftertheconditionnumber<=5evaluatestoFalse.

17.4HowtobreakoutofawhileloopinPython?

Simplyusethebreakkeyword,andtheloopwillstopitsexecution.

number=1

whilenumber<=5:

print(number,'squaredis',number**2)

number=number+1

ifnumber==4:

break

1squaredis1

2squaredis4

3squaredis9

The loop runs normally, and when number reaches 4 the if statementevaluatestoTrueandthebreakcommandiscalled.Thisfinishestheloopbeforethesquaredvalueofthenumbers4and5arecalculated.

17.5Howtoskipaniteminawhileloop

Thecontinuewilldothatforyou.

Ihadtoinverttheorderoftheifstatementandtheprint()toshowhowitworksproperly.

number=0

whilenumber<5:

65

Page 66: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

number=number+1

ifnumber==4:

continue

print(number,'squaredis',number**2)

1squaredis1

2squaredis4

3squaredis9

5squaredis25

Theprogramalwayschecksif4isthecurrentvalueofnumber.Ifitis,thesquare of 4 won't be calculated and the continue will skip to the nextiterationwhenthevalueofnumberis5.

66

Page 67: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

18forLoopsfor loops are similar towhile loops in the sense that they are used torepeatblocksofcode.

The most important difference is that you can easily iterate oversequentialtypes.

18.1BasicSyntax

Thebasicsyntaxofaforloopisasbelow.

foritemincollection:

statement

18.2Loopoveralist

Toloopovera listoranyothercollection, justproceedasshownin theexamplebelow.

cars=['BMW','Ferrari','McLaren']

forcarincars:

print(car)

BMW

Ferrari

McLaren

67

Page 68: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Thelistofcarscontainsthreeitems.Theforloopwilliterateoverthelistandstoreeachiteminthecarvariable,andthenexecuteastatement,inthiscaseprint(car),toprinteachcarintheconsole.

18.3range()function

The range function is widely used in for loops because it gives you asimplewaytolistnumbers.

Thiscodewillloopthroughthenumbers0to5andprinteachofthem.

fornumberinrange(5):

print(number)

0

1

2

3

4

Incontrast,withouttherange()function,wewoulddosomethinglikethis.

numbers=[0,1,2,3,4]

fornumberinnumbers:

print(number)

0

1

2

3

4

68

Page 69: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Youcanalsodefineastartandstopusingrange().

Herewearestartingin5andstopingin10.Thenumberyousettostopisnotincluded.

fornumberinrange(5,10):

print(number)

5

6

7

8

9

Finally,itisalsopossibletosetastep.

Herewe starting in 10 and incrementing by 2 until 20, since 20 is thestop,itisnotincluded.

fornumberinrange(10,20,2):

print(number)

10

12

14

16

18

18.4elseblock

Whentheitemsinthelistareover,theelseblockwillbecalled.

69

Page 70: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

cars=['BMW','Ferrari','McLaren']

forcarincars:

print(car)

else:

print('Nocarsleft!')

BMW

Ferrari

McLaren

Nocarsleft!

18.5HowtobreakoutofaforloopinPython

Simplyusethebreakkeyword,andtheloopwillstopitsexecution.

cars=['BMW','Ferrari','McLaren']

forcarincars:

print(car)

ifcar=='Ferrari':

break

BMW

Ferrari

Theloopwilliteratethelistandprinteachcar.

In this case, after the loop reaches 'Ferrari', the break is called and'McLaren'won'tbeprinted.

18.6Howtoskipaniteminaforloop

Inthissection,we'lllearnhowcontinuecandothisforyou.

I had to invert the order of the if statement and the continue to show

70

Page 71: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

howitworksproperly.

Notice that Ialwayscheck if 'Ferrari' is thecurrent item. If it is, 'Ferrari'won'tbeprinted,andthecontinuewillskiptothenextitem'McLaren'.

cars=['BMW','Ferrari','McLaren']

forcarincars:

ifcar=='Ferrari':

continue

print(car)

BMW

McLaren

18.7LoopoveraLoop:NestedLoops

Sometimesyouhavemorecomplexcollections,likealistoflists.

Toiterateovertheselists,youneednestedforloops.

In thiscase, Ihave three lists:oneofBMWmodels,anotheronFerrarimodels,andfinallyonewithMcLarenmodels.

The first loop iteratesovereachbrand's list,and thesecondwill iterateoverthemodelsofeachbrand.

car_models=[

['BMWI8','BMWX3',

'BMWX1'],

['Ferrari812','FerrariF8',

'FerrariGTC4'],

['McLaren570S','McLaren570GT',

'McLaren720S']

]

71

Page 72: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

forbrandincar_models:

formodelinbrand:

print(model)

BMWI8

BMWX3

BMWX1

Ferrari812

FerrariF8

FerrariGTC4

McLaren570S

McLaren570GT

McLaren720S

18.8LoopoverotherDataStructures

Thesamelogicshowntoapplyforloopsoveralistcanbeextendedtotheotherdatastructures:tuple,set,anddictionary.

I will briefly demonstrate how to make a basic loop over each one ofthem.

18.8.1LoopoveraTuple

people=('Bob','Mary')

forpersoninpeople:

print(person)

Bob

Mary

18.8.2LoopoveraSet

72

Page 73: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

people={'Bob','Mary'}

forpersoninpeople:

print(person)

Bob

Mary

18.8.3LoopoveraDictionary

Toprintthekeys:

people={'Bob':30,'Mary':25}

forpersoninpeople:

print(person)

Bob

Mary

Toprintthevalues:

people={'Bob':30,'Mary':25}

forpersoninpeople:

print(people[person])

30

25

73

Page 74: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

19FunctionsAs the code grows the complexity also grows. And functions helporganizethecode.

Functionsareahandywaytocreateblocksofcodethatyoucanreuse.

19.1DefinitionandCalling

InPythonusethedefkeywordtodefineafunction.

Giveitanameanduseparenthesestoinform0ormorearguments.

In the line after the declaration starts, remember to indent the block ofcode.

Hereisanexampleofafunctioncalledprint_first_function()thatonlyprintsaphrase'Myfirstfunction!'.

Tocallthefunctionjustuseitsnameasdefined.

defprint_first_function():

print('Myfirstfunction!')

print_first_function()

Myfirstfunction!

19.2returnavalue

74

Page 75: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Usethereturnkeywordtoreturnavaluefromthefunction.

In this example the function second_function() returns the string 'Mysecondfunction!'.

Notice thatprint() is a built-in functionandour function is called frominsideit.

Thestring returnedbysecond_function() ispassedasargument to theprint()function.

defsecond_function():

return'Mysecondfunction!'

print(second_function())

Mysecondfunction!

19.3returnmultiplevalues

Functionscanalsoreturnmultiplevaluesatonce.

return_numbers()returnstwovaluessimultaneously.

defreturn_numbers():

return10,2

print(return_numbers())

(10,2)

75

Page 76: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

19.4Arguments

Youcandefineparametersbetweentheparentheses.

When calling a function with parameters you have to pass argumentsaccordingtotheparametersdefined.

The past examples had no parameters, so there was no need forarguments. The parentheses remained emptywhen the functionswerecalled.

19.4.1OneArgument

Tospecifyoneparameter,justdefineitinsidetheparentheses.

Inthisexample,thefunctionmy_numberexpectsonenumberasargumentdefinedbytheparameternum.

The value of the argument is then accessible inside the function to beused.

defmy_number(num):

return'Mynumberis:'+str(num)

print(my_number(10))

Mynumberis:10

19.4.2TwoormoreArguments

76

Page 77: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Todefinemoreparameters,justuseacommatoseparatethem.

Herewehaveafunctionthataddstwonumberscalledadd,itexpectstwoargumentsdefinedbyfirst_numandsecond_num.

The arguments are added by the + operator and the result is thenreturnedbythereturn.

defadd(first_num,second_num):

returnfirst_num+second_num

print(add(10,2))

12

Thisexampleisverysimilartothelastone.Theonlydifferenceisthatwehave3parametersinsteadof2.

defadd(first_num,second_num,third_num):

returnfirst_num+second_num+third_num

print(add(10,2,3))

15

Thislogicofdefiningparametersandpassingargumentsisthesameforanynumberofparameters.

It is important topointout that theargumentshave tobepassed in thesameorderthattheparametersaredefined.

77

Page 78: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

19.4.3Defaultvalue.

Youcansetadefaultvalueforaparameterifnoargumentisgivenusingthe=operatorandavalueofchoice.

Inthisfunction,ifnoargumentisgiven,thenumber30isassumedastheexpectedvaluebydefault.

defmy_number(my_number=30):

return'Mynumberis:'+str(my_number)

print(my_number(10))

print(my_number())

Mynumberis:10

Mynumberis:30

19.4.4KeywordorNamedArguments

Whencallinga function, theorderof theargumentshave tomatch theorderoftheparameters.

Thealternativeisifyouusekeywordornamedarguments.

Settheargumentstotheirrespectiveparametersdirectlyusingthenameoftheparametersandthe=operators.

This example flips the arguments, but the function works as expectedbecauseItellwhichvaluegoestowhichparameterbyname.

78

Page 79: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

defmy_numbers(first_number,second_number):

return'Thenumbersare:'+str(first_number)+'and'+str(second_number)

print(my_numbers(second_number=30,first_number=10))

Thenumbersare:10and30

19.4.5Anynumberofarguments:*args

If you don't want to specify the number of parameters, just use the *before the parameter name. Then the function will take as manyargumentsasnecessary.

The parameter name could be anything like *numbers, but there is aconventioninPythontouse*argsforthisdefinitionofavariablenumberofarguments.

defmy_numbers(*args):

forarginargs:

print(arg)

my_numbers(10,2,3)

10

2

3

19.4.6AnynumberofKeyword/Namedarguments:**kwargs

Similar to *args, we can use **kwargs to pass as many keyword

79

Page 80: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

argumentsaswewant,aslongasweuse**.

Again, the name could be anything like **numbers, but **kwargs is aconvention.

defmy_numbers(**kwargs):

forkey,valueinkwargs.items():

print(key)

print(value)

my_numbers(first_number=30,second_number=10)

first_number

30

second_number

10

19.4.7Othertypesasarguments

Thepastexamplesusedmainlynumbers,butyoucanpassanytypeasargumentandtheywillbetreatedassuchinsidethefunction.

Thisexampleistakingstringsasarguments.

defmy_sport(sport):

print('Ilike'+sport)

my_sport('football')

my_sport('swimming')

Ilikefootball

Ilikeswimming

80

Page 81: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Thisfunctiontakesalistasargument.

defmy_numbers(numbers):

fornumberinnumbers:

print(number)

my_numbers([30,10,64,92,105])

30

10

64

92

105

81

Page 82: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

20ScopeThe place where a variable is created defines its availability to beaccessed and manipulated by the rest of the code. This is known asscope.

Therearetwotypesofscope:localandglobal.

20.1GlobalScope

Aglobalscopeallowsyoutousethevariableanywhereinyourprogram.

Ifyourvariableisoutsideafunction,ithasglobalscopebydefault.

name='Bob'

defprint_name():

print('Mynameis'+name)

print_name()

MynameisBob

NoticethatthefunctioncouldusethevariablenameandprintMynameisBob.

20.2LocalScope

Whenyoudeclareavariable insidea function, it onlyexists inside that

82

Page 83: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

functionandcan'tbeaccessedfromtheoutside.

defprint_name():

name="Bob"

print('Mynameis'+name)

print_name()

MynameisBob

The variable name was declared inside the function, the output is thesameasbefore.

Butthiswillthrowanerror:

defprint_name():

name='Bob'

print('Mynameis'+name)

print(name)

Theoutputofthecodeaboveis:

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

NameError:name'name'isnotdefined

Itriedtoprintthevariablenamefromoutsidethefunction,butthescopeofthevariablewaslocalandcouldnotbefoundinaglobalscope.

20.3MixingScopes

83

Page 84: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Ifyouusethesamenameforvariablesinsideandoutsideafunction,thefunctionwillusetheoneinsideitsscope.

So when you call print_name(), the name='Bob' is used to print thephrase.

On the other hand, when calling print() outside the function scope,name="Sarah"isusedbecauseofitsglobalscope.

name="Sarah"

defprint_name():

name='Bob'

print('Mynameis'+name)

print_name()

print(name)

Theoutputofthecodeaboveis:

MynameisBob

Sarah

84

Page 85: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

21ListComprehensionsSometimes we want to perform some very simple operations over theitemsofalist.

List comprehensions give us a succinct way to work on lists as analternativetoothermethodsofiteration,suchasforloops.

21.1Basicsyntax

Tousealistcomprehensiontoreplacearegularforloop,wecanmake:

[expressionforiteminlist]

Whichisthesameasdoing:

foriteminlist:

expression

Ifwewantsomeconditionaltoapplytheexpression,wehave:

[expressionforiteminlistifconditional]

Whichisthesameasdoing:

foriteminlist:

85

Page 86: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

ifconditional:

expression

21.2Example1:calculatingthecubeofanumber

Regularway

numbers=[1,2,3,4,5]

new_list=[]

forninnumbers:

new_list.append(n**3)

print(new_list)

[1,8,27,64,125]

Usinglistcomprehensions

numbers=[1,2,3,4,5]

new_list=[]

new_list=[n**3forninnumbers]

print(new_list)

[1,8,27,64,125]

21.3Example2:calculatingthecubeofanumberonlyifitisgreaterthan3

86

Page 87: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Using the conditional, we can filter only the values we want theexpressiontobeappliedto.

Regularway

numbers=[1,2,3,4,5]

new_list=[]

forninnumbers:

if(n>3):

new_list.append(n**3)

print(new_list)

[64,125]

Usinglistcomprehensions

numbers=[1,2,3,4,5]

new_list=[]

new_list=[n**3forninnumbersifn>3]

print(new_list)

[64,125]

21.4Example3:callingfunctionswithlistcomprehensions

Wecanalsocallfunctionsusingthelistcomprehensionsyntax:

87

Page 88: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

numbers=[1,2,3,4,5]

new_list=[]

defcube(number):

returnnumber**3

new_list=[cube(n)forninnumbersifn>3]

print(new_list)

[64,125]

88

Page 89: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

22LambdaFunctionsAPythonlambdafunctioncanonlyhaveoneexpressionandcan'thavemultiplelines.

It is supposed tomake it easier to create some small logic in one lineinsteadofawholefunctionasitisusuallydone.

Lambdafunctionsarealsoanonymous,whichmeansthereisnoneedtonamethem.

22.1BasicSyntax

Thebasicsyntaxisverysimple:justusethelambdakeyword,definetheparameters needed, use ":" to separate the parameters from theexpression.

Thegeneralformis:

lambdaarguments:expression

22.1.1Oneparameterexample

Lookatthisexampleusingonlyoneparameter.

cubic=lambdanumber:number**3

print(cubic(2))

89

Page 90: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

8

22.1.2Multipleparameterexample

Ifyouwant,youcanalsohavemultipleparameters.

exponential=lambdamultiplier,number,exponent:multiplier*number**exponent

print(exponential(2,2,3))

16

22.1.3CallingtheLambdaFunctiondirectly

Youdon'tneedtouseavariableaswedidbefore,youcanmakeuseofparenthesisaroundthe lambdafunctionandanotherpairofparenthesisaroundthearguments.

Thedeclarationofthefunctionandtheexecutionwillhappeninthesameline.

(lambdamultiplier,number,exponent:multiplier*number**exponent)(2,2,3)

16

22.2Examplesusinglambdafunctionswithotherbuilt-infunctions

90

Page 91: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

22.2.1Map

TheMapfunctionappliestheexpressiontoeachiteminalist.

Let'scalculatethecubicofeachnumberinthelist.

numbers=[2,5,10]

cubics=list(map(lambdanumber:number**3,numbers))

print(cubics)

[8,125,1000]

22.2.2Filter

TheFilterfunctionwillfilterthelistbasedontheexpression.

Let'sfiltertohaveonlythenumbersgreaterthan5.

numbers=[2,5,10]

filtered_list=list(filter(lambdanumber:number>5,numbers))

print(filtered_list)

[10]

91

Page 92: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

23ModulesAfter some time your code starts to get more complex with lots offunctionsandvariables.

TomakeiteasiertoorganizethecodeweuseModules.

A well-designedModule also has the advantage of being reusable, soyouwritecodeonceandreuseiteverywhere.

Youcanwriteamodulewithall themathematicaloperationsandotherpeoplecanuseit.

And, ifyouneed,youcanusesomeoneelse'smodulestosimplifyyourcode,speedingupyourproject.

Inotherprogramminglanguages,thesearealsoreferredtoaslibraries.

23.1UsingaModule

Touseamoduleweusetheimportkeyword.

Asthenameimplieswehavetotellourprogramwhatmoduletoimport.

Afterthat,wecanuseanyfunctionavailableinthatmodule.

Let'sseeanexampleusingthemathmodule.

First,let'sseehowtohaveaccesstoaconstant,Euler'snumber.

92

Page 93: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

importmath

math.e

2.718281828459045

Inthissecondexample,wearegoingtouseafunctionthatcalculatesthesquarerootofanumber.

Itisalsopossibletousetheaskeywordtocreateanalias.

importmathasm

m.sqrt(121)

m.sqrt(729)

11

27

Finally, using the from keyword, we can specify exactly what to importinstead of the whole module and use the function directly without themodule'sname.

This example uses the floor() function that returns the largest integerlessthanorequaltoagivennumber.

frommathimportfloor

floor(9.8923)

93

Page 94: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

9

23.2CreatingaModule

Nowthatweknowhowtousemodules,let'sseehowtocreateone.

It isgoingtobeamodulewiththebasicmathoperationsadd,subtract,multiply,divideanditisgonnabecalledbasic_operations.

Createthebasic_operations.pyfilewiththefourfunctions.

defadd(first_num,second_num):

returnfirst_num+second_num

defsubtract(first_num,second_num):

returnfirst_num-second_num

defmultiply(first_num,second_num):

returnfirst_num*second_num

defdivide(first_num,second_num):

returnfirst_num/second_num

Then,justimportthebasic_operationsmoduleandusethefunctions.

importbasic_operations

basic_operations.add(10,2)

basic_operations.subtract(10,2)

basic_operations.multiply(10,2)

basic_operations.divide(10,2)

12

8

20

5.0

94

Page 95: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

24if__name__=='__main__'You are on the process of building a module with the basic mathoperationsadd,subtract,multiply,dividecalledbasic_operationssavedinthebasic_operations.pyfile.

Toguaranteeeverythingisfine,youcanrunsometests.

defadd(first_num,second_num):

returnfirst_num+second_num

defsubtract(first_num,second_num):

returnfirst_num-second_num

defmultiply(first_num,second_num):

returnfirst_num*second_num

defdivide(first_num,second_num):

returnfirst_num/second_num

print(add(10,2))

print(subtract(10,2))

print(multiply(10,2))

print(divide(10,2))

Afterrunningthecode:

renan@pro-home:~$python3basic_operations.py

Theoutputis:

12

8

20

5.0

95

Page 96: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Theoutputforthosetestsarewhatweexpected.

Ourcodeisrightandreadytoshare.

Let'simportthenewmoduleandrunitinthePythonconsole.

Python3.6.9(default,Nov72019,10:44:02)

[GCC8.3.0]onlinux

Type"help","copyright","credits"or"license"formoreinformation.

>>>importbasic_operations

12

8

20

5.0

>>>

Whenthemoduleisimportedourtestsaredisplayedonthescreeneventhoughwedidn'tdoanythingbesidesimportingbasic_operations.

Tofixthatweuseif__name__=='__main__'inthebasic_operations.pyfilelikethis:

defadd(first_num,second_num):

returnfirst_num+second_num

defsubtract(first_num,second_num):

returnfirst_num-second_num

defmultiply(first_num,second_num):

returnfirst_num*second_num

defdivide(first_num,second_num):

returnfirst_num/second_num

if__name__=='__main__':

print(add(10,2))

print(subtract(10,2))

print(multiply(10,2))

96

Page 97: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

print(divide(10,2))

Running the code directly on the terminal will continue to display thetests.Butwhenyouimportitlikeamodule,thetestswon'tshowandyoucanusethefunctionsthewayyouintended.

Python3.6.9(default,Nov72019,10:44:02)

[GCC8.3.0]onlinux

Type"help","copyright","credits"or"license"formoreinformation.

>>>importbasic_operations

>>>basic_operations.multiply(10,2)

20

>>>

Now that you know how to use the if __name__ == '__main__', let'sunderstandhowitworks.

Theconditiontellswhentheinterpreteristreatingthecodeasamoduleorasaprogramitselfbeingexecuteddirectly.

Pythonhasthisnativevariablecalled__name__.

Thisvariablerepresentsthenameofthemodulewhichisthenameofthe.pyfile.

Createafilemy_program.pywiththefollowingandexecuteit.

print(__name__)

Theoutputwillbe:

97

Page 98: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

__main__

This tells us that when a program is executed directly, the variable__name__isdefinedas__main__.

Butwhenitisimportedasamodule,thevalueof__name__isthenameofthemodule.

Python3.6.9(default,Nov72019,10:44:02)

[GCC8.3.0]onlinux

Type"help","copyright","credits"or"license"formoreinformation.

>>>importmy_program

my_program

>>>

This is how the Python interpreter differentiates the behavior of animportedmoduleandaprogramexecuteddirectlyintheterminal.

98

Page 99: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

25FilesCreating,deleting,reading,andmanyotherfunctionsappliedtofilesareanintegralpartofmanyprograms.

Assuch,itisveryimportanttoknowhowtoorganizeanddealwithfilesdirectlyfromyourcode.

Let'sseehowtohandlefilesinPython.

25.1Filecreate

Firstthingsfirst,create!

Wearegoingtousetheopen()function.

Thisfunctionopensafileandreturnsitscorrespondingobject.

The first argument is the nameof the fileweare handling, the secondreferstotheoperationweareusing.

Thecodebelowcreatesthefile"people.txt",thexargumentisusedwhenwejustwanttocreatethefile.Ifafilewiththesamenamealreadyexists,itwillthrowanexception.

people_file=open("people.txt","x")

Youcanalsowethewmodetocreateafile.Unlikethexmode,itwillnot

99

Page 100: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

throwanexceptionsince thismode indicates thewritingmode.Weareopeningafiletowritedataintoitand,ifthefiledoesn'texist,itiscreated.

people_file=open("people.txt","w")

The last one is the a mode which stands for append. As the nameimplies,youcanappendmoredata to the file,while thewmodesimplyoverwritesanyexistingdata.

Whenappending,ifthefiledoesn'texist,italsocreatesit.

people_file=open("people.txt","a")

25.2Filewrite

Towritedataintoafile,yousimplyopenafilewiththewmode.

Then,toadddata,youusetheobjectreturnedbytheopen()function,inthiscase, theobject iscalledpeople_file.Thencall thewrite() functionpassingthedataasargument.

people_file=open("people.txt","w")

people_file.write("Bob\n")

people_file.write("Mary\n")

people_file.write("Sarah\n")

people_file.close()

Weuse\nat theendtobreakthe line,otherwisethecontent in thefile

100

Page 101: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

willstayinthesamelineas"BobMarySarah".

Onemoredetailistoclose()thefile.Thisisnotonlyagoodpractice,butalsoensuresthatyourchangeswereappliedtothefile.

Rememberthatwhenusingwmode,thedatathatalreadyexistedinthefilewillbeoverwrittenby thenewdata.Toaddnewdatawithout losingwhatwasalreadythere,wehavetousetheappendmode.

25.3Fileappend

Theamodeappendsnewdatatothefile,keepingtheexistingone.

In this example, after the first writingwith wmode, we are using the amodetoappend.Theresultisthateachnamewillappeartwiceinthefile"people.txt".

#firstwrite

people_file=open("people.txt","w")

people_file.write("Bob\n")

people_file.write("Mary\n")

people_file.write("Sarah\n")

people_file.close()

#appendingmoredata

#keepingtheexistingdata

people_file=open("people.txt","a")

people_file.write("Bob\n")

people_file.write("Mary\n")

people_file.write("Sarah\n")

people_file.close()

25.4Fileread

101

Page 102: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Readingthefileisalsoverystraightforward:justusethermodelikeso.

If you read the "people.txt" file created in the last example, you shouldsee6namesinyouroutput.

people_file=open("people.txt","r")

print(people_file.read())

Bob

Mary

Sarah

Bob

Mary

Sarah

Theread()functionreadsthewholefileatonceifyouusethereadline()function,youcanreadthefilelinebyline.

people_file=open("people.txt","r")

print(people_file.readline())

print(people_file.readline())

print(people_file.readline())

Bob

Mary

Sarah

Youcanalsoalooptoreadthelinesliketheexamplebelow.

people_file=open("people.txt","r")

forpersoninpeople_file:

print(person)

102

Page 103: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Bob

Mary

Sarah

Bob

Mary

Sarah

25.5DeleteaFile

Todeleteafile,youalsoneedtheosmodule.

Usetheremove()method.

importos

os.remove('my_file.txt')

25.6CheckifaFileExists

Usetheos.path.exists()methodtochecktheexistenceofafile.

importos

ifos.path.exists('my_file.txt'):

os.remove('my_file.txt')

else:

print('Thereisnosuchfile!')

25.7CopyaFile

Forthisone,Iliketousethecopyfile()methodfromtheshutilmodule.

fromshutilimportcopyfile

103

Page 104: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

copyfile('my_file.txt','another_file.txt')

Thereareafewoptionstocopyafile,butcopyfile()isthefastestone.

25.8RenameandMoveaFile

Ifyouneedtomoveorrenameafileyoucanusethemove()methodfromtheshutilmodule.

fromshutilimportmove

move('my_file.txt','another_file.txt')

104

Page 105: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

26ClassesandObjectsClasses and Objects are the fundamental concepts of Object-OrientedProgramming.

InPython,everythingisanobject!

Avariable(object)isjustaninstanceofitstype(class).

That'swhywhenyoucheckthetypeofavariableyoucanseetheclasskeywordrightnexttoitstype(class).

Thiscodesnippetshowsthatmy_cityisanobjectanditisaninstanceoftheclassstr.

my_city="NewYork"

print(type(my_city))

<class'str'>

26.1DifferentiateClassxObject

Theclassgivesyouastandardway tocreateobjects.Aclass is likeabaseproject.

SayyouareanengineerworkingforBoeing.

Your newmission is to build the new product for the company, a new

105

Page 106: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

model called 747-Space. This aircraft flies higher altitudes than othercommercialmodels.

Boeingneedstobuilddozensofthosetoselltoairlinesallovertheworld,andtheaircraftshavetobeallthesame.

Toguaranteethat theaircrafts(objects) followthesamestandards,youneedtohaveaproject(class)thatcanbereplicable.

Theclassisaproject,ablueprintforanobject.

Thiswayyoumaketheprojectonce,andreuseitmanytimes.

In our code example before, consider that every string has the samebehaviorand thesameattributes.So itonlymakessense forstrings tohaveaclassstrtodefinethem.

26.2AttributesandMethods

Objectshavesomebehaviorwhichisisgivenbyattributesandmethods.

Insimpleterms, in thecontextofanobject,attributesarevariablesandmethodsarefunctionsattachedtoanobject.

Forexample,astringhasmanybuilt-inmethodsthatwecanuse.

Theyworklikefunctions,youjustneedtothemfromtheobjectsusinga..

In this code snippet, I'm calling the replace() method from the string

106

Page 107: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

variablemy_citywhichisanobject,andaninstanceoftheclassstr.

The replace() method replaces a part of the string for another andreturns a new string with the change. The original string remains thesame.

Let'sreplace'New'for'Old'in'NewYork'.

my_city='NewYork'

print(my_city.replace('New','Old'))

print(my_city)

OldYork

NewYork

26.3CreatingaClass

Wehaveusedmanyobjects(instancesofclasses)likestrings,integers,lists,anddictionaries.AllofthemareinstancesofpredefinedclassesinPython.

Tocreateourownclassesweusetheclasskeyword.

Byconvention, thenameof theclassmatches thenameof the.py fileand themodulebyconsequence. It isalsoagoodpractice toorganizethecode.

Createafilevehicle.pywiththefollowingclassVehicle.

classVehicle:

107

Page 108: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

def__init__(self,year,model,plate_number,current_speed=0):

self.year=year

self.model=model

self.plate_number=plate_number

self.current_speed=current_speed

defmove(self):

self.current_speed+=1

defaccelerate(self,value):

self.current_speed+=value

defstop(self):

self.current_speed=0

defvehicle_details(self):

returnself.model+','+str(self.year)+','+self.plate_number

Let'sbreakdowntheclasstoexplainitinparts.

TheclasskeywordisusedtospecifythenameoftheclassVehicle.

The __init__ function is a built-in function that all classes have, it iscalled when an object is created and is often used to initialize theattributes,assigningvaluestothem,similartowhatisdonetovariables.

The first parameter self in the __init__ function is a reference to theobject(instance)itself.Wecallitselfbyconventionandithastobethefirst parameter in every instancemethod, as you can see in the othermethod definitions def move(self), def accelerate(self, value), defstop(self),anddefvehicle_details(self).

Vehiclehas4attributes:year,model,plate_number,andcurrent_speed.

Inside the__init__,eachoneof them is initializedwith theparametersgivenwhentheobjectisinstantiated.

108

Page 109: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Notice thatcurrent_speed is initializedwith0bydefault,meaning that ifnovalueisgiven,current_speedwillbeequalto0whentheobjectisfirstinstantiated.

Finally,we have threemethods tomanipulate our vehicle regarding itsspeed:defmove(self),defaccelerate(self,value),defstop(self).

And one method to give back information about the vehicle: defvehicle_details(self).

The implementation inside the methods work the same way as infunctions.Youcanalsohaveareturntogiveyoubacksomevalueattheendofthemethodasdemonstratedbydefvehicle_details(self).

26.4UsingtheClass

Use the classona terminal, import theVehicle class from thevehiclemodule.

Create an instance calledmy_car, initializingyearwith 2009,modelwith'F8',plate_numberwith'ABC1234',andcurrent_speedwith100.

Theselfparameterisnottakenintoconsiderationwhencallingmethods.The Python interpreter infers its value as being the currentobject/instance automatically, so we just have to pass the otherargumentswheninstantiatingandcallingmethods.

Nowusethemethodstomove()thecarwhichincreasesitscurrent_speedby 1, accelerate(10) which increases its current_speed by the value

109

Page 110: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

givenintheargument,andstop()whichsetsthecurrent_speedto0.

Remembertoprintthevalueofcurrent_speedateverycommandtoseethechanges.

To finish the test, call vehicle_details() to print the information aboutourvehicle.

>>>fromvehicleimportVehicle

>>>

>>>my_car=Vehicle(2009,'F8','ABC1234',100)

>>>print(my_car.current_speed)

100

>>>my_car.move()

>>>print(my_car.current_speed)

101

>>>my_car.accelerate(10)

>>>print(my_car.current_speed)

111

>>>my_car.stop()

>>>print(my_car.current_speed)

0

>>>print(my_car.vehicle_details())

F8,2009,ABC1234

Ifwedon'tsettheinitialvalueforcurrent_speed,itwillbezerobydefaultasstatedbeforeanddemonstratedinthenextexample.

>>>fromvehicleimportVehicle

>>>

>>>my_car=Vehicle(2009,'F8','ABC1234')

>>>print(my_car.current_speed)

0

>>>my_car.move()

>>>print(my_car.current_speed)

1

>>>my_car.accelerate(10)

>>>print(my_car.current_speed)

11

>>>my_car.stop()

110

Page 111: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

>>>print(my_car.current_speed)

0

>>>print(my_car.vehicle_details())

F8,2009,ABC1234

111

Page 112: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

27InheritanceLet'sdefineagenericVehicleclassandsaveitinsidethevehicle.pyfile.

classVehicle:

def__init__(self,year,model,plate_number,current_speed):

self.year=year

self.model=model

self.plate_number=plate_number

self.current_speed=current_speed

defmove(self):

self.current_speed+=1

defaccelerate(self,value):

self.current_speed+=value

defstop(self):

self.current_speed=0

defvehicle_details(self):

returnself.model+','+str(self.year)+','+self.plate_number

Avehiclehasattributesyear,model,plate_number,andcurrent_speed.

Thedefinitionofvehicle intheVehicle isverygenericandmightnotbesuitablefortrucksforinstancebecauseitshouldincludeacargoattribute.

Ontheotherhand,acargoattributedoesnotmakemuchsenseforsmallvehicleslikemotorcycles.

Tosolvethiswecanuseinheritance.

Whenaclass(child)inheritsanotherclass(parent),alltheattributesandmethodsfromtoparentclassareinheritedbythechildclass.

112

Page 113: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

27.1ParentandChild

In our case, we want a new Truck class to inherit everything from theVehicle class. Then we want it to add its own specific attributecurrent_cargotocontroltheadditionandremovalofcargofromthetruck.

TheTruckclass iscalledachildclassthat inherits fromitsparentclassVehicle.

A parent class is also called a superclass while a child class is alsoknownasasubclass.

CreatetheclassTruckandsaveitinsidethetruck.pyfile.

fromvehicleimportVehicle

classTruck(Vehicle):

def__init__(self,year,model,plate_number,current_speed,current_cargo):

super().__init__(year,model,plate_number,current_speed)

self.current_cargo=current_cargo

defadd_cargo(self,cargo):

self.current_cargo+=cargo

defremove_cargo(self,cargo):

self.current_cargo-=cargo

Let'sbreakdowntheclasstoexplainitinparts.

TheclassVehicle insidetheparentheseswhendefiningtheclassTruckindicatesthattheparentVehicleisbeinginheritedbyitschildTruck.

The__init__methodhasselfasitsfirstparameter,asusual.

113

Page 114: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Theparametersyear,model,plate_number,andcurrent_speedare theretomatchtheonesintheVehicleclass.

Weaddedanewparametercurrent_cargosuitedfortheTruckclass.

Inthefirstlineofthe__init__methodoftheTruckclasswehavetocallthe__init__methodoftheVehicleclass.

To do that we use super() to make a reference to the supperclassVehicle, so when super().__init__(year, model, plate_number,

current_speed)iscalledweavoidrepetitionofourcode.

Afterthat,wecanassignthevalueofcurrent_cargonormally.

Finally, we have two methods to deal with the current_cargo: defadd_cargo(self,cargo):,anddefremove_cargo(self,cargo):.

Remember that Truck inherits attributes andmethods from Vehicle, sowe also have an implicit access to the methods that manipulate thespeed:defmove(self),defaccelerate(self,value),defstop(self).

27.2UsingtheTruckclass

Use the class in your terminal, import the Truck class from the truckmodule.

Createaninstancecalledmy_truck,initializingyearwith2015,modelwith'V8', plate_number with 'XYZ1234', current_speed with 0, andcurrent_cargowith0.

114

Page 115: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Useadd_cargo(10) toincreasecurrent_cargoby10,remove_cargo(4), todecreasecurrent_cargoby4.

Remembertoprintthevalueofcurrent_cargoateverycommandtoseethechanges.

Byinheritance,wecanusethemethodsfromtheVehicleclasstomove()the truckwhich increases itscurrent_speed by1,accelerate(10)whichincreases its current_speed by the value given in the argument, andstop()whichsetsthecurrent_speedto0.

Remembertoprintthevalueofcurrent_speedateveryinteractiontoseethechanges.

Tofinishthetest,callvehicle_details()inheritedfromtheVehicleclasstoprinttheinformationaboutourtruck.

>>>fromtruckimportTruck

>>>

>>>my_truck=Truck(2015,'V8','XYZ1234',0,0)

>>>print(my_truck.current_cargo)

0

>>>my_truck.add_cargo(10)

>>>print(my_truck.current_cargo)

10

>>>my_truck.remove_cargo(4)

>>>print(my_truck.current_cargo)

6

>>>print(my_truck.current_speed)

0

>>>my_truck.accelerate(10)

>>>print(my_truck.current_speed)

10

>>>my_truck.stop()

>>>print(my_truck.current_speed)

0

>>>print(my_truck.vehicle_details())

V8,2015,XYZ1234

115

Page 116: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

116

Page 117: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

28ExceptionsErrors are a part of every programmer's life, and knowing how to dealwiththemisaskillonitsown.

ThewayPythondealswitherrorsiscalled'ExceptionHandling'.

Ifsomepieceofcoderunsintoanerror,thePythoninterpreterwillraiseanexception.

28.1TypesofExceptions

Let's try to raise some exceptions on purpose and see the errors theyproduce.

TypeError

First,trytoaddastringandaninteger:

'Iamastring'+32

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

TypeError:mustbestr,notint

IndexError

Now,trytoaccessanindexthatdoesn'texistinalist.

117

Page 118: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Acommonmistake is to forget thatsequencesare0-indexed,meaningthefirstitemhasindex0,not1.

Inthisexample,thelistcar_brandsendsatindex2.

car_brands=['ford','ferrari','bmw']

print(car_brands[3])

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

IndexError:listindexoutofrange

NameError

Ifwetrytoprintavariablethatdoesn'texist.

print(my_variable)

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

NameError:name'my_variable'isnotdefined

ZeroDivisionError

Mathdoesn'tallowdivisionbyzero,tryingtodosowillraiseanerror,asexpected.

32/0

118

Page 119: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Traceback(mostrecentcalllast):

File"<stdin>",line1,in<module>

ZeroDivisionError:divisionbyzero

Thiswasjustasampleofthekindsofexceptionsyoumightseeonyourdailyroutineandwhatcancauseeachofthem.

28.2ExceptionHandling

Nowweknowhowtocauseerrorsthatwillcrashourcodeandshowsussomemessagesayingsomethingiswrong.

Tohandletheseexceptionsjustmakeuseofthetry/exceptstatement.

try:

32/0

except:

print('Dividingbyzero!')

Dividingbyzero!

Theexampleaboveshowstheuseofthetrystatement.

Puttheblockofcodethatmaycauseanexceptioninsidethetryscope.If everything runs alright, the except block is not invoked. But if anexceptionisraised,theblockofcodeinsidetheexceptisexecuted.

Thiswaytheprogramdoesn'tcrashandifyouhavesomecodeaftertheexception,itwillkeeprunningifyouwantto.

28.3SpecificExceptionHandling

119

Page 120: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

In the last example the except block was generic, meaning it wascatchinganything.

Goodpractice it tospecify the typeofexceptionweare trying tocatch,whichhelpsalotwhendebuggingthecodelater.

If you know a block of code can throw an IndexError, specify it in theexcept:

try:

car_brands=['ford','ferrari','bmw']

print(car_brands[3])

exceptIndexError:

print('Thereisnosuchindex!')

Thereisnosuchindex!

Youcanuseatupletospecifyasmanyexceptionstypesasyouwantinasingleexcept:

try:

print('Mycode!')

except(IndexError,ZeroDivisionError,TypeError):

print('MyExcepetion!')

28.4else

It is possible to addanelse commandat the endof thetry/except. Itrunsonlyiftherearenoexceptions.

120

Page 121: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

my_variable='Myvariable'

try:

print(my_variable)

exceptNameError:

print('NameErrorcaught!')

else:

print('NoNameError')

Myvariable

NoNameError

28.5RaisingExceptions

Theraisecommandallowsyoutomanuallyraiseanexception.

This is particularly useful if you want to catch an exception and dosomethingwith it -- like logging theerror insomepersonalizedway likeredirecting it to a log aggregator, or ending the execution of the codesincetheerrorshouldnotallowtheprogressoftheprogram.

try:

raiseIndexError('Thisindexisnotallowed')

except:

print('Doingsomethingwiththeexception!')

raise

Doingsomethingwiththeexception!

Traceback(mostrecentcalllast):

File"<stdin>",line2,in<module>

IndexError:Thisindexisnotallowed

28.6finally

121

Page 122: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

Thefinallyblock isexecutedindependentlyofexceptionsbeingraisedornot.

Theyareusually there to allow theprogram to cleanup resources likefiles,memory,networkconnections,etc.

try:

print(my_variable)

exceptNameError:

print('Exceptblock')

finally:

print('Finallyblock')

Exceptblock

Finallyblock

122

Page 123: The Python Guide for Beginners...1 Preface Python has become one of the fastest-growing programming languages over the past few years. Not only it is widely used, it is also an awesome

29ConclusionThat'sit!

Congratulationsonreachingtheend.

Iwanttothankyouforreadingthisbook.

Ifyouwanttolearnmore,checkoutmyblogrenanmf.com.

Let me know if you have any suggestions by reaching out to me [email protected].

Youcanalsofindmeas@renanmourafon:

Twitter:https://twitter.com/renanmourafLinkedin:https://www.linkedin.com/in/renanmourafInstagram:https://www.instagram.com/renanmouraf

123