User Tools

Site Tools


python:dierbach:chapter_2_data_and_expressions

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
python:dierbach:chapter_2_data_and_expressions [2016/07/29 00:09] mithatpython:dierbach:chapter_2_data_and_expressions [2016/07/29 03:01] mithat
Line 1: Line 1:
 ~~SLIDESHOW~~ ~~SLIDESHOW~~
 ~~NOTOC~~ ~~NOTOC~~
- 
  
 ====== Data and Expressions ====== ====== Data and Expressions ======
Line 17: Line 16:
 ===== Literals ===== ===== Literals =====
  
-{{http://mkonar.org/assets/img/cat-silhouette-01-64px.png}}+{{http://mkonar.org/assets/img/cat-silhouette-01-trans-64px.png}}
  
 ===== What is a literal? ===== ===== What is a literal? =====
Line 162: Line 161:
 ===== Variables and Identifiers ===== ===== Variables and Identifiers =====
  
-{{http://mkonar.org/assets/img/cat-silhouette-01-64px.png}}+{{http://mkonar.org/assets/img/cat-silhouette-01-trans-64px.png}}
  
 ===== What is a variable? ===== ===== What is a variable? =====
 +
 +  * **variable**: a name associated with a value.
 +
 +<code>
 +       +--------+
 +num -->  10   |
 +       +--------+
 +</code>
 +===== Assignment =====
 +
 +  * **assignment**: take the value resulting from the expression on the right and copy it into the variable on the left.
 +  * **assignment operator**: ''%%=%%'' in Python.
 +    * ''%%=%%'' is //not// “equals”!
 +
 +<code python>
 +foo = 7
 +num = 1 + foo
 +foo = foo + 1
 +</code>
 +===== Variable reassignment =====
 +
 +<code python>
 +num = 10    #        +--------+
 +k = num     # num -->  10   |
 +            #   k -->       | 
 +            #        +--------+
 +</code>
 +<code python>
 +k = 20      #        +--------+
 +            # num -->  10   |
 +            #        +--------+
 +            #        +--------+
 +            #   k -->  20   |
 +            #        +--------+
 +</code>
 +===== id() =====
 +
 +  * Use ''%%id()%%'' to see if two variables are pointing to the same thing.
 +
 +<code python>
 +>>> num = 10
 +k = num
 +>>> id(num)
 +??? # some number
 +>>> id(k)
 +??? # same number as above
 +k = 20
 +>>> id(num)
 +??? # same as before
 +>>> id(k)
 +??? # different
 +</code>
 +===== What is an identifier? =====
 +
 +  * **identifier**: a sequence of one or more characters used to provide a name for a given program element.
 +  * **identifier**: names of things.
 +  * Rules of the name:
 +    * letters, digits, and the underscore character only (no spaces)
 +    * can’t start with a digit
 +    * don’t use underscore for the first character for now
 +    * can be as long as you want
 +
 +===== Keywords and help =====
 +
 +  * **keyword** an identifier that has predefined meaning in a programming language.
 +  * You can’t use a keyword as your own identifier in Python.
 +  * Get a list of keywords:
 +
 +<code python>
 +>>> help()
 +help> keywords
 +# table of keywords appears
 +help> quit
 +>>> 
 +</code>
 +  * Things you think should be keywords are not!
 +  * Check “special” words using ''%%'testword' in dir(__builtins__)%%''
 +
 +===== Example: Restaurant Tab Calculation =====
 +
 +RestaurantTab.py
 +
 +<code python>
 +# Restaurant Tab Calculation Program
 +# This program will calculate a restaurant tab with a gift certificate
 +
 +# initialization
 +tax = 0.08
 +
 +# program greeting
 +print('This program will calculate a restaurant tab for a couple with')
 +print('a gift certificate, with a restaurant tax of', tax * 100, '%\n')
 +
 +# get amount of gift certificate
 +amt_certificate = float(input('Enter amount of the gift certificate: '))
 +
 +# cost of ordered items
 +print('Enter ordered items for person 1')
 +
 +appetizer_per1 = float(input('Appetizier: '))
 +entree_per1 = float(input('Entree: '))
 +drinks_per1 = float(input('Drinks: '))
 +dessert_per1 = float(input('Dessert: '))
 +
 +print('\nEnter ordered items for person 2')
 +
 +appetizer_per2 = float(input('Appetizier: '))
 +entree_per2 = float(input('Entree: '))
 +drinks_per2 = float(input('Drinks: '))
 +dessert_per2 = float(input('Dessert: '))
 +
 +# total items
 +amt_person1 = appetizer_per1 + entree_per1 + drinks_per1 + dessert_per1
 +amt_person2 = appetizer_per2 + entree_per2 + drinks_per2 + dessert_per2
 +
 +# compute tab with tax
 +items_cost = amt_person1 + amt_person2
 +tab = items_cost + items_cost * tax
 +
 +# display amount owe
 +print('\nOrdered items: $', format(items_cost, '.2f'))
 +print('Restaurant tax: $', format(items_cost * tax, '.2f'))
 +print('Tab: $', format(tab - amt_certificate, '.2f'))
 +print('(negative amount indicates unused amount of gift certificate)')
 +
 +</code>
 +===== Operators =====
 +
 +{{http://mkonar.org/assets/img/cat-silhouette-01-trans-64px.png}}
 +
 +===== What Is an Operator? =====
 +
 +**operator**: a symbol that represents an operation that may be performed on one or more operands. **binary operator**: takes two operands **unary operator**: takes one operand
 +
 +===== Arithmetic operators =====
 +
 +^symbol      ^operator         ^example         ^result  ^
 +|-x          |negation         |-10             |-10     |
 +|x + y       |addition         |10 + 25         |35      |
 +|x - y       |subtraction      |10 - 25         |-15     |
 +|x * y       |multiplication   |10 * 5          |50      |
 +|x / y       |division         |25 / 10         |2.5     |
 +|x %%//%% y  |truncating div.  |25 %%//%% 10    |2       |
 +|            |                 |25 %%//%% 10.0  |2.0     |
 +|x % y       |modulus          |25 % 10         |2.0     |
 +|x %%**%% y  |exponentiation   |10 %%**%% 2     |100     |
 +
 +===== Example: Your Place in the Universe =====
 +
 +PlaceInUniverse.py
 +
 +<code python>
 +# Your Place in the Universe Program
 +
 +# This program will determine the approximate number of atoms that a person is
 +# person consists of and the percent of the universe that they comprise
 +
 +# Initialization
 +num_atoms_universe = 10e80
 +weight_avg_person = 70  # 70 kg (154 lbs)
 +num_atoms_avg_person = 7e27
 +
 +# Program greeting
 +print('This program will determine your place in the universe.')
 +
 +# Prompt for user's weight
 +weight_lbs = int(input('Enter your weight in pounds: '))
 +
 +# Convert weight to kilograms
 +weight_kg = 2.2 * weight_lbs
 +
 +# Determine number atoms and percentage of universe
 +num_atoms = (weight_kg / weight_avg_person) * num_atoms_avg_person
 +percent_of_universe = (num_atoms / num_atoms_universe) * 100
 +
 +# Display results
 +print('You contain approximately', format(num_atoms, '.2e'), 'atoms')
 +print('Therefore, you comprise', format(percent_of_universe, '.2e'),
 +      '% of the universe')
 +
 +</code>
 +===== Expressions and Data Types =====
 +
 +{{http://mkonar.org/assets/img/cat-silhouette-01-trans-64px.png}}
 +
 +===== What is an expression? =====
 +
 +  * **expression**: a combination of symbols that evaluates to a value.
 +  * ''%%4 + (3 * k)%%'' is an expression.
 +    * Has two subexpressions:
 +      * ''%%4%%''
 +      * ''%%(3 * k)%%''
 +        * Has two **subexpressions**:
 +          * ''%%3%%''
 +          * ''%%k%%''
 +
 +===== Operator precedence and associativity =====
 +
 +  * **operator precedence** determines which operations happen first.
 +  * **operator associativity** determines the order when two operands have the same precedence.
 +
 +===== Python’s rules =====
 +
 +  * So far…
 +  * Similar to math:
 +
 +^operator       ^associativity  ^
 +|%%**%%         |right to left  |
 +|- (negation)   |left to right  |
 +|*, /, %%//%%, %|left to right  |
 +|+, -           |left to right  |
 +
 +===== Examples =====
 +
 +<code python>
 +>>> 6 - 3 + 2
 +5
 +>>> 2 * 3 / 4
 +1.5
 +>>> 2 ** 3
 +8
 +>>> 2 ** 3 ** 2  # exponentiation is r-to-l
 +512
 +</code>
 +===== What is a data type? =====
 +
 +  * Python differentiates between types of data.
 +  * So far we have seen character strings and numbers.
 +  * **data type**: a set of values and a set of operators that may be applied to those values.
 +  * ''%%+%%'' on a number is different than on a string.
 +  * can’t do ''%%/%%'' on a string.
 +
 +===== Pythons basic types =====
 +
 +  * Python has many [[https://docs.python.org/3/library/stdtypes.html|built-in types]].
 +    * ''%%string%%'' : character strings
 +    * ''%%int%%'' : integer values
 +    * ''%%float%%'' : floating point (i.e., real) values
 +    * ''%%bool%%'' : ''%%True%%'' or ''%%False%%''
 +  * Use ''%%type()%%'' to get the type of a variable or literal.
 +
 +<code python>
 +>>> type(66)
 +<class 'int'>
 +>>> type(3.1)
 +<class 'float'>
 +>>> type(True)
 +<class 'bool'>
 +>>> type(3.1)
 +<class 'float'>
 +</code>
 +===== Static versus dynamic typing =====
 +
 +  * Python is a **dynamically typed** language.
 +  * The same variable can store different type values at different times.
 +
 +<code python>
 +x = 41 + 1
 +print(x)
 +x = 'I ate a donut.'
 +print(x)
 +x = False
 +print(x)
 +</code>
 +  * In **statically typed** languages, once a variable is associated with a type, the type can’t be changed.
 +
 +===== Mixed-type expressions =====
 +
 +  * Example: ''%%3 + 1.2%%''
 +
 +===== Type coercion =====
 +
 +  * **type coercion**: the implicit (and automatic) conversion of one type to another.
 +
 +''%%3 + 1.2%%'' -> ''%%3.0 + 1.2%%'' -> 4.2
 +
 +===== Type conversion =====
 +
 +  * **type conversion**: explicitly converting one data type to another.
 +
 +<code python>
 +>>> str(42)    # convert into to string
 +'42'
 +>>> int('42' # convert string to int
 +42
 +>>> int(3.9)   # convert float to int
 +3
 +>>> float('99') # convert int to float
 +99.0
 +>>> int('99.9') # nope
 +Traceback (most recent call last):
 +  File "<stdin>", line 1, in <module>
 +ValueError: invalid literal for int() with base 10: '99.9'
 +</code>
 +===== Example: Temperature Conversion Program =====
 +
 +TempConversion.py
 +
 +<code python>
 +# Temperature Conversion Program (Fahrenheit to Celsius)
 +
 +# This program will convert a temperature entered in Fahrenheit
 +# to the equivalent degrees in Celsius
 +
 +# program greeting
 +print('This program will convert degrees Fahrenheit to degrees Celsius')
 +
 +# get temperature in Fahrenheit
 +fahrenheit = float(input('Enter degrees Fahrenheit: '))
 +
 +# calc degrees Celsius
 +celsius = (fahrenheit - 32) * 5 / 9
 +
 +# output degrees Celsius
 +print(fahrenheit, 'degrees Fahrenheit equals',
 +       format(celsius, '.1f'), 'degrees Celsius')
 +
 +</code>
  
python/dierbach/chapter_2_data_and_expressions.txt · Last modified: 2016/07/29 03:03 by mithat

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki