\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{dmyers891258} \pdfinfo{ /Title (intro-to-python-programming-for-arcgis.pdf) /Creator (Cheatography) /Author (dmyers891258) /Subject (Intro to Python Programming for ArcGIS Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{E8BE15} \definecolor{LightBackground}{HTML}{FDFAF0} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Intro to Python Programming for ArcGIS Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{dmyers891258} via \textcolor{DarkBackground}{\uline{cheatography.com/56562/cs/14980/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}dmyers891258 \\ \uline{cheatography.com/dmyers891258} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 6th March, 2018.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{1.09494 cm} x{3.88206 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Python Data Types - Storage Types}} \tn % Row 0 \SetRowColor{LightBackground} Integer & -100, 100 \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Float & -100.123, 100e-10 \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} String & "Hello, World" \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} Boolean & True, False \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} List & {[}1,2,3, you, and, me{]} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} Tuple & (peter, 1, paul, 2, and, mary, 3)\textasciicircum{}1\textasciicircum{} \tn % Row Count 7 (+ 2) % Row 6 \SetRowColor{LightBackground} \seqsplit{Dictionary} & \{key, value, ...\} \tn % Row Count 9 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{\textasciicircum{}1\textasciicircum{} Parenthesis optional in Python 2, required in 3} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.04057 cm} x{2.93643 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Data Types Questions}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{How do they function?} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Do they operate in sequence? & Lists, Tuples, and Strings are sequences. Can be combined, queried, indexed, and sliced. \tn % Row Count 5 (+ 4) % Row 2 \SetRowColor{LightBackground} Are they mutable? & Strings, numbers, and tuples are immutable. Lists and dictionaries are mutable. \tn % Row Count 9 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.4931 cm} x{3.4839 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Operators}} \tn % Row 0 \SetRowColor{LightBackground} Modulus & Remainder after division. Uses \%. \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{Exponentiation} & Exponents. ** (5\textasciicircum{}3) \tn % Row Count 4 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{no parenthesis around asterisks} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{0.84609 cm} x{4.13091 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Rules}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{Variable} & Must start with a letter or an underscore (but can be empty 0, ""). Remainder can consist of letters, numbers, and underscores. They are CASE SENSITIVE. \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{String} \tn % Row Count 6 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.38896 cm} x{2.58804 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Conditionals}} \tn % Row 0 \SetRowColor{LightBackground} How do they work? & True/false statements \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} What is the syntax? & IF/ELIF statement \tn % Row Count 3 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.63781 cm} x{2.33919 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Iterators}} \tn % Row 0 \SetRowColor{LightBackground} How do they work? & Loops over a list \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} What is the syntax? & FOR \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Computational Thinking}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{Psuedo code} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{brain in slides} \tn \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.4977 cm} p{0.4977 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Concepts and Benefits of}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{flow charting} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{modelbuilder} \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.34379 cm} x{3.63321 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Nature of Python}} \tn % Row 0 \SetRowColor{LightBackground} High Level & Removed from actual code ran on computer. Use syntax to make it easier to read/write. \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Object Oriented & Each object has a value, an identity, and a type. \tn % Row Count 5 (+ 2) % Row 2 \SetRowColor{LightBackground} General Purpose & Does not have a specific application, can be used for a range of applications like scripting or automating \tn % Row Count 9 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{Interpreted} & Processed through an interpreter into a low level machine language that can be executed \tn % Row Count 12 (+ 3) % Row 4 \SetRowColor{LightBackground} Dynamic & Data can be manipulated into strings and numbers. An integer can be a float or vice versa. \tn % Row Count 16 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Python Version Differences}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Print: In Python 2, "print" is treated as a statement rather than a function. There is no need to wrap the text you want to print in parentheses, although you can if you want. In contrast, Python 3 explicitly treats "print" as a function, which means you have to pass the items you need to print to the function in parentheses in the standard way, or you will get a syntax error. \newline % Row Count 8 (+ 8) Integer Division: Python 2 treats numbers that you type without any digits after the decimal point as integers. For example, if you type the expression 3 / 2 in Python 2 code, the result of the evaluation will be 1, not 1.5 as you might expect. Python 3 evaluates 3 / 2 as 1.5 by default, which is more intuitive for new programmers.% Row Count 15 (+ 7) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Impact on ArcPY} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.29402 cm} x{3.68298 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Python Libraries}} \tn % Row 0 \SetRowColor{LightBackground} What are they? & A Python Library is a collection of functions and methods that allow you to perform actions without writing code. \tn % Row Count 4 (+ 4) % Row 1 \SetRowColor{white} ArcPy & Arcpy is a way to perform geographic data analysis, data conversion, data management, and map automation with Python. \tn % Row Count 9 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Python Range Function}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{\textgreater{}\textgreater{}\textgreater{} \# One parameter \newline \textgreater{}\textgreater{}\textgreater{} for i in range(5): \newline ... print(i) \newline ... \newline 0 \newline 1 \newline 2 \newline 3 \newline 4 \newline \textgreater{}\textgreater{}\textgreater{} \# Two parameters \newline \textgreater{}\textgreater{}\textgreater{} for i in range(3, 6): \newline ... print(i) \newline ... \newline 3 \newline 4 \newline 5 \newline \textgreater{}\textgreater{}\textgreater{} \# Three parameters \newline \textgreater{}\textgreater{}\textgreater{} for i in range(4, 10, 2): \newline ... print(i) \newline ... \newline 4 \newline 6 \newline 8 \newline \textgreater{}\textgreater{}\textgreater{} \# Going backwards \newline \textgreater{}\textgreater{}\textgreater{} for i in range(0, -10, -2): \newline ... print(i) \newline ... \newline 0 \newline -2 \newline -4 \newline -6 \newline -8} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Generates a list of numbers.} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Structure of a FOR loop}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{for x in {[}1,2,3{]}: \newline print(x) \newline - \newline tacos = {[}"Fish Taco", "Brisket Taco", "Carnitas Taco"{]} \newline for tacos in tacos: \newline print(tacos)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Structure of a WHILE loop}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{i=1 \newline while i \textless{} 4: \newline print i \newline i+=1 \newline - \newline ball = 10 \newline while ball \textgreater{} 0: \newline print(ball) \newline print("The ball is dropping!") \newline break \newline \newline i = 10 \newline while i \textgreater{}= 6: \newline print(i) \newline i-=1 \newline print("Keep going") \newline while i == 5: \newline print(i) \newline i-=1 \newline print("Halfway there") \newline while i \textgreater{}= 0: \newline print(i) \newline i -= 10 \newline print("almost there") \newline else: \newline print(i) \newline i-=1 \newline print("finished")} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{0.84609 cm} x{4.13091 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Break/Continue/Pass}} \tn % Row 0 \SetRowColor{LightBackground} Break & Terminates the current loop and resumes at the next statement \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} \seqsplit{Continue} & Returns the control to the beginning of the while loop. Rejects all the remaining statements in the current iteration of hte loop and moves control back to the top of the loop. \tn % Row Count 8 (+ 6) % Row 2 \SetRowColor{LightBackground} Pass & Pass for command/codes not wanted to be executed. \tn % Row Count 10 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Structure of a IF/ELIF/ELSE code blocks}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{import random \newline p = random.randint (1, 6) \newline print p \newline \newline if p == 6: \newline print "shante you stay!" \newline elif p == 5: \newline print "Shante you both stay" \newline else: \newline print "sashe away"} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}