diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2025-04-24 15:31:56 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2025-04-24 15:31:56 -0600 |
| commit | 4abc43cdcb7fba399d5377481dd88e54b2db8cb6 (patch) | |
| tree | aaa358e30142bb7e97797688b4fbd4092bbe981a /book/module1/control_structures.tex | |
| parent | 7e0b4501030aa268da323c1eaa69c8a2b29ee6a3 (diff) | |
Added tex file structure for each module
Diffstat (limited to 'book/module1/control_structures.tex')
| -rw-r--r-- | book/module1/control_structures.tex | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/book/module1/control_structures.tex b/book/module1/control_structures.tex new file mode 100644 index 0000000..746b7a5 --- /dev/null +++ b/book/module1/control_structures.tex @@ -0,0 +1,206 @@ +\section{Control Structures}\label{control-structures} + +Control structures allow us to control the flow of execution in a Python +program. The two main types are \textbf{conditional statements +(\texttt{if} statements)} and \textbf{loops (\texttt{for} and +\texttt{while} loops)}. + +\subsection{Conditional Statements}\label{conditional-statements} + +Conditional statements allow a program to execute different blocks of +code depending on whether a given condition is \texttt{True} or +\texttt{False}. These conditions are typically comparisons, such as +checking if one number is greater than another. + +\subsubsection{\texorpdfstring{The \texttt{if} +Statement}{The if Statement}}\label{the-if-statement} + +The simplest form of a conditional statement is the \texttt{if} +statement. If the condition evaluates to \texttt{True}, the indented +block of code runs. Otherwise, the program moves on without executing +the statement. + +For example, consider a situation where we need to determine if a person +is an adult based on their age. If the age is 18 or greater, we print a +message saying they are an adult. + +\subsubsection{\texorpdfstring{The \texttt{if-else} +Statement}{The if-else Statement}}\label{the-if-else-statement} + +Sometimes, we need to specify what should happen if the condition is +\texttt{False}. The \texttt{else} clause allows us to handle this case. +Instead of just skipping over the block, the program can execute an +alternative action. + +For instance, if a person is younger than 18, they are considered a +minor. If the condition of being an adult is not met, the program will +print a message indicating that the person is a minor. + +\subsubsection{\texorpdfstring{The \texttt{if-elif-else} +Statement}{The if-elif-else Statement}}\label{the-if-elif-else-statement} + +When dealing with multiple conditions, the \texttt{if-elif-else} +structure is useful. The program evaluates conditions in order, +executing the first one that is \texttt{True}. If none of the conditions +are met, the \texttt{else} block runs. + +For example, in a grading system, different score ranges correspond to +different letter grades. If a student's score is 90 or higher, they +receive an ``A''. If it's between 80 and 89, they get a ``B'', and so +on. If none of the conditions match, they receive an ``F''. + +\subsubsection{\texorpdfstring{Nested \texttt{if} +Statements}{Nested if Statements}}\label{nested-if-statements} + +Sometimes, we need to check conditions within other conditions. This is +known as \textbf{nesting}. For example, if we first determine that a +person is an adult, we can then check if they are a student. Based on +that information, we print different messages. + +\begin{Shaded} +\begin{Highlighting}[] +\CommentTok{\# Getting user input for the student\textquotesingle{}s score} +\NormalTok{score }\OperatorTok{=} \BuiltInTok{int}\NormalTok{(}\BuiltInTok{input}\NormalTok{(}\StringTok{"Enter the student\textquotesingle{}s score (0{-}100): "}\NormalTok{))} + +\ControlFlowTok{if} \DecValTok{0} \OperatorTok{\textless{}=}\NormalTok{ score }\OperatorTok{\textless{}=} \DecValTok{100}\NormalTok{:} + \ControlFlowTok{if}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{90}\NormalTok{:} +\NormalTok{ grade }\OperatorTok{=} \StringTok{"A"} + \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{80}\NormalTok{:} +\NormalTok{ grade }\OperatorTok{=} \StringTok{"B"} + \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{70}\NormalTok{:} +\NormalTok{ grade }\OperatorTok{=} \StringTok{"C"} + \ControlFlowTok{elif}\NormalTok{ score }\OperatorTok{\textgreater{}=} \DecValTok{60}\NormalTok{:} +\NormalTok{ grade }\OperatorTok{=} \StringTok{"D"} + \ControlFlowTok{else}\NormalTok{:} +\NormalTok{ grade }\OperatorTok{=} \StringTok{"F"} \CommentTok{\# Score below 60 is a failing grade} + + + \ControlFlowTok{if}\NormalTok{ grade }\OperatorTok{==} \StringTok{"F"}\NormalTok{:} + \BuiltInTok{print}\NormalTok{(}\StringTok{"The student has failed."}\NormalTok{)} +\NormalTok{ retake\_eligible }\OperatorTok{=} \BuiltInTok{input}\NormalTok{(}\StringTok{"Is the student eligible for a retest? (yes/no): "}\NormalTok{).strip().lower()} + + \ControlFlowTok{if}\NormalTok{ retake\_eligible }\OperatorTok{==} \StringTok{"yes"}\NormalTok{:} + \BuiltInTok{print}\NormalTok{(}\StringTok{"The student is eligible for a retest."}\NormalTok{)} + \ControlFlowTok{else}\NormalTok{:} + \BuiltInTok{print}\NormalTok{(}\StringTok{"The student has failed the course and must retake it next semester."}\NormalTok{)} + + +\end{Highlighting} +\end{Shaded} + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +\subsection{Loops in Python}\label{loops-in-python} + +Loops allow a program to execute a block of code multiple times. This is +especially useful for tasks such as processing lists of data, performing +repetitive calculations, or automating tasks. + +\subsubsection{\texorpdfstring{The \texttt{for} +Loop}{The for Loop}}\label{the-for-loop} + +A \texttt{for} loop iterates over a sequence, such as a list, tuple, +string, or a range of numbers. Each iteration assigns the next value in +the sequence to a loop variable, which can then be used inside the loop. + +For instance, if we have a list of fruits and want to print each fruit's +name, a \texttt{for} loop can iterate over the list and display each +item. + +Another useful feature of \texttt{for} loops is the \texttt{range()} +function, which generates a sequence of numbers. This is commonly used +when we need to repeat an action a specific number of times. For +example, iterating from 0 to 4 allows us to print a message five times. + +Additionally, the \texttt{enumerate()} function can be used to loop +through a list while keeping track of the index of each item. This is +useful when both the position and the value in a sequence are needed. + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{fruits }\OperatorTok{=}\NormalTok{ [}\StringTok{"apple"}\NormalTok{, }\StringTok{"banana"}\NormalTok{, }\StringTok{"cherry"}\NormalTok{] } +\ControlFlowTok{for}\NormalTok{ x }\KeywordTok{in}\NormalTok{ fruits: } + \BuiltInTok{print}\NormalTok{(x)} +\end{Highlighting} +\end{Shaded} + +\begin{Shaded} +\begin{Highlighting}[] +\ControlFlowTok{for}\NormalTok{ x }\KeywordTok{in} \BuiltInTok{range}\NormalTok{(}\DecValTok{6}\NormalTok{): } + \BuiltInTok{print}\NormalTok{(x) } +\ControlFlowTok{else}\NormalTok{: } + \BuiltInTok{print}\NormalTok{(}\StringTok{"Finally finished!"}\NormalTok{)} +\end{Highlighting} +\end{Shaded} + +\subsubsection{\texorpdfstring{The \texttt{while} +Loop}{The while Loop}}\label{the-while-loop} + +Unlike \texttt{for} loops, which iterate over a sequence, \texttt{while} +loops continue running as long as a specified condition remains +\texttt{True}. This is useful when the number of iterations is not known +in advance. + +For example, a countdown timer can be implemented using a \texttt{while} +loop. The loop will continue decreasing the count until it reaches zero. + +It's important to be careful with \texttt{while} loops to avoid infinite +loops, which occur when the condition never becomes \texttt{False}. To +prevent this, ensure that the condition will eventually change during +the execution of the loop. + +A \texttt{while} loop can also be used to wait for a certain event to +occur. For example, in interactive programs, a \texttt{while\ True} loop +can keep running until the user provides a valid input, at which point +we break out of the loop. + +\begin{Shaded} +\begin{Highlighting}[] +\NormalTok{i }\OperatorTok{=} \DecValTok{1} +\ControlFlowTok{while}\NormalTok{ i }\OperatorTok{\textless{}} \DecValTok{6}\NormalTok{: } +\NormalTok{ print(i) } +\NormalTok{ i }\OperatorTok{+=} \DecValTok{1} +\end{Highlighting} +\end{Shaded} + +\begin{center}\rule{0.5\linewidth}{0.5pt}\end{center} + +\subsection{Loop Control Statements}\label{loop-control-statements} + +Python provides special statements to control the behavior of loops. +These can be used to break out of a loop, skip certain iterations, or +simply include a placeholder for future code. + +\subsubsection{\texorpdfstring{The \texttt{break} +Statement}{The break Statement}}\label{the-break-statement} + +The \texttt{break} statement is used to exit a loop before it has +iterated through all its elements. When the \texttt{break} statement is +encountered, the loop stops immediately, and the program continues +executing the next statement outside the loop. + +For instance, if we are searching for a specific value in a list, we can +use a \texttt{break} statement to stop the loop as soon as we find the +item, instead of continuing unnecessary iterations. + +\subsubsection{\texorpdfstring{The \texttt{continue} +Statement}{The continue Statement}}\label{the-continue-statement} + +The \texttt{continue} statement is used to skip the current iteration +and proceed to the next one. Instead of exiting the loop entirely, it +simply moves on to the next cycle. + +For example, if we are iterating over numbers and want to skip +processing number 2, we can use \texttt{continue}. The loop will ignore +that iteration and proceed with the next number. + +\subsubsection{\texorpdfstring{The \texttt{pass} +Statement}{The pass Statement}}\label{the-pass-statement} + +The \texttt{pass} statement is a placeholder that does nothing. It is +useful when a block of code is syntactically required but no action +needs to be performed yet. + +For example, in a loop where a condition has not yet been implemented, +using \texttt{pass} ensures that the code remains valid while avoiding +errors. |
