327 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			327 lines
		
	
	
		
			9.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| ---
 | |
| title: Basic Operators
 | |
| ---
 | |
| ## Basic Operators
 | |
| 
 | |
| Operators are symbols that tell the interpreter to do a specific operation (e.g. arithmetic, comparison, logical, etc.)
 | |
| 
 | |
| The different types of operators in Python are listed below:
 | |
| 
 | |
| 1. Arithmetic Operators
 | |
| 2. Comparison (Relational) Operators
 | |
| 3. Bitwise Operators
 | |
| 4. Assignment Operators
 | |
| 5. Logical Operators
 | |
| 6. Membership Operators
 | |
| 7. Identity Operators
 | |
| 
 | |
| #### Arithmetic Operators
 | |
| 
 | |
| An arithmetic operator takes two operands as input, performs a calculation and returns the result. 
 | |
| 
 | |
| Consider the expression, <b>“a = 2 + 3”</b>. Here, `2` and `3` are the <i>operands</i> and `+` is the <i>arithmetic operator</i>. The result of the operation is stored in the variable a. (This is because `=` is an assignment operator. See below.)
 | |
| 
 | |
| <table style="width:100%">
 | |
|   <tr>
 | |
|     <th>Operator</th>
 | |
|     <th>Description</th> 
 | |
|     <th>Usage</th>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">+</td>
 | |
|     <td>Performs Addition on the operands</td> 
 | |
|     <td>12 + 3 = 15</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">-</td>
 | |
|     <td>Performs Subtraction on the operands. <br>Subtracts the right operand from the left operand</td> 
 | |
|     <td>12 - 3 = 9</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">*</td>
 | |
|     <td>Performs Multiplication on the operands</td> 
 | |
|     <td>12 * 3 = 36</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">/</td>
 | |
|     <td>Performs Division on the operands. <br>Divides the left operand by the right operand</td> 
 | |
|     <td>12 / 3 = 4</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td>Note: When two integers are used, the result differs between Python 2 and Python 3.</td> 
 | |
|     <td>5 / 2 = 2 in Python 2</td>
 | |
|     <td>5 / 2 = 2.5 in Python 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">%</td>
 | |
|     <td>Performs a Modulus on the operands. <br>Returns the remainder obtained while dividing the left operand by the right operand</td> 
 | |
|     <td>16 % 3 = 1</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">**</td>
 | |
|     <td>Performs an Exponentiation operation. <br>The left operand is raised to the power of right operand</td> 
 | |
|     <td>12 ** 3 = 1728</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">//</td>
 | |
|     <td>Performs a Floor Division operation. <br>Returns the integral part of the quotient obtained after diving the left operand by the right operand</td> 
 | |
|     <td>18 // 5 = 3</td>
 | |
|   </tr>
 | |
| </table>
 | |
| 
 | |
| Notes: 
 | |
| - To get the result in floating type, one of the operands must also be of float type.
 | |
| - Python arithmetic operations follow the PEMDAS order of precedence.
 | |
| 
 | |
| #### Comparison (Relational) Operators
 | |
| 
 | |
| A comparison or relational operator is used to compare two operands to determine the relationship between them. It returns a boolean value based on the condition.
 | |
| 
 | |
| <table style="width:100%">
 | |
|   <tr>
 | |
|     <th>Operator</th>
 | |
|     <th>Description</th> 
 | |
|     <th>Usage</th>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">></td>
 | |
|     <td>Returns True if the left operand is greater than the right operand<br>Returns False otherwise</td> 
 | |
|     <td>12 > 3 returns True</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center"><</td>
 | |
|     <td>Returns True if the right operand is greater than the left operand<br>Returns False otherwise</td> 
 | |
|     <td>12 < 3 returns False</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">==</td>
 | |
|     <td>Returns True if both the operands are equal<br>Returns False otherwise</td> 
 | |
|     <td>12 == 3 returns False</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">>=</td>
 | |
|     <td>Returns True if the left operand is greater than or equal to the right operand<br>Returns False otherwise</td> 
 | |
|     <td>12 >= 3 returns True</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center"><=</td>
 | |
|     <td>Returns True if the right operand is greater than or equal to the left operand<br>Returns False otherwise</td> 
 | |
|     <td>12 <= 3 returns False</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">!=</td>
 | |
|     <td>Returns True if both the operands are not equal<br>Returns False otherwise</td> 
 | |
|     <td>12 != 3 returns True</td>
 | |
|   </tr>
 | |
| </table>
 | |
| 
 | |
| #### Bitwise Operators
 | |
| 
 | |
| A bitwise operator performs operations on the operands bit by bit.
 | |
| 
 | |
| Consider a = 2 (in binary notation, 10) and b = 3 (in binary notation, 11) for the below usages.
 | |
| 
 | |
| <table style="width:100%">
 | |
|   <tr>
 | |
|     <th>Operator</th>
 | |
|     <th>Description</th> 
 | |
|     <th>Usage</th>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">&</td>
 | |
|     <td>Performs bitwise AND operation on the operands</td> 
 | |
|     <td>a & b = 2<br>Binary: 10 & 11 = 10</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">|</td>
 | |
|     <td>Performs bitwise OR operation on the operands</td> 
 | |
|     <td>a | b = 3<br>Binary: 10 | 11 = 11</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">^</td>
 | |
|     <td>Performs bitwise XOR operation on the operands</td> 
 | |
|     <td>a ^ b = 1<br>Binary: 10 ^ 11 = 01</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">~</td>
 | |
|     <td>Performs bitwise NOT operation on the operand<br>Flips every bit in the operand</td> 
 | |
|     <td>~a = -3<br>Binary: ~(00000010) = (11111101)</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">>></td>
 | |
|     <td>Performs a bitwise right shift. Shifts the bits of left operand, right by the number of bits specified as the right operand </td> 
 | |
|     <td>a >> b = 0<br>Binary: 00000010 >> 00000011 = 00000000</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center"><<</td>
 | |
|     <td>Performs a bitwise left shift. Shifts the bits of left operand, left by the number of bits specified as the right operand </td> 
 | |
|     <td>a << b = 16<br>Binary: 00000010 << 00000011 = 00001000</td>
 | |
|   </tr>
 | |
| </table>
 | |
| 
 | |
| 
 | |
| #### Assignment Operators
 | |
| An assignment operator is used to assign values to a variable. This is usually combined with other operators (like arithmetic, bitwise, etc.) where the operation is performed on the operands and the result is assigned to the left operand.
 | |
| 
 | |
| Consider the following examples,
 | |
| <br>
 | |
| <b>a = 18</b>. Here `=` is an assignment operator, and the result is stored in variable a.
 | |
| <br>
 | |
| <b>a += 10</b>. Here `+=` is an assignment operator, and the result is stored in variable a. This is same as a = a + 10.
 | |
| 
 | |
| <table style="width:100%">
 | |
|   <tr>
 | |
|     <th>Operator</th>
 | |
|     <th>Usage</th>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">=</td>
 | |
|     <td>a = 5. The value 5 is assigned to the variable a</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">+=</td>
 | |
|     <td>a += 5 is equivalent to a = a + 5</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">-=</td>
 | |
|     <td>a -= 5 is equivalent to a = a - 5</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">*=</td>
 | |
|     <td>a *= 3 is equivalent to a = a * 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">/=</td>
 | |
|     <td>a /= 3 is equivalent to a = a / 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">%=</td>
 | |
|     <td>a %= 3 is equivalent to a = a % 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">**=</td>
 | |
|     <td>a **= 3 is equivalent to a = a ** 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">//=</td>
 | |
|     <td>a //= 3 is equivalent to a = a // 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">&=</td>
 | |
|     <td>a &= 3 is equivalent to a = a & 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">|=</td>
 | |
|     <td>a |= 3 is equivalent to a = a | 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">^=</td>
 | |
|     <td>a ^= 3 is equivalent to a = a ^ 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">>>=</td>
 | |
|     <td>a >>= 3 is equivalent to a = a >> 3</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center"><<=</td>
 | |
|     <td>a <<= 3 is equivalent to a = a << 3</td>
 | |
|   </tr>
 | |
| </table>
 | |
| 
 | |
| #### Logical Operators
 | |
| 
 | |
| A logical operator is used to make a decision based on multiple conditions. The logical operators used in Python are 
 | |
| `and`, `or` and `not`
 | |
| 
 | |
| <table style="width:100%">
 | |
|   <tr>
 | |
|     <th>Operator</th>
 | |
|     <th>Description</th>
 | |
|     <th>Usage</th>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">and</td>
 | |
|     <td>Returns True if both the operands are True<br>Returns False otherwise</td>
 | |
|     <td>a and b</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">or</td>
 | |
|     <td>Returns True if any one of the operands are True<br>Returns False otherwise</td>
 | |
|     <td>a or b</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
|     <td align="center">not</td>
 | |
|     <td>Returns True if the operand is False<br>Returns False otherwise</td>
 | |
|     <td>not a</td>
 | |
|   </tr>
 | |
|   <tr>
 | |
| </table>
 | |
| 
 | |
| #### Membership Operators
 | |
| 
 | |
| A membership operator is used to identify membership in any sequence (e.g. lists, strings, tuples). 
 | |
| <br>`in` and `not in` are membership operators
 | |
| 
 | |
| <br>`in` returns True if the specified value is found in the sequence. Returns False otherwise.
 | |
| <br>`not in` returns True if the specified value is not found in the sequence. Returns False otherwise.
 | |
| 
 | |
| ###### Example Usage
 | |
| 
 | |
| ```py
 | |
| a = [1,2,3,4,5]
 | |
|   
 | |
| #Is 3 in the list a?
 | |
| print 3 in a # prints True 
 | |
|   
 | |
| #Is 12 not in list a?
 | |
| print 12 not in a # prints True
 | |
|   
 | |
| str = "Hello World"
 | |
|   
 | |
| #Does the string str contain World?
 | |
| print "World" in str # prints True
 | |
|   
 | |
| #Does the string str contain world? (note: case sensitive)
 | |
| print "world" in str # prints False  
 | |
| 
 | |
| print "code" not in str # prints True
 | |
| ```
 | |
| #### Identity Operators
 | |
| 
 | |
| An identity operator is used to check if two variables share the same memory location.
 | |
| <br>`is` and `is not` are identity operators
 | |
| 
 | |
| <br>`is` returns True if the operands refer to the same object. Returns False otherwise.
 | |
| <br>`is not` returns True if the operands do not refer to the same object. Returns False otherwise.
 | |
| 
 | |
| Please note that two values being equal does not necessarily require they be identical.
 | |
| 
 | |
| ###### Example Usage
 | |
| 
 | |
| ```py
 | |
| a = 3
 | |
| b = 3  
 | |
| c = 4
 | |
| print a is b # prints True
 | |
| print a is not b # prints False
 | |
| print a is not c # prints True
 | |
| 
 | |
| x = 1
 | |
| y = x
 | |
| z = y
 | |
| print z is 1 # prints True
 | |
| print z is x # prints True
 | |
| print y is x # prints True
 | |
| 
 | |
| str1 = "FreeCodeCamp"
 | |
| str2 = "FreeCodeCamp"
 | |
| 
 | |
| print str1 is str2 # prints True
 | |
| print "Code" is str2 # prints False
 | |
| 
 | |
| a = [10,20,30]
 | |
| b = [10,20,30]
 | |
| 
 | |
| print a is b # prints False (since lists are mutable in Python)  
 | |
| ```
 |