Lab 4

Programming Exercise
  1. lab4q1.py
    
    import tkinter as tk
    from Triangle3a import areaTriangle
    
    def drawTriangle(x1, y1, x2, y2, x3, y3,area,canvas):
        canvas.create_line(x1,y1,x2,y2)
        canvas.create_line(x1,y1,x3,y3)
        canvas.create_line(x2,y2,x3,y3)
        canvas.create_text(x1-30,y1-30,text="( %d, %d )"%(x1,y1))
        canvas.create_text(x2-30,y2+30,text="( %d, %d )"%(x2,y2))
        canvas.create_text(x3-30,y3+30,text="( %d, %d )"%(x3,y3))
        canvas.create_text((x1+(x2+x3)//2)//2,
                           (y1+(y2+y3)//2)//2,
                           text="Area : %.2f"%area)
        canvas.pack()
        
    def main():
        
        root = tk.Tk()
        canvas = tk.Canvas(height=500,width=500)
    
        x1 = int( input("Please enter coordinate x1: ") )
        y1 = int( input("Please enter coordinate y1: ") )
        x2 = int( input("Please enter coordinate x2: ") )
        y2 = int( input("Please enter coordinate y2: ") )
        x3 = int( input("Please enter coordinate x3: ") )
        y3 = int( input("Please enter coordinate y3: ") )
    
    
        area = areaTriangle(x1, y1, x2, y2, x3, y3)
        if area != None:
            drawTriangle(x1, y1, x2, y2, x3, y3,area,canvas)
        
        root.mainloop()  
    
    if __name__ == '__main__':
        main()
    
  2. lab4q2.py
    
    def caesarCipher(originalText, shift): 
        cipherText = ''
        for originalChar in originalText:
            if originalChar.isalpha():
                cipherChar = ord(originalChar) + shift
                if originalChar.islower():   
                    if cipherChar > ord('z'):
                        cipherChar -= 26
                    cipherText += chr(cipherChar)
                elif originalChar.isupper():
                    if cipherChar > ord('Z'):
                        cipherChar -= 26
                    cipherText += chr(cipherChar)
    
        return (cipherText)
    
    def main():
        print(1,caesarCipher('abc',3))
        print(2,caesarCipher('xyz',3))
        print(3,caesarCipher('ABC',3))
        print(4,caesarCipher('XYZ',3))
        print(5,caesarCipher('aBc',3))
        print(6,caesarCipher('xYz',3))
        print(7,caesarCipher('AbC',3))
        print(8,caesarCipher('XyZ',3))
    
    if __name__ == '__main__':
        main()
    

    sblogon.py

    
    #!C:\Users\tchan\AppData\Local\Programs\Python\Python38-32\python.exe
    import time
    import cgi
    from lab4q2 import caesarCipher
    
    html5top='''
    <!-- {fname} -->
    <!DOCTYPE html>
    <html>
     <head>
      <title>{title}
     </head>
     <body>
      <h1>{header}
    '''
    html5bottom='''
     </body>
    </html>
    '''
    
    print (html5top.format(fname='sblogon.py', title='CGI',header='Simple Billing App'))
    
    form = cgi.FieldStorage()
    
    if 'name' in form:
        if form['password'].value == caesarCipher('xyz',3):
            print ("<h1>Welcome, %s!" % form[ 'name' ].value)
            print('''
            <p /><ul>
                    <li><a href=sbsort.py>Customer Table</a></li><br />
                    <li><a href=sbsearch.py>Search Customer</a></li>
                </ul>
            <p />
            ''')
        else: print ("<h1>password incorrect %s!" % form[ 'password' ].value)
        
    
    print (time.ctime( time.time() ))
    print (html5bottom)
    
  3. lab4q3.py
    
    def powerfunction(n,p):
        if p <= 0:
            return 1
        else:
            return n * powerfunction(n,p-1) 
    
    def main():
        for i in range(10):
            print(i,' ** ',i,' is ',powerfunction(i,i),' == ',i**i)
        
    if __name__ == "__main__":
        main()
    
  4. lab4q4.py
    
    import sys
    
    def isPalindrome(s):
        if len(s) <= 1:
            return True
        else:
            return s[0] == s[len(s)-1] and isPalindrome(s[1:len(s)-1]) 
    
    def main(argv):
        print(isPalindrome(argv[1]))
        
    if __name__ == "__main__":
        main(sys.argv)
    
  5. lab4q5.py
    
    import tkinter as tk
    
    def midPnt(pt1,pt2): 
        return [(pt1[0]+pt2[0])/2,(pt1[1]+pt2[1])/2]
      
    def SierpinskiTri(pt1,pt2,pt3,level):
        if level == 0:
            canvas.create_line(pt1[0],pt1[1],pt2[0],pt2[1])
            canvas.create_line(pt1[0],pt1[1],pt3[0],pt3[1]) 
            canvas.create_line(pt2[0],pt2[1],pt3[0],pt3[1])
            canvas.pack()
        else:
            SierpinskiTri(pt2,midPnt(pt2,pt3),midPnt(pt1,pt2),level-1)
            SierpinskiTri(midPnt(pt2,pt3),midPnt(pt1,pt3),pt3,level-1)
            SierpinskiTri(pt1,midPnt(pt1,pt2),midPnt(pt1,pt3),level-1)
            
    def main():
    
        root = tk.Tk()
        
        global canvas
        
        canvas = tk.Canvas(root,height=500,width=500)      
        
        pt1=[250,100]
        pt2=[75,400]
        pt3=[425,400]
        SierpinskiTri(pt1,pt2,pt3,1)  
        
        root.mainloop()  
    
    if __name__ == "__main__":
        main()