From a2731a5624935fc28cbd8ad919fd92945e203f62 Mon Sep 17 00:00:00 2001 From: Sivasubramanyam A Date: Mon, 28 Sep 2015 18:58:48 +0530 Subject: [PATCH 1/7] Add Python Workshop --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index a992cb2..dbb91fe 100644 --- a/index.html +++ b/index.html @@ -26,7 +26,8 @@

RMK Coding Club

  • Home
  • Problems
  • Presentations
  • -
  • Contributors
  • +
  • Python Workshop
  • + From 345c46dc736649b9feb7e467ec9f4f23c5ee18c8 Mon Sep 17 00:00:00 2001 From: Sivasubramanyam A Date: Mon, 28 Sep 2015 18:59:25 +0530 Subject: [PATCH 2/7] Add Python Workshop --- presentations.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/presentations.html b/presentations.html index 7ddfb79..824c2a4 100644 --- a/presentations.html +++ b/presentations.html @@ -25,7 +25,7 @@

    RMK Coding Club

  • Home
  • Problems
  • Presentations
  • -
  • Contributors
  • +
  • Python Workshop
  • From 76b4783f45c0e5bb583ad394cc622f3af679ebd8 Mon Sep 17 00:00:00 2001 From: Sivasubramanyam A Date: Mon, 28 Sep 2015 18:59:45 +0530 Subject: [PATCH 3/7] Update archive.html --- archive.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/archive.html b/archive.html index 15bd665..8cd9a46 100644 --- a/archive.html +++ b/archive.html @@ -25,7 +25,7 @@

    RMK Coding Club

  • Home
  • Problems
  • Presentations
  • -
  • Contributors
  • +
  • Python Workshop
  • From b486659dce210c277b03da119c6dab6d99a062b5 Mon Sep 17 00:00:00 2001 From: Sivasubramanyam A Date: Mon, 28 Sep 2015 19:02:32 +0530 Subject: [PATCH 4/7] Create python.html --- python.html | 1814 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1814 insertions(+) create mode 100644 python.html diff --git a/python.html b/python.html new file mode 100644 index 0000000..da22f9f --- /dev/null +++ b/python.html @@ -0,0 +1,1814 @@ + + + + +Python-Workshop + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    +
    +
    +

    Workshop on the basics of Python

    +
    +
    +
    +
    +
    +
    +
    +
    +
      +
    • Python is an interpreted, high level language.
    • +
    • Interpreted - No compilation.
    • +
    • Extremely powerful and easy to understand.
    • +
    • So many features - The Swiss knife of programming.
    • +
    • Used by Google, Youtube, NASA, AI companies, etc.
    • +
    + +
    +
    +
    +
    +
    +
    In [64]:
    +
    +
    +
    print "Hello, CSE!"
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    Hello, CSE!
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [62]:
    +
    +
    +
    a = 10
    +b = 5
    +print a, b
    +
    +a, b = b, a
    +print a, b
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    10 5
    +5 10
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    But what about int n??

    +
    +
    +
    +
    +
    +
    +
    +
    +

    No need to specify data types. Automatically recognises them

    + +
    +
    +
    +
    +
    +
    In [65]:
    +
    +
    +
    n = 10
    +
    +s = "Department of CSE"
    +
    +marks = [
    +    90, 82, 99, 97
    +]
    +
    +marksTuple = (
    +    90, 82
    +)
    +
    +regNos = {
    +    95: "Siva",
    +    116: "Vignesh",
    +    85: "Sagar"
    +}
    +
    +print type(n)
    +print type(s)
    +print type(marks)
    +print type(regNos)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    <type 'int'>
    +<type 'str'>
    +<type 'list'>
    +<type 'dict'>
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    int

    Use raw_input() for getting inputs.

    +

    eg.

    + +
    +
    +
    +
    +
    +
    In [66]:
    +
    +
    +
    testNo1 = raw_input()
    +testNo2 = raw_input()
    +
    +print testNo1 + testNo2
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    1
    +2
    +12
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Why ??

    +
    +
    +
    +
    +
    +
    +
    +
    +

    raw_input takes str arguments by default. Cast it to int when necessary.

    + +
    +
    +
    +
    +
    +
    In [67]:
    +
    +
    +
    testNo1 = int(raw_input())
    +testNo2 = int(raw_input())
    +
    +print testNo1 + testNo2
    +
    +#Subtraction, Multiplication     -> One line comment
    +"""
    +Division, Modulo have the same   -> Multiline comment
    +operators as that of other
    +languages like C
    +"""
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    2
    +3
    +5
    +
    +
    +
    + +
    Out[67]:
    + + +
    +
    '\nDivision, Modulo have the same   -> Multiline comment\noperators as that of other\nlanguages like C\n'
    +
    + +
    + +
    +
    + +
    +
    +
    +
    In [69]:
    +
    +
    +
    testNo1 ** testNo2
    +
    + +
    +
    +
    + +
    +
    + + +
    Out[69]:
    + + +
    +
    8
    +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    There is also a complex data type.

    + +
    +
    +
    +
    +
    +
    In [70]:
    +
    +
    +
    c1 = 3 + 5j
    +c2 = 5 - 8j
    +
    +print type(c1)
    +print c1 + c2
    +print c1 - c2
    +print c1 * c2
    +print c1 / c2
    +print c1 ** c2
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    <type 'complex'>
    +(8-3j)
    +(-2+13j)
    +(55+1j)
    +(-0.280898876404+0.550561797753j)
    +(-22828539.0958-11631178.0866j)
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Task

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Can you figure out how to do 10/3 in floating point?

    + +
    +
    +
    +
    +
    +
    +
    +
    +

    str

    +
    +
    +
    +
    +
    +
    In [71]:
    +
    +
    +
    s1 = "Hello"
    +s2 = "World" #can also be written as 'World'
    +
    +print s1 + ", " + s2 + "!"
    +print len(s1)
    +
    +print s1*3
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    Hello, World!
    +5
    +HelloHelloHello
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Task

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Write a Python code to take in your name and CGPA as inputs and print "Welcome to Python, nameHere. Your CGPA is CGPAHere"

    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    Welcome to Python, Siva. Your CGPA is 8.
    + +
    +
    +
    +
    +
    +
    +
    +
    +

    List

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Collection of elements. The elements can be of different data types.

    + +
    +
    +
    +
    +
    +
    In [73]:
    +
    +
    +
    l = [1, 2, 3]
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +
    +

    To access list elements, use

    + +
    +
    +
    +
    +
    +
    In [74]:
    +
    +
    +
    print l[0]
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    1
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Python strings are like a list of characters. So,

    + +
    +
    +
    +
    +
    +
    In [75]:
    +
    +
    +
    print s1[0] #Will give the first element
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    H
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    To add an element,

    + +
    +
    +
    +
    +
    +
    In [76]:
    +
    +
    +
    l.append(4)
    +
    +print l
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    [1, 2, 3, 4]
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Slicing a list - the cool part

    + +
    +
    +
    +
    +
    +
    In [77]:
    +
    +
    +
    dept = "Department of CSE"
    +
    +#Usage: list[startingIndex:endingIndex:increment]
    +print dept[4:8]
    +print dept[4:8:2]
    +
    +#Tricks
    +print dept[5:len(dept)-1] #will print from 5th element to the end
    +print dept[:8]            #print from the starting element to the 8th element
    +print dept[::-1]          #print the list in the reverse order
    +
    +
    +#Finding an element
    +pos = dept.index("CSE")
    +print "The word CSE is present at " + str(pos) + "th position"
    +
    +#Joining the elements of a list
    +joinExample = [
    +    '1', '2', '3'        #Be careful to use a list with str elements for join 
    +]
    +print ",".join(joinExample)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    rtme
    +rm
    +tment of CS
    +Departme
    +ESC fo tnemtrapeD
    +The word CSE is present at 14th position
    +1,2,3
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Using lists and str together

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Task

    +
    +
    +
    +
    +
    +
    In [78]:
    +
    +
    +
    sentence = "My name is Siva"
    +words = sentence.split() #or sentence.split(" ")
    +print words
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    ['My', 'name', 'is', 'Siva']
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Can you produce the following output using the list words?

    + +
    Siva is name My
    +

    Clue: Use join.

    + +
    +
    +
    +
    +
    +
    +
    +
    +

    Dictionary

    +
    +
    +
    +
    +
    +
    In [79]:
    +
    +
    +
    dictionary = {
    +    1: "one",
    +    2: "two",
    +    3: "three"
    +}
    +
    +print dictionary[1]
    +
    +print dictionary.values()
    +print dictionary.keys()
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    one
    +['one', 'two', 'three']
    +[1, 2, 3]
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Task

    Write a program that would get a number from a user between 20 and 30 and print it in words.

    +

    Example,

    + +
    input  -> 25
    +output -> twenty five
    +

    Clues:

    +
      +
    • Use raw_input() for input. Be careful with the data type.
    • +
    • Use a dictionary for storing the corresponding words for numbers.
    • +
    • A rough, dirty approach would be like,
    • +
    + +
    words = {
    +   1: "one"
    +   4: "four"
    +}
    +n = 24 #example
    +print "twenty " + words[int(str(n)[1])]
    +

    The above solution is too dirty. Python is all about code beauty. +Try and make it beautiful.

    + +
    +
    +
    +
    +
    +
    +
    +
    +

    Conditions and looping

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Python has no braces. Indentation is used instead.

    +

    Also, there is no switch.

    + +
    +
    +
    +
    +
    +
    In [80]:
    +
    +
    +
    if(True):
    +    print "Hello"
    +else:
    +    print "No"
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    Hello
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [81]:
    +
    +
    +
    a = 10
    +
    +if(a == 1):
    +    print "one"
    +elif(a == 2):
    +    print "two"
    +else:
    +    print "oops"
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    oops
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [82]:
    +
    +
    +
    i = 10
    +while(i > 0):
    +    print i
    +    i -=1
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    10
    +9
    +8
    +7
    +6
    +5
    +4
    +3
    +2
    +1
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [83]:
    +
    +
    +
    #usage: range(start, end, increment)
    +for x in range(10):
    +    print x
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    0
    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [84]:
    +
    +
    +
    a = ["one", "two", "three"]
    +for x in a:
    +    print x
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    one
    +two
    +three
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [1]:
    +
    +
    +
    #what's the difference?
    +for x in xrange(10):
    +    print x
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    0
    +1
    +2
    +3
    +4
    +5
    +6
    +7
    +8
    +9
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    List comprehension

    +
    +
    +
    +
    +
    +
    In [85]:
    +
    +
    +
    nos = [x for x in range(20)]
    +nos
    +
    + +
    +
    +
    + +
    +
    + + +
    Out[85]:
    + + +
    +
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
    +
    + +
    + +
    +
    + +
    +
    +
    +
    In [86]:
    +
    +
    +
    even = [x for x in range(20) if x%2 == 0]
    +even
    +
    + +
    +
    +
    + +
    +
    + + +
    Out[86]:
    + + +
    +
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    +
    + +
    + +
    +
    + +
    +
    +
    +
    In [87]:
    +
    +
    +
    strange_odd = [x+1 for x in range(20) if x%2 == 0]
    +strange_odd
    +
    + +
    +
    +
    + +
    +
    + + +
    Out[87]:
    + + +
    +
    [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
    +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Functions

    +
    +
    +
    +
    +
    +
    In [88]:
    +
    +
    +
    def area(side):
    +    return side*side
    +
    +def foo(side, length=2):
    +    return (side*length)
    +
    +print area(10)
    +
    +trial2 = foo(2)
    +print trial2
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    100
    +4
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [89]:
    +
    +
    +
    #note the %i and %f
    +
    +def tax(bill):
    +    """Adds 8% tax to a restaurant bill."""
    +    bill *= 1.08
    +    print "With tax: %f" % bill
    +    return bill
    +
    +def tip(bill):
    +    """Adds 15% tip to a restaurant bill."""
    +    bill *= 1.15
    +    print "With tip: %i" % bill
    +    return bill
    +    
    +meal_cost = 100
    +meal_with_tax = tax(meal_cost)
    +meal_with_tip = tip(meal_with_tax)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    With tax: 108.000000
    +With tip: 124
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Lambdas

    Python supports the creation of anonymous functions (i.e. functions that are not bound to a name) at runtime, using a construct called "lambda".

    +

    They do not have return statements.

    +

    Python supports functional programming. Lambdas play a role here.

    +

    Especially useful when you want to pass a function as a variable.

    + +
    +
    +
    +
    +
    +
    In [90]:
    +
    +
    +
    def foo(x):
    +    return x**x
    +
    +f = foo(4)
    +print f
    +
    +g = lambda l: l**l
    +print g(4)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    256
    +256
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [91]:
    +
    +
    +
    def increment (n): return lambda x: x + n
    +
    +sample = increment(2)
    +print sample(5)
    +
    +print increment(2)(5)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    7
    +7
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [46]:
    +
    +
    +
    nos = [1, 2, 3, 4, 5, 6]
    +print filter(lambda x: x%2 == 0, nos)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    [2, 4, 6]
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [50]:
    +
    +
    +
    squares=[x**2 for x in range(1,11)]
    +print filter(lambda x: (x>=30)and(x<=70),squares)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    [36, 49, 64]
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Task

    +
    +
    +
    +
    +
    +
    +
    +
    +

    Can you write a list-comprehension only equivalent of the above lambda?

    + +
    +
    +
    +
    +
    +
    +
    +
    +

    Classes

    +
    +
    +
    +
    +
    +
    In [92]:
    +
    +
    +
    #all class methods will have a self parameter. this is different from c++
    +
    +
    +class Fruit(object):
    +    """A class that makes various tasty fruits."""
    +    def __init__(self, name, color, flavor, poisonous):
    +        self.name = name
    +        self.color = color
    +        self.flavor = flavor
    +        self.poisonous = poisonous
    +
    +    def description(self):
    +        print "I'm a %s %s and I taste %s." % (self.color, self.name, self.flavor)
    +        
    +    def is_edible(self):
    +        if not self.poisonous:
    +            print "Yep! I'm edible."
    +        else:
    +            print "Don't eat me! I am super poisonous."
    +
    +lemon = Fruit("lemon", "yellow", "sour", False)
    +
    +lemon.description()
    +lemon.is_edible()
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    I'm a yellow lemon and I taste sour.
    +Yep! I'm edible.
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [93]:
    +
    +
    +
    class Triangle(object):
    +    number_of_sides=3
    +    
    +    def __init__(self,angle1,angle2,angle3):
    +        self.angle1=angle1
    +        self.angle2=angle2
    +        self.__angle3=angle3
    +        
    +    def check_angles(self):
    +        sum=self.angle1+self.angle2+self.__angle3
    +        if sum==180:
    +            return True
    +        else:
    +            return False
    +        
    +class Equilateral(Triangle):
    +    angle = 60
    +    
    +    def __init__(self):
    +        self.angle1 = self.angle
    +        self.angle2 = self.angle
    +        self.angle3 = self.angle
    +        
    +my_triangle=Triangle(45,60,60)
    +my_triangle=Equilateral()
    +
    +print my_triangle.angle
    +
    +print my_triangle.number_of_sides
    +print my_triangle.check_angles()
    +
    +my_triangle=Triangle(45,60,75)
    +print my_triangle.check_angles()
    +
    +print my_triangle.angle2
    +#Use double-underscore for private variable in the class definition
    +print my_triangle.__angle3
    +
    +1
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    60
    +3
    +
    +
    +
    + +
    +
    +
    +---------------------------------------------------------------------------
    +AttributeError                            Traceback (most recent call last)
    +<ipython-input-93-e7dcceb6e42e> in <module>()
    +     28 
    +     29 print my_triangle.number_of_sides
    +---> 30 print my_triangle.check_angles()
    +     31 
    +     32 my_triangle=Triangle(45,60,75)
    +
    +<ipython-input-93-e7dcceb6e42e> in check_angles(self)
    +      8 
    +      9     def check_angles(self):
    +---> 10         sum=self.angle1+self.angle2+self.__angle3
    +     11         if sum==180:
    +     12             return True
    +
    +AttributeError: 'Equilateral' object has no attribute '_Triangle__angle3'
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Miscellaneous

    +
    +
    +
    +
    +
    +
    In [94]:
    +
    +
    +
    print 5 >> 4  # Right Shift
    +print 5 << 1  # Left Shift
    +print 8 & 5   # Bitwise AND
    +print 9 | 4   # Bitwise OR
    +print 12 ^ 42 # Bitwise XOR
    +print ~88     # Bitwise NOT
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    0
    +10
    +0
    +13
    +38
    +-89
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [95]:
    +
    +
    +
    for i in range(2,6):
    +    print bin(i)
    +    print bin(i)[2:]
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    0b10
    +10
    +0b11
    +11
    +0b100
    +100
    +0b101
    +101
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    In [58]:
    +
    +
    +
    print int("111",2)
    +print int("0b111",2)
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    7
    +7
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +
    +

    Tasks..Let the games begin.

    +
    +
    +
    +
    +
    +
    In [ ]:
    +
    +
    +
     
    +
    + +
    +
    +
    + +
    +
    +
    + + From 3a8aa202110cb4481e35fb30c00aa8df1db251ce Mon Sep 17 00:00:00 2001 From: Sivasubramanyam A Date: Mon, 28 Sep 2015 19:08:13 +0530 Subject: [PATCH 5/7] Add Python Workshop --- archive.html | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/archive.html b/archive.html index 8cd9a46..30581e1 100644 --- a/archive.html +++ b/archive.html @@ -23,7 +23,7 @@

    RMK Coding Club