1 of 77Module 4 : Variables, Data types, and Operators Introduction to        Computational Thinking Module 4 :                                      Variables, Data types, and Operators Asst Prof Chi‐Wing FU, Philip Office: N4‐02c‐104 email: cwfu[at]ntu.edu.sg
2 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
3 of 77Module 4 : Variables, Data types, and Operators What is a Variable? • In most computer programs, we need data storage to represent and store “something” (data) temporarily in programs This is like M+ and MR in calculator
4 of 77Module 4 : Variables, Data types, and Operators What is a Variable? • We can use names to make our program more readable, so that the “something” is easily understood, e.g., radiusFloat Variable radiusFloat
5 of 77Module 4 : Variables, Data types, and Operators Variable Objects • For each variable, Python keeps a pair of info.: • variable’s name • variable’s value • A variable is created when a value is assigned to it for the first time. It associates a name with a value. • We say name references value Name Value X 7.1 X = 7.1
6 of 77Module 4 : Variables, Data types, and Operators Variable Objects • Operations: Once a variable is created, we can store, retrieve, or modify the value associated with the variable name • Subsequent assignments can update the associated value Name Value X 3.14 X = 3.14 Name Value X 5.16 X = 5.16
7 of 77Module 4 : Variables, Data types, and Operators Namespace • A namespace is the table that contains (and keeps track of) the association of names with values • We will see more about namespaces as we get further into Python, but it is an essential part of the language.
8 of 77Module 4 : Variables, Data types, and Operators Namespace
9 of 77Module 4 : Variables, Data types, and Operators Namespace
10 of 77Module 4 : Variables, Data types, and Operators Python Naming Conventions • How to name variables? (as well as other things that you will see later in this course, e.g., user-defined functions, etc.) One basic practice!!! Chooses the names of the variables carefully and explains what each variable means
11 of 77Module 4 : Variables, Data types, and Operators Python Naming Conventions VS Same program!!! Though both programs work… Different names for the variables Readability counts!!! What is c? Not immediately clear
12 of 77Module 4 : Variables, Data types, and Operators Python Naming Conventions Syntax rules in Python: • must begin with a letter or _ Ab123 and _b123 are OK, but 123ABC is not. • may contain letters, digits, and underscores this_is_an_identifier_123 • may be of any length • upper and lower case letters are different LengthOfRope is not lengthofrope • names starting with _ have special meaning. Be careful!!! Python is case sensitive!!
13 of 77Module 4 : Variables, Data types, and Operators A Common Pitfall in Python Can we interpret and run this program? But what’s wrong? English scores are all 60 Hint: a typo!
14 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
15 of 77Module 4 : Variables, Data types, and Operators Assignment Operator • As mentioned in previous module The = sign is the assignment operator but not the equality in mathematics • So, when we see a = 5 a = a + 7 First, we create a variable called a and assign a value of 5 to it. Second, we recall the value of a, add 7 to it, and assign the expression result to a
16 of 77Module 4 : Variables, Data types, and Operators Assignment Operator • Basic syntax: Left Hand Side (LHS) = Right Hand Side (RHS) • RHS is an expression and LHS is a variable • What “assignment” means is: 1) Evaluate the expression on RHS 2) Take the resulting value and associate (assign) it with the name (variable) on the LHS (in the namespace)
17 of 77Module 4 : Variables, Data types, and Operators Examples • Example: x = 2 + 3 * 5 evaluate expression (2+3*5): 17 update the value of x to reference 17 • Example (y has value 2): y = y + 3 evaluate expression (y+3): 5 update the value of y to reference 5 NOTE: If the variable name appears for the first time, create the variable in namespace!
18 of 77Module 4 : Variables, Data types, and Operators Examples • Examples: myInt = 5 Ok myInt + 5 = 7 Invalid Syntax myInt = print("hello") Invalid Syntax print myInt = 5 Invalid Syntax Why?
19 of 77Module 4 : Variables, Data types, and Operators More Examples Both aInt and bFloat got the same reference!!!
20 of 77Module 4 : Variables, Data types, and Operators Exercise: What printed out?
21 of 77Module 4 : Variables, Data types, and Operators Result… Reference is Tricky!!! Result: A new reference
22 of 77Module 4 : Variables, Data types, and Operators Chained assignment • Let’s say we want more variables to take the same value: a = b = 1 a = b = c = 10 1. Don’t make it too long or clumsy… Readability!!! 2. How about this? a = b = 5 = c = 10
23 of 77Module 4 : Variables, Data types, and Operators Swapping two values • Let’s say we want to swap values a = 1 b = 2 • Can we do this? a = b b = a Then??? Correct??? Computationally incorrect!!! Why?
24 of 77Module 4 : Variables, Data types, and Operators Swapping two values • One standard way in many programming languages is to use a temporary variable as a buffer: tmp = a a = b b = tmp We can then swap the reference (computationally)!
25 of 77Module 4 : Variables, Data types, and Operators Multiple Assignment • But Python has a special feature a = 1 b = 2 a,b = b,a • Use comma for multiple assignment • Swapping can be done in one line!!! • Note: it supports more than two elements a,b,c = 10,11,12 • Make sure same number of elements on LHS and RHS • Python makes the tmp buffer for u (implicitly, hidden from your sight)
26 of 77Module 4 : Variables, Data types, and Operators CASE STUDY: Fibonacci sequence • Problem: Generate the Fibonacci sequence 1,1,2,3,5,8,13,21,… • Mechanism 1 + 1 -> 2 1,1,2 1 + 2 -> 3 1,1,2,3 2 + 3 -> 5 1,1,2,3,5 3 + 5 -> 8 1,1,2,3,5,8 ……
27 of 77Module 4 : Variables, Data types, and Operators • Python implementation: • Use a and b to keep track of two consecutive values in the sequence for each iteration • and update them iteratively using multiple assignment Python is simple and good for rapid prototyping CASE STUDY: Fibonacci sequence
28 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
29 of 77Module 4 : Variables, Data types, and Operators Data types • In Python, every “thing” is an object with type and name(s) (in case referenced by more than one variables), e.g., • integers: 5 • floats: 1.2 • booleans: True • strings: “anything” or ‘something’ • lists: [,]: [‘a’,1,1.3] • others we will see In Python, both single & double quotes are for string
30 of 77Module 4 : Variables, Data types, and Operators What is a Data Type? • A type in Python essentially defines: • the internal structure (the kind of data it contains) • the kinds of operations you can perform • 'abc'.capitalize() is a method you can call on strings, but not integers • Some types have multiple elements (collections), we’ll see those later
31 of 77Module 4 : Variables, Data types, and Operators Basic Types in Python • Numbers: • Integers 1, -27 • Floating point numbers (Real) 3.14, 10., .001, 3.14e-10, 0e0 • Complex Numbers: 2 + 3j • Booleans: True, False • String and other types
32 of 77Module 4 : Variables, Data types, and Operators Numbers: Integers • Designated “int” • Note: Python 3 • Unlimited precision!!!!!!! 1 + 1000 + 10000000000000000000000000 • Note: Python 2 (if you know…) • There are two categories of integers: “long” and “int”, but they are combined into one type, basically “long,” in Python 3
33 of 77Module 4 : Variables, Data types, and Operators Numbers: Floating Point • Designated “float” • Floating point numbers are real numbers with decimal points: 3.14, 10., .001, 3.14e-10, 0e0 • Values stored in floating point are usually approximated, e.g., Integers have exact precision!!! But not float…
34 of 77Module 4 : Variables, Data types, and Operators Numbers: Complex Numbers • Designated “complex” • Python provides also complex numbers: real part + imaginary part J (J can be upper or lower case) • Real and imaginary parts input can be in integer or floating point numbers • No space before J No space here
35 of 77Module 4 : Variables, Data types, and Operators Numbers: Complex Numbers • Use z.real and z.imag to extract the real and imaginary parts Note: we use the dot operator here to get the parameters (similar syntax like math.pi for modules)
36 of 77Module 4 : Variables, Data types, and Operators Boolean • Designated “bool” • For logical operations, see Module 6 • Either True or False (capitalize T and F!) Python is case sensitive!!!
37 of 77Module 4 : Variables, Data types, and Operators String • Designated “str” • First collection type you learnt • Collection type contains multiple objects organized as a single object type • String is basically a sequence, typically a sequence of characters delimited by single (‘…’) or double quotes (“…”)
38 of 77Module 4 : Variables, Data types, and Operators Duck-typing • Compared to C and Java, you may wonder “How Python know the data types?” • Python uses Duck-typing: “When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” Four variables! Their types?
39 of 77Module 4 : Variables, Data types, and Operators Keep Track of Data Types!!! • Python does not have variable declaration like Java or C to announce or create a variable • We create a variable by just assigning a value to it and the type of the value defines the type of the variable • If we re-assign another value to the variable, its type can change!!! • So… KEEP TRACK!!!
40 of 77Module 4 : Variables, Data types, and Operators Keep Track of Data Types!!! • A variable in Python can have different type at different time
41 of 77Module 4 : Variables, Data types, and Operators The type function • In Python, the type function allows you to know the type of a variable or literal:
42 of 77Module 4 : Variables, Data types, and Operators Textbook: Hungarian notation • Variable naming: append the name of the type to the variable name: Note the name!
43 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
44 of 77Module 4 : Variables, Data types, and Operators Data Conversion • Converting a value to other type by returning a new value of that type • Must be compatible and reasonable e.g., cannot convert "abc" to integer • There are conversion operations associated with the type itself: int(someVar) converts and returns an integer float(someVar) converts and returns a float str(someVar) converts and returns a string
45 of 77Module 4 : Variables, Data types, and Operators What are the types? Let’s keep track of them!
46 of 77Module 4 : Variables, Data types, and Operators What happens if we convert a float to an integer? Truncated!!!!!!!! (remove anything after the decimal point) Want to round off? … int(a+0.5)
47 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
48 of 77Module 4 : Variables, Data types, and Operators What are Operators? • For each type, there is a set of operators allowing us to perform computation on that type • Some symbols are used for different purposes for different types; we call this operator overloaded (this is called overloading) • E.g., “+” is addition for integers but concatenation for strings (see module 8)
49 of 77Module 4 : Variables, Data types, and Operators Types of Operators Basic types of operators: 1. Assignment operator = (covered already) 2. Arithmetic operators 3. Relational operators (comparison) 4. Logical operators 5. is operator Note: bitwise operators – see next module
50 of 77Module 4 : Variables, Data types, and Operators #2: Arithmetic Operators • Integer operators • addition and subtraction: +, - • multiplication: * • division • quotient: / • remainder: % • exponent (exp): ** • Floating point operators • add, subtract, multiply, divide, exp: +, -, *, /, ** quotient remainder
51 of 77Module 4 : Variables, Data types, and Operators #2: Arithmetic Operators * Note: do not mix up / and (backslash)
52 of 77Module 4 : Variables, Data types, and Operators Issue #1: Binary Operators • Binary operators generally take two values (operands) of the same type * and return values of the same type But… for division: Integer division produces float!!! A new feature in Python 3 but not in Python 2, C/C++, etc. Note: Unary operator – one value, e.g., -3 or +2.0
53 of 77Module 4 : Variables, Data types, and Operators Issue #2: Division in Python • Difference between Python versions: • In Python 2.x: Integer / integer → integer Integer division 8 / 3 → 2 • In Python 3.x: Integer / integer → float 8 / 3 → 2.6666666666666665 • Note: Division by Zero • 1 / 0 -> run time error A Trick in Python 3:
54 of 77Module 4 : Variables, Data types, and Operators Issue #3: Mixed Operations • We have seen 8/3 and 8.0/3.0 • How if 8 / 3.0? Different types: int and float • This is called mixed operation • In Python • Python will automatically convert the data to the most detailed result. Thus, 8 → 8.0, and the result is 2.6666666 • Detail: int < float • So… actually no mixed operations. Rather, data are implicitly converted.
55 of 77Module 4 : Variables, Data types, and Operators Issue #4: Order of Calculation • General mathematical rules apply: Operators Description () Parenthesis (grouping) ** Exponentiation +x, -x Positive, Negative *, /, % Multiplication, division, remainder +, - Addition, Subtraction • Note: always use parenthesis if in doubt… safe!!! 3 * (4 + 5) ** 2 Increaseinpriorty
56 of 77Module 4 : Variables, Data types, and Operators Issue #5: Augmented Assignments • These operations are shortcut • Make the code easier to read Shortcut Equivalence myInt += 2 ↔ myInt = myInt + 2 myInt -= 2 ↔ myInt = myInt - 2 myInt /= 2 ↔ myInt = myInt / 2 myInt *= 2 ↔ myInt = myInt * 2 myInt %= 2 ↔ myInt = myInt % 2
57 of 77Module 4 : Variables, Data types, and Operators • Compare two numbers (float or int) and return a boolean: either True or False greater than or equal tof >= 6.0>= greater thanf > 5.0> less than or equal tod <= 4<= less thanc < 3< not equal tob != 2!= equal toa == 1== meaningexampleoperator #3: Relational Operators
58 of 77Module 4 : Variables, Data types, and Operators Return True if either one is True (num1 > num2) or (num2 >num3)or Return True only if both are True (num1 > num2) and (num2 >num3)and Flip T/Fnot num < 0not meaningexampleoperator #4: Logical Operators • Logical operators connect boolean values and expressions and return a boolean value as a result: not, and, or
59 of 77Module 4 : Variables, Data types, and Operators Examples • Examples: have_holidays == True and saving >= 10000 temperature > 37.5 and hasMedicine == False MathScore < 50 or EngScore < 50 or … MathScore < 50 and EngScore < 50 and … Num % 2 == 0 and Num % 3 == 0 -> Num % 6 == 0 What do they meaning?
60 of 77Module 4 : Variables, Data types, and Operators Short circuit Given p=True, q=True, r=False, s=False • Short-circuit for and If we evaluate: ( p and q and r and s ) • Short-circuit for or If we evaluate: ( s or r or q or p ) We know the expression is False when we reach r We know the expression is True when we reach q Think about the logical meaning!! http://docs.python.org/library/stdtypes.html#boolean-operations-and-or-not
61 of 77Module 4 : Variables, Data types, and Operators • In Python (not in most languages), chained comparisons work just like you would expect in a mathematical expression: • Say, myInt has a value 5 0 <= myInt and myInt <= 5 True 0 <= myInt <= 5 True 0 <= myInt <= 5 > 10 False Chained Comparisons Just apply each operator to compare its two neighboring values Even for this same meaning (implicit “and”)
62 of 77Module 4 : Variables, Data types, and Operators Exercise Want to check your answers? Just try it in Python
63 of 77Module 4 : Variables, Data types, and Operators Cast study: Google Search uses Booleans • All terms are and’ed together by default • You can specify or (using OR) • You can specify not (using -) Example is: ‘Punch’ and (‘Bill’ or ‘William’) and not ‘gates’
64 of 77Module 4 : Variables, Data types, and Operators #5: is operator • Recall the namespace concept: float1 = 2.5 float2 = 2.5 float3 = float2 • When we run “float3 = float2,” both float3 and float2 get the same reference
65 of 77Module 4 : Variables, Data types, and Operators #5: is operator • It checks if two variables have the same reference while == compares values only Function id returns the identity number of a variable
66 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
67 of 77Module 4 : Variables, Data types, and Operators Powerful Data types • Some very powerful data types in Python • List – sequence of values • Dictionary – values with keys • Set – a collection of unique elements • Point – XYZ • Line Segment – two points (See textbook and Python website for detail; note: they are very useful; not examinable unless covered in 2nd part of this course)
68 of 77Module 4 : Variables, Data types, and Operators A glimpse: List • Python allows us to create a list of elements • Like string, a list is also a sequence but uses [ ]
69 of 77Module 4 : Variables, Data types, and Operators Module random • Provides some powerful functions: • randint( a , b ): Return a random integer in [a,b] (inclusive) • choice( x ): Return a random element in sequence x; x has to be non-empty • shuffle( x ): Shuffle the sequence x in place; x can be a string and can be a set You need to import random!!!
70 of 77Module 4 : Variables, Data types, and Operators Different elements picked at different time (same statement) s1 is changed!
71 of 77Module 4 : Variables, Data types, and Operators But hold on… • Is random really random? • Computation are deterministic. Computers cannot generate true random numbers. • So what? Pseudo random!!! * Pseudo random number generator created by mathematical functions !! (Example? See the end of next lecture module)
72 of 77Module 4 : Variables, Data types, and Operators Topics • Variables • Assignment Operator • Data Types • Data Conversion • Operators • Powerful Data Types and Random Module • Case Study: Calculator Example
73 of 77Module 4 : Variables, Data types, and Operators Calculator Example • Before the example, let’s learn an interesting and powerful Python function: exec • It takes a string as an input and execute it like a Python statement in the command shell Execute this string
74 of 77Module 4 : Variables, Data types, and Operators Calculator Example • Why powerful? Check this: Repeat the indented block User input Execute it Note: + is the concatentation operator to connect strings
75 of 77Module 4 : Variables, Data types, and Operators • We can read user inputs from command shell and dynamically execute them like “code”!!! • Not many programming languages can do this Note: Python - interpreter!!! Calculator Example
76 of 77Module 4 : Variables, Data types, and Operators Take Home Messages • Variables: – Namespace and name reference concept • Assignment Operator: Single, Chained, Multiple • Data Types: – Numbers (integers and float), Booleans, String (collection types) – Duck-typing, type function, data conversion • Operators – Division, mixed operators, order of operations and parentheses, augmented assignments, relational and logical operators • Additional: list, random module, and exec
77 of 77Module 4 : Variables, Data types, and Operators Reading Assignment • Textbook Chapter 1: Beginnings 1.4 to 1.7 (and also Chapter 0.8 about representing data)

Lecture 4 variables data types and operators