
diff -r 25b18b51be41 -r 2214b5dba4d4 day2/cheatsheet1.tex
--- a/day2/cheatsheet1.tex	Tue Dec 29 19:02:01 2009 +0530
+++ b/day2/cheatsheet1.tex	Tue Dec 29 19:25:11 2009 +0530
@@ -26,95 +26,152 @@
 \large{FOSSEE}
 \end{center}
 \section{Data types}
-Complex Numbers
+\subsection{int and float}
+A whole number is a \typ{int} variable.
 \begin{lstlisting}
-In []: c = 3+4j
-In []: abs(c)
+In []: a = 13
+In []: type(a)
+Out[]: <type 'int'>
+In []: b = -2
+In []: type(b)
+Out[]: <type 'int'>
+In []: c = 500000000
+In []: type(c)
+Out[]: <type 'int'>
+\end{lstlisting}
+A number with decimal is a \typ{float}.
+\begin{lstlisting}
+In []: p = 3.141592
+In []: type(p)
+Out[]: <type 'float'>
+\end{lstlisting}
+\subsection{Complex Numbers}
+\begin{lstlisting}
+In []: c = 3+4j  #coeff of j specifies imaginary part
+In []: abs(c) #absolute value of complex number
 Out[]: 5.0
-In []: c.imag
+In []: c.imag #accessing imaginary part of c
 Out[]: 4.0
-In []: c.real
+In []: c.real #accessing real part of c
 Out[]: 3.0
 \end{lstlisting}
-Boolean
+\newpage
+\subsection{Boolean}
 \begin{lstlisting}     
 In []: a = False
 In []: b = True
 In []: c = True
-In []: (a and b) or c
+In []: (a and b) or c #Boolean operations
 Out[]: True
 \end{lstlisting}
-Strings
+\textbf{Note:} Python is case sensitive language, \typ{True} is \typ{bool} type, but \typ{true} would be a variable. and hence following assignment fails:\\
+\typ{In []: a = true}\\
+\subsection{Strings}
   \begin{lstlisting}
-In []: w = "hello"
-In []: print w[0] + w[2] + w[-1]
-Out[]: hlo
-In []: len(w)
+In []: w = "hello" #w is string variable
+In []: print w[1]
+Out[]: e
+In []: print w[-1] #last character of string
+Out[]: o
+  \end{lstlisting}
+\textbf{Note:} For a string variable, individual elements can be accessed using indices.\\
+\textbf{Note:} All slicing and striding operations works with strings as well.
+  \begin{lstlisting}
+In []: len(w) #function to calculate length of string
 Out[]: 5
 In []: w[0] = 'H' # ERROR: Strings are immutable 
   \end{lstlisting}
-String methods
+\subsection{String methods}
   \begin{lstlisting}
 In []: a = 'Hello World' 
 In []: a.startswith('Hell') # 'a' starts with 'Hell'
+Out[]: True
 In []: a.endswith('ld') # 'a' ends with 'ld'
+Out[]: True
 In []: a.upper() # all characters to upper case
+Out[]: 'HELLO WORLD'
 In []: a.lower() # all characters to lower case
+Out[]: 'hello world'
 In []: ''.join(['a', 'b', 'c'])
 Out[]: 'abc'
   \end{lstlisting}
-String formatting
+\typ{join} function joins all the list member passed as argument with the string it is called upon. In above case it is \typ{empty string}.
+\begin{lstlisting}
+In []: ' '.join(['a','b','c'])
+Out[]: 'a b c'  
+In []: ','.join(['a','b','c'])
+Out[]: 'a,b,c'
+\end{lstlisting}
+\subsection{String formatting}
   \begin{lstlisting}
-In []: x, y = 1, 1.234
+In []: x, y = 1, 1.234 #initializing two variables
 In []: 'x is %s, y is %s' %(x, y)
 Out[]: 'x is 1, y is 1.234'
   \end{lstlisting}
-Arithmetic Operators
+\textbf{Note:} \typ{\%s} used in above formatting specifies \typ{'str'} representation of variables. One can also try:\\
+\typ{\%d} for \typ{int} representation\\
+\typ{\%f} for \typ{float} representation
+\begin{lstlisting}
+In []: 'x is %f, y is %f' %(x, y)
+Out[]: 'x is 1.000000, y is 1.234000'
+
+In []: 'x is %d, y is %d' %(x, y)
+Out[]: 'x is 1, y is 1'
+\end{lstlisting}
+\subsection{Arithmetic Operators}
   \begin{lstlisting}
 In []: 45 % 2 # Modulo operator
 Out[]: 1
-In []: 1234567891234567890 ** 3 # Power
+In []: 5 ** 3 # Power
+Out[]: 125
 In []: a = 5
-In []: a += 1
+In []: a += 1 #increment by 1, translates to a = a + 1
 In []: a *= 2
   \end{lstlisting}
-String Operations
+\subsection{String Operations}
 \begin{lstlisting}
 In []: s = 'Hello'
 In []: p = 'World'
-In []: s + p 
+In []: s + p  #concatenating two strings
 Out[]: 'HelloWorld'
-In []: s * 4
+In []: s * 4  #repeat string for given number of times
 Out[]: 'HelloHelloHelloHello'
 \end{lstlisting}
-Relational and Logical Operators
+\subsection{Relational and Logical Operators}
 \begin{lstlisting}
-In []: p, z, n = 1, 0, -1
-In []: p == n
+In []: p, z, n = 1, 0, -1 #initializing three variables
+In []: p == n  #equivalency check
 Out[]: False
-In []: p >= n
+In []: p >= n 
 Out[]: True
-In []: n < z < p
+In []: n < z < p #finding largest number among three
 Out[]: True
 In []: p + n != z
 Out[]: False
 \end{lstlisting}
-Built-ins
+\subsection{Built-ins}
 \begin{lstlisting}
-In []: int(17 / 2.0)
+In []: int(17 / 2.0) #converts arguments to integer
 Out[]: 8
-In []: float(17 / 2)
+In []: float(17 / 2) #argument is already integer(17 / 2 = 8)
 Out[]: 8.0
-In []: str(17 / 2.0)
+In []: str(17 / 2.0) #converts to string
 Out[]: '8.5'
-In []: round( 7.5 )
+In []: round( 7.5 ) 
 Out[]: 8.0
 \end{lstlisting}
-Console Input
+\subsection{Console Input}
 \begin{lstlisting}
 In []: a = raw_input('Enter a value: ')
 Enter a value: 5
 \end{lstlisting}
+\textbf{Note:} \typ{raw_input} always returns string representation of user input and hence:
+\begin{lstlisting}
+In []: type(a)
+Out[]: <type 'str'>
+\end{lstlisting}
+To get integer or floating point of this input, one has to perform type conversion:\\
+\typ{In []: b = int(a)}
 \section{Conditionals}
 \typ{if}
 \begin{lstlisting}
@@ -133,4 +190,10 @@
 In []: a = raw_input('Enter number(Q to quit):')
 In []: num = int(a) if a != 'Q' else 0
 \end{lstlisting}
+Above statement can be read as ``num is int of a, if a is not equal to 'Q', otherwise 0 ``
+\section{Links and References}
+\begin{itemize}
+  \item Reference manual to describe the standard libraries  that are distributed with Python is available at \url{http://docs.python.org/library/} 
+  \item To read more on strings refer to: \\ \url{http://docs.python.org/library/stdtypes.html#string-methods}
+\end{itemize}
 \end{document}




