```python
import discretize
```

```python
mesh = discretize.TensorMesh([3, 4])
```

```python
mesh
```

    TensorMesh
    12 cells

    MESH EXTENT
    CELL WIDTH
    FACTOR

    dir
    nC
    min
    max
    min
    max
    max

    x
    3
    0.00
    1.00
    0.33
    0.33
    1.00

    y
    4
    0.00
    1.00
    0.25
    0.25
    1.00

# Rich Output

In Python, objects can declare their textual representation using the `__repr__` method.  IPython expands on this idea and allows objects to declare other, rich representations including:

* HTML
* JSON
* PNG
* JPEG
* SVG
* LaTeX

A single object can declare some or all of these representations; all are handled by IPython's *display system*. This Notebook shows how you can use this display system to incorporate a broad range of content into your Notebooks.

## Basic display imports

The `display` function is a general purpose tool for displaying different representations of objects. Think of it as `print` for these rich representations.

```python
# display is injected in default namespace, but it's a good idea to be explicit.
from IPython.display import display
```

A few points:

* Calling `display` on an object will send **all** possible representations to the Notebook.
* These representations are stored in the Notebook document.
* In general the Notebook will use the richest available representation.

If you want to display a particular representation, there are specific functions for that:

```python
from IPython.display import (
    display_pretty, display_html, display_jpeg,
    display_png, display_json, display_latex, display_svg
)
```

## Images

To work with images (JPEG, PNG) use the `Image` class.

```python
from IPython.display import Image
```

```python
i = Image(filename='./images/ipython-logo.png')
```

Returning an `Image` object from an expression will automatically display it:

```python
i
```

Or you can pass an object with a rich representation to `display`:

```python
display(i)
```

An image can also be displayed from raw data or a URL.

```python
Image(url='http://python.org/images/python-logo.gif')
```

SVG images are also supported out of the box.

```python
from IPython.display import SVG
SVG(filename='./images/python-logo.svg')
```

### Embedded vs non-embedded Images

By default, image data is embedded in the notebook document so that the images can be viewed offline. However it is also possible to tell the `Image` class to only store a *link* to the image. Let's see how this works using a webcam at Berkeley.

```python
from IPython.display import Image
img_url = 'http://www.lawrencehallofscience.org/static/scienceview/scienceview.berkeley.edu/html/view/view_assets/images/newview.jpg'

# by default Image data are embedded
Embed      = Image(img_url)

# if kwarg `url` is given, the embedding is assumed to be false
SoftLinked = Image(url=img_url)

# In each case, embed can be specified explicitly with the `embed` kwarg
# ForceEmbed = Image(url=img_url, embed=True)
```

Here is the embedded version. Note that this image was pulled from the webcam when this code cell was originally run and stored in the Notebook. Unless we rerun this cell, this is not todays image.

```python
Embed
```

Here is today's image from same webcam at Berkeley, (refreshed every minutes, if you reload the notebook), visible only with an active internet connection, that should be different from the previous one. Notebooks saved with this kind of image will be smaller and always reflect the current version of the source, but the image won't display offline.

```python
SoftLinked
```

Of course, if you re-run this Notebook, the two images will be the same again.

## HTML

Python objects can declare HTML representations that will be displayed in the Notebook. If you have some HTML you want to display, simply use the `HTML` class.

```python
from IPython.display import HTML
```

```python
s = """<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>"""
```

```python
h = HTML(s)
```

```python
display(h)
```

Header 1
Header 2

row 1, cell 1
row 1, cell 2

row 2, cell 1
row 2, cell 2

You can also use the `%%html` cell magic to accomplish the same thing.

```python
%%html
<table>
<tr>
<th>Header 1</th>
<th>Header 2</th>
</tr>
<tr>
<td>row 1, cell 1</td>
<td>row 1, cell 2</td>
</tr>
<tr>
<td>row 2, cell 1</td>
<td>row 2, cell 2</td>
</tr>
</table>
```

Header 1
Header 2

row 1, cell 1
row 1, cell 2

row 2, cell 1
row 2, cell 2

## LaTeX

The IPython display system also has builtin support for the display of mathematical expressions typeset in LaTeX, which is rendered in the browser using [MathJax](http://mathjax.org).

You can pass raw LaTeX test as a string to the `Math` object:

```python
from IPython.display import Math
Math(r'F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx')
```

$\displaystyle F(k) = \int_{-\infty}^{\infty} f(x) e^{2\pi i k} dx$

With the `Latex` class, you have to include the delimiters yourself.  This allows you to use other LaTeX modes such as `eqnarray`:

```python
from IPython.display import Latex
Latex(r"""\begin{eqnarray}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{eqnarray}""")
```

Or you can enter LaTeX directly with the `%%latex` cell magic:

```latex
%%latex
\begin{align}
\nabla \times \vec{\mathbf{B}} -\, \frac1c\, \frac{\partial\vec{\mathbf{E}}}{\partial t} & = \frac{4\pi}{c}\vec{\mathbf{j}} \\
\nabla \cdot \vec{\mathbf{E}} & = 4 \pi \rho \\
\nabla \times \vec{\mathbf{E}}\, +\, \frac1c\, \frac{\partial\vec{\mathbf{B}}}{\partial t} & = \vec{\mathbf{0}} \\
\nabla \cdot \vec{\mathbf{B}} & = 0
\end{align}
```

## Audio

IPython makes it easy to work with sounds interactively. The `Audio` display class allows you to create an audio control that is embedded in the Notebook. The interface is analogous to the interface of the `Image` display class. All audio formats supported by the browser can be used. Note that no single format is presently supported in all browsers.

```python
from IPython.display import Audio
Audio(url="http://www.nch.com.au/acm/8k16bitpcm.wav")
```

<audio  controls="controls" >
    <source src="http://www.nch.com.au/acm/8k16bitpcm.wav" type="audio/x-wav" />
    Your browser does not support the audio element.
</audio>

A NumPy array can be auralized automatically. The `Audio` class normalizes and encodes the data and embeds the resulting audio in the Notebook.

For instance, when two sine waves with almost the same frequency are superimposed a phenomena known as [beats](https://en.wikipedia.org/wiki/Beat_%28acoustics%29) occur. This can be auralised as follows:

```python
import numpy as np
max_time = 3
f1 = 220.0
f2 = 224.0
rate = 8000
L = 3
times = np.linspace(0,L,rate*L)
signal = np.sin(2*np.pi*f1*times) + np.sin(2*np.pi*f2*times)

Audio(data=signal, rate=rate)
```

<audio  controls="controls" >
    <source src="data:audio/wav;base64,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" type="audio/wav" />
    Your browser does not support the audio element.
</audio>

## Video

More exotic objects can also be displayed, as long as their representation supports the IPython display protocol.  For example, videos hosted externally on YouTube are easy to load:

```python
from IPython.display import YouTubeVideo
YouTubeVideo('sjfsUzECqK0')
```

Using the nascent video capabilities of modern browsers, you may also be able to display local
videos.  At the moment this doesn't work very well in all browsers, so it may or may not work for you;
we will continue testing this and looking for ways to make it more robust.

The following cell loads a local file called  `animation.m4v`, encodes the raw video as base64 for http
transport, and uses the HTML5 video tag to load it. On Chrome 15 it works correctly, displaying a control bar at the bottom with a play/pause button and a location slider.

```python
from IPython.display import HTML, Video
from base64 import b64encode
video = open("images/animation.m4v", "rb").read()
video_encoded = b64encode(video).decode('ascii')
video_tag = '

## External sites

You can even embed an entire page from another site in an iframe; for example this is today's Wikipedia
page for mobile users:

```python
from IPython.display import IFrame
IFrame('http://jupyter.org', width='100%', height=350)
```

## Rich output and security

The IPython Notebook allows arbitrary code execution in both the IPython kernel and in the browser, though HTML and JavaScript output. More importantly, because IPython has a JavaScript API for running code in the browser, HTML and JavaScript output can actually trigger code to be run in the kernel. This poses a significant security risk as it would allow IPython Notebooks to execute arbitrary code on your computers.

To protect against these risks, the IPython Notebook has a security model that specifies how dangerous output is handled. Here is a short summary:

* When you run code in the Notebook, all rich output is displayed.
* When you open a notebook, rich output is only displayed if it doesn't contain security vulberabilities, ...
* ... or if you have trusted a notebook, all rich output will run upon opening it.

A full description of the IPython security model can be found on [this page](http://ipython.org/ipython-doc/dev/notebook/security.html).


# RULES FOR WRITING SOFTWARE WITH EXAMPLES

This notebook describes and motivates the rules for writing software.

```python
import numpy as np
import pandas as pd
```

# Handling dependencies
You must ensure that any packages (dependencies) required for your code to run are installed.

Installing Tellurium
``!pip install -q tellurium``

Now we can import tellurium
``import tellurium as te``

```python
# First code cell in a notebook contains all installs
!pip install -q tellurium
!pip install -q simplesbml
!pip install -q sympy
```

```python
# Second code cell has all imports
import pandas as pd     # DataFrames and Series
import numpy as np      # Numerical methods
import simplesbml       # Access to reaction network metadata
import sympy            # Symbolic algebra
import tellurium as te  # Simulations
```

# Use functions instead of scripts
Whenever possible, use functions instead of scripts.
This is because functions facilitate reuse, and functions are testable.
Never use copy and paste for reuse

```python
import numpy as np
# Script that tests if a number is prime
number = 12
is_prime = True
for factor in range(2, int(np.sqrt(number))):
    if number % factor == 0:
        is_prime = False
if is_prime:
    answer = "yes"
else:
    answer = "no"
print("Is %d prime? %s" % (number, answer))
```

    Is 12 prime? no

## Why aren't scripts enough?

Testing the script is cumbersome -- must try and evaluate many values.

Difficult to reuse script. How embed this in code that prints the first $N$ prime numbers?

## Making a script into a function

Steps
1. Determine the interface - inputs and outputs
1. Write the ``def`` statement
1. Document the function
1. Copy the script into the function body.
1. Add the return statement.
1. Delete unneeded code (e.g., ``print``)

The above script can be made into the function ``checkPrime``.

```python
def checkPrime(number):
    """
    Determines if the number is a prime.

    Parameters
    ----------
    number: int

    Returns
    -------
    bool
    """
    is_prime = True
    for factor in range(2, int(np.sqrt(number)) + 1):
        if number % factor == 0:
            is_prime = False
    return is_prime
```

```python
answers = ["Yes", "No"]
number = 24
print("Is %d prime? %s" % (number, checkPrime(number)))
```

    Is 24 prime? False

Now we can use ``checkPrime`` as a building block to create other functions.

```python
# Find the first N primes
def findPrimes(count):
    """
    Finds the count of primes indicated.

    Parameters
    ----------
    count: int

    Returns
    -------
    list-int
    """
    results = []
    number = 1
    while True:
        if len(results) >= count:
            break
        number += 1
        if checkPrime(number):
            results.append(number)
    return results
```

```python
findPrimes(10)
```

    [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

## Exercise

Write a function that finds all primes less than a given number and calls ``findPrimes``.

# Names of variables and functions

Use meaningful names for functions are variables. Function names should be verbs.
For example, a function that calculates a fast Fourier transform might be named calcFFT.
A bad name for this function would be the single letter f.

Why did we name the function ``checkPrimes`` instead of ``f``?

```python
# Re-write this function according the the rules for variable and function names.
# Show that you get the same result as the original code.
def p(n):
    r = 1
    for i in range(len(n)):
        r *= n[i]
    return r
```

```python
p([4, 3, 2])
```

    24

# Use named constants
Constants used in the notebook should have a name in all capital letters. For example, use ``PI``, not ``pi``.
(By definition, a constant is a variable that is assigned a value only once.)
Named constants should also be used for dataframes.
For example, instead of ``df["mean"]`` use ``df[MEAN]``, where ``MEAN = "mean"`` appears elsewhere.

```python
MODEL = """
J0: $X -> A; k1
J1: A -> B; k2*A
X =10
A = 0
B = 0
k1 = 1
k2 =1
"""
```

```python
# Get data from running the simulation
rr = te.loada(MODEL)
data = rr.simulate(0, 5, 100, ["time", "[A]", "[B]", "J1"])
data_df = pd.DataFrame(data, columns = data.colnames)
data_df.head(2)
```

      time
      [A]
      [B]
      J1

      0
      0.000000
      0.000000
      0.000000
      0.000000

      1
      0.050505
      0.049251
      0.001254
      0.049251

```python
# See that mass action kinetics are present
checks_ser = data_df["J1"] == data_df["[A]"]
checks_ser.head(3)
```

    0    True
    1    True
    2    True
    dtype: bool

```python
# Check the mass action rate law for J1
assert(sum(data_df["J1"] == data_df["[A]"]) == len(data_df))
```

# Document your functions

After the function definition, you should have comment lines that specify:
* What the function does
* The data types of each input and output (including names of columns if an input is a dataframe)

# Functions must have tests

You must have at least one test for each function that shows that the major code paths work correctly.
In a Jupyter notebook, the tests should follow the function definition in the code cell in which the function is defined.
The test will use the python assert statement to evaluate a boolean condition that constitutes the test.
For python modules, you will create a separate test file that uses the python unittest framework.

# Example - Symbolic Linearization of the Reaction Network

The reaction network is approximated by the linearization $\dot{{\bf x}} = {\bf A} {\bf x}$,
where ${\bf x}$ is the column vector of species concentrations and ${\bf A} = {\bf N} {\bf J}$,
where ${\bf N}$ is the stoichiometry matrix and ${\bf J}$ is the Jacobian of the reaction rate vector.

Tellurium provides access to the numerical ${\bf A}$ matrix evaluated at a specific time in the simulation (by default, the end of the simulation). From this, we can make inferences about the nature of fixed points.
However, this applies only to the parameter values and initial conditions used in that simulation.
If we want to make broad statements about a model, we'd like to reason from the symbolic Jacobian, the Jacobian in terms of the
parameters and species in the model.

## Why Symbolic Linearization

Consider the model below.
We want to determine if there are *any* values of the parameters for which the model becomes unstable or oscillates.

```python
MODEL = """
$X -> A; k1
2A -> B; k2*A^2
B -> C; k3*B
B + 2C ->; k4*B*C
X = 1
A = 0;
B = 0
C = 0
k1 = 1;
k2 = 1;
k3 = 1;
k4 = 1
"""
rr = te.loada(MODEL)
rr.simulate()
rr.plot()
```

Roadrunner can calculate the ${\bf A}$ matrix numerically.

```python
AMat = rr.getReducedJacobian()
AMat
```

                A,         B,         C
    A [[ -2.82842,         0,         0],
    B  [  1.41421,  -1.46676, -0.346645],
    C  [        0, 0.0664758, -0.693291]]

The eigenvalues lie on the diagonal of the matrix; they are negative and real. So in this case, we have a non-oscillating, stable system.
But is this true for all feasible values of the parameters (which must always be positive)?

## Calculating Symboic Linearizations

To obtain the symbolic ${\bf A}$ matrix
requires two additional python packages.
* ``simplesbml`` provides access to the symbols in the model, including the rates laws.
* ``sympy`` is a symbolic algebra package for python

```python
# Create a SimpleSBML representation of the roadrunner model
simple_model = simplesbml.loadSBMLStr(rr.getSBML())
```

```python
# The following creates sympy symbols for the float species and parameters in the model
species = simple_model.getListOfFloatingSpecies()  # list of the names of floating species as strings
parameters = simple_model.getListOfParameterIds()  # list of the names of the parameters
symbols = list(species)
symbols.extend(parameters)                  # List of all the symbols we want to create
stmt = "%s = sympy.symbols(%s)" % (", ".join(symbols), str(symbols))  # Python statement to create the symbols
exec(stmt, globals(), locals())                                  # Execute the python statement
```

```python
# Construct a list of the rate laws
rate_laws = []
for id in simple_model.getListOfReactionIds():
    rate_laws.append(simple_model.getRateLaw(id))
#
rate_laws
```

    ['k1', 'k2 * pow(A, 2)', 'k3 * B', 'k4 * B * C']

Elements of the rate laws are strings.
To make them into expressions, we use the python ``eval`` function.

```python
# Construct the Jacobian of the rate vector using symbolic algebra
vector = sympy.Matrix([eval(l) for l in rate_laws])
jacobian = vector.jacobian(species)
jacobian
```

$\displaystyle \left[\begin{matrix}0 & 0 & 0\\2 A k_{2} & 0 & 0\\0 & k_{3} & 0\\0 & C k_{4} & B k_{4}\end{matrix}\right]$

Next, we create a sympy version of the stoichiometry matrix.

```python
stoichiometryMat = sympy.Matrix(rr.getFullStoichiometryMatrix())
stoichiometryMat
```

$\displaystyle \left[\begin{matrix}1.0 & -2.0 & 0.0 & 0.0\\0.0 & 1.0 & -1.0 & -1.0\\0.0 & 0.0 & 1.0 & -2.0\end{matrix}\right]$

We get the ${\bf A}$ matrix by multiplication.

```python
stoichiometryMat * jacobian
```

$\displaystyle \left[\begin{matrix}- 4.0 A k_{2} & 0 & 0\\2.0 A k_{2} & - 1.0 C k_{4} - 1.0 k_{3} & - 1.0 B k_{4}\\0 & - 2.0 C k_{4} + 1.0 k_{3} & - 2.0 B k_{4}\end{matrix}\right]$

Analyzing this matrix, we see that the eigenvalues are the elements of the diagonal,
and all of these elements are real and negative (since species concentrations and parameters are non-negative).
Thus, this network will *always* converge and will *never* oscillate.

## Converting the code fragments into reproducible, reusable software

Requirements
1. Define the interface to the user
1. Create functional components
1. Write tests for the components

Fall_2021/assignments/Rules for Writing Software With Examples.ipynb


#### Excellent Tutorials Series (ETS)
#### Author: Thomas K Torku
#### Topic: Overview

`The content of this tutorial includes`
 1. Variables and Data Types
   - integer
   - floats
   - boolean
   - strings
 2. Data structures: lists, dictionary, tuples and arrays
 3. if, for control blocks
 4. Functions
 5. Reading and Writing files
 6. Modules

**`There will be exercises at the end of each concept and project for each lesson`**

`Before we begin this tutorial lets walk through some basic python installation steps`
  1. Download any latest python interpreter from the internet. __[Anaconda](https://www.anaconda.com/products/individual)__
  2. Alternatively you can install using Terminal.
  3. Follow the installation instructions therein.
  4. We are going to use JupyterLab in this tutorial.
  5. I will walk you through the Lab environment.__[Latex](https://www.anaconda.com/products/individual)__
  6. References
      - __[Starting out with Python](https://www.pearson.com/us/higher-education/program/Gaddis-My-Lab-Programming-with-Pearson-e-Text-Access-Card-for-Starting-out-with-Python-5th-Edition/PGM2889368.html)__

### Variables

```python
stud_name ="It's my birth day"
d ="""It's my friends's "birth day" tomorrow"""

```

`They are used to temporalily store values of objects in the computer memory` They include the following:

In python, **An expression is a piece of code that returns a value**
Any expression within quotation is treated as a string. A few notes about variables in python
 - It  is case sensitive
 - By standard approach, long variable names involve some underscore
   - Variable name like my_grade, vote_yes
   - Variable names should not start with capitals
 - They can be overrided within the code
 - There two types of variables:
   - Numeric Variables
     - Integers
     - Floats or decimals
   - Non-numeric Variables
     - String
     - Bolean

```python
print('This is an expression')
print('Value')
print('&&&'* 2)  #Returns twice of &&&
```

    This is an expression
    Value
    &&&&&&

```python
g =10    #integer
g1 =10.2 #float or decimal representation
g2 = 'tom' #string
g3 =True  #Bolean - true or false
my_grade ='A' #string character
print('Integer is', g)
print('Float is', g1)
print('String is', g2)
print('Bolean is', g3)
print('My Grade in Deep Learning is', my_grade)
```

    Integer is 10
    Float is 10.2
    String is tom
    Bolean is True
    My Grade in Deep Learning is A

```python
g =11
print('Variables can be overrided', g)
```

    Variables can be overrided 11

#### Exercise 1
- `Write a program that identifies the names of variables in this exercise.
We want to admit student named Priscilla Nyarkoh. She is 40 years old and she is a new student
Identify all the variables and check if she is a new student or not.`

### Built-in Functions

Python has built-in functions that helps to program and write expressions
- `print() statment`: used to output values of expressions onto the console
- `input() statment`: used to accept or recieve objects from the user from keyboard
- `Python takes every statement on the console as string so it must be converted to other forms`
- `int() stament`: converts a string to integer
- `float () statement`: converts a string  to decimal
- `bool () statement`: converts a string to True or False
- `type () statement`: to know the type of varaiable
- `str() statement`: to convert to string

#### Exercise 2
- `Write a program that ask two questions: a student's name and hobby. Then print the message
    'Thomas likes Python Program'`

```python
stud_name =input('Please enter name ')
hobb =input('Please enter hobby ')
print(stud_name + ' likes ' +hobb )
```

    Please enter name  Thomas Torku
    Please enter hobby  Python Program

    Thomas Torku likes Python Program

#### Exercise 3
- `Write a program that caculates your age after asking for your birth year`

```python
birth_yr =int(input('Enter birth year'))
#formula
age =2020 -birth_yr
print(age)
```

    Enter birth year 1989

    31

#### Exercise 4
- `Write a program that ask a user's distance in miles and convert to
kilometers and print the output on terminal`

### More on Variables

```python
type(g)
```

    int

```python
type(g3)
```

    bool

### Examples

```python
#Performing Calculations
a=9
b =4
c =a+b #addition
d =a-b #subtractiom
e =a*b #multiplication
f =a%b #reminder- modulus
k =a**2 #power
print(c, d, e, f, k)
```

    13 5 36 1 81

```python
#Calculate the discount percent
price =float(input('Enter the price '))
#Calculate the percent 20%
dis =price*0.2
#Calculate the sale price
sale_price =price -dis
print('The sale is: %.2f '%(sale_price))
```

    Enter the price  10100.34

    The sale is: 8080.27

### How to code mathematical formula in Python
  - \begin{align*} P =\dfrac{F}{(1+r)^n}\end{align*}
  - P: present value
  - F: Future value
  - r: rate of interest
  - n: number of years
<!--   - \begin{equation*} I =PRT \end{equation*} -->

```python
f_val =float(input('Enter the future value '))
rate =float(input('Enter the rate '))
yr =int(input('Enter years '))
p =f_val/(1+rate)**yr
print('The Present value is $%.2f '%(p))
```

    Enter the future value  10101.56
    Enter the rate  0.03
    Enter years  5

    The Present value is $8713.69

### Escape Characters
- `\n`: advancing to the next charcter
- `\t`: skip over to the next tab

```python
print('This is my first program\n')
print('This is my tab \t and we are advancing to new line\n')
py, xy, zy =34.56798, 25.6787, 10.4908
print('**************************************************************************\n')
print('First Number %.3f \t Second Number %.3f \t Third Number %.3f\n'%(py, xy, zy) )
print('***************************************************************************\n')
```

    This is my first program

    This is my tab 	 and we are advancing to new line

    **************************************************************************

    First Number 34.568 	 Second Number 25.679 	 Third Number 10.491

    ***************************************************************************

### Formatting Numbers and strings
 - `%d`: format for integers
 - `%f`: format for float
 - `%s`: format for string

```python
day =input('Day of the month')
sales =float(input('Sales for the year'))
print('The day %d which is  %s and sales is: $%.2f'%(2, day, sales))
# print('The day of the month %d is %s and sales $.2%f'.format(2, day, sales))
```

    Day of the month 2
    Sales for the year 2378.96

    The day 2 which is  2 and sales is: $2378.96

### Lesson1 Exercises
1. Write a program that displays
   - Your name
   - Your address with city, state and ZIP
   - Your Telephone Number
   - Your college Major
2. A company has determined that its annual profit is typically 23 percent of total sales.
    Write a program that ask the user to enter the projected amount of total sales. And then displays the profit that will be made form that amount.
3. Assuming there are no accidents or delays, the distance that a car travels down the interstate can be calculated with the formula \begin{align} Distance =Speed \times Time\end{align}. The car is traveling at 60 miles per hour. Write a program that displays the following.
   - The distance the car will travel in $5$ hours.
   - The distance the car will travel in $8$ hours.
   - The distance the car will travel in $12$ hours.

### More On String Characters

```python
##For long strings
long_string ='''This is my story. This is my song. I am rejoicing and dancing'''
print(long_string)
```

    This is my story. This is my song. I am rejoicing and dancing

```python
## Python is row-based indexing.
```

##### Indexing on String

```python
print(long_string[0])
print(long_string[1:-1]) #print everything except the first and last strings
print(long_string[4:9])
print(long_string[:])
print(long_string[1:])
print(long_string[-2]) #last but one string
```

    T
    his is my story. This is my song. I am rejoicing and dancin
     is m
    This is my story. This is my song. I am rejoicing and dancing
    his is my story. This is my song. I am rejoicing and dancing
    n

```python
### Formatted Strings
tom1 ='science'
tom2 ='problems'
ta =4.5
tb =6.2
# tom =f'Science helps to solve problems'
print('{} helps to solve {}'.format(tom1, tom2))
print('The sum of two numbers {:.1f} and {:.1f} is {:.1f}'.format(ta, tb,ta+tb))
#{} is a placeholder that receives the value of the variable
```

    science helps to solve problems
    The sum of two numbers 4.5 and 6.2 is 10.7

#### String Methods

- `len()`: General purpose method for calculating length of a string or any variable
- `.upper()`: converting to upper cases
- `.lower`: converting to lower cases
- `.find()`: finding the index of the first occurence of a character within a string
<!-- - `.title()`: -->
- `in operator`: search for stuff within the string
- `.replace()`: replace string with a some characters
- `.split()`: splits string into list of words

```python
'stoy' in long_string
```

    False

```python
print(len(long_string))  #get the length of the entire string
print(long_string.upper())
print(long_string.lower())
print(long_string.find('T')) #first encounter of T
print(long_string.find('dancing'))
print(long_string.title())
print(long_string.replace('rejoicing', 'smiling'))
print(long_string.replace('r', 'g'))
print(long_string.split())
```

    61
    THIS IS MY STORY. THIS IS MY SONG. I AM REJOICING AND DANCING
    this is my story. this is my song. i am rejoicing and dancing
    0
    54
    This Is My Story. This Is My Song. I Am Rejoicing And Dancing
    This is my story. This is my song. I am smiling and dancing
    This is my stogy. This is my song. I am gejoicing and dancing
    ['This', 'is', 'my', 'story.', 'This', 'is', 'my', 'song.', 'I', 'am', 'rejoicing', 'and', 'dancing']

#### More on Arithmetic Operations

```python
##Augmented Assignment operator
x =10  #original x
# x =x +3
# print(x)
```

```python
x +=3
print(x)
```

    22

```python
x-=3
print(x)
```

    13

```python
x *=3
print(x)
```

    39

```python
x /=3
print(x)
```

    13.0

#### Short Exercise

```python
## What will this code display
animal ='Tiger'
animal.find('e')
```

    3

```python
## What will this code display
mystr ='abdcdefg'
mystr[2:5]
```

    'dcd'

```python
ch ='a'
ch2 =ch.upper()
print(ch, ch2)
```

    a A

### Homework

- 1. Write a program to demonstrate how split method is used
    - mystring ='one two three four'
    - date_string ='3/26/2008'

```python
mystring ='one two three four'
date_string ='3>26>2008'
mystring.split()

```

    ['one', 'two', 'three', 'four']

```python
date_string.split('>')
```

    ['3', '26', '2008']

```python
## split this
mystrg ='cookies>milk>fudge>cake>ice cream'
mystrg.split('>')
```

    ['cookies', 'milk', 'fudge', 'cake', 'ice cream']

```python

```

```python

```

```python

```