import shelve
# with shelve.open("D:/WORK/2018/February/22-02-2018-Thursday/shelvetest1")as fruit:
# fruit = {"orange":"its a fruit which is orange in color",
# "apple":"good for health"}
# print(fruit)
# print(fruit["orange"])
# print("="*40)
# print(fruit["orange"])
# print(fruit)
with shelve.open("D:/WORK/2018/February/22-02-2018-Thursday/shelvetest2")as fruit:
fruit["orange"]="its a fruit which is orange in color"
fruit["apple"]="good for health"
print(fruit)
print("="*40)
#the below peice of code will throw an error
# print(fruit["orange"])
with shelve.open("D:/WORK/2018/February/22-02-2018-Thursday/shelvebike1")as bike:
bike["name"]="tvs"
bike["engine_cc"]="250 cc"
#even if removed and executes the below code it will be saved
#in the first run and remains there,which is not the case if
#it is normal dictionary
# bike["engin_cc"]="250 cc"
bike["model"]="victor"
print(bike)
for i in bike:
print(i)
print(bike[i])
###############################################################################
import shelve
with shelve.open("D:/WORK/2018/February/22-02-2018-Thursday/shelvebike1")as bike:
bike["name"]="tvs"
bike["engine_cc"]="250 cc"
#even if removed and executes the below code it will be saved
#in the first run and remains there,which is not the case if
#it is normal dictionary
# bike["engin_cc"]="250 cc"
#we can delete that key using,it has to be run one time only
# del bike["engin_cc"]
bike["model"]="victor"
print(bike)
for i in bike:
print(i)
print(bike[i])
Thursday, 22 February 2018
Python Shelve- Day 12(1 day later)
Python Read Write File,Binary Read Write File - Day 11(2 days later)
# #this shows how to open and read contents from the file
# samplefilevar = open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplereadfile.txt",'r')
# for linevar in samplefilevar:
# print (linevar)
# samplefilevar.close()
#
# print("===="*20)
# #print only the lines containing the specific word
# samplefilevar = open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplereadfile.txt",'r')
# for linevar in samplefilevar:
# if "file" in linevar.lower():
# print (linevar,end = '')
# samplefilevar.close()
# print("===="*20)
# #using with keyword will automatically close the file,we dont need to
# #use the separate close statement
#
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplereadfile.txt",'r')as var2:
# for line in var2:
# #end = '' is used to avoid using the extra empty line
# print(line,end='')
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplereadfile.txt",'r')as var2:
# line =var2.readline()
# print(line)
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplereadfile.txt",'r')as var2:
# #readlines will read all lines and piut it into list,so it is better to use readline,
# #since the readlines will read the entire file in memory,where as readline will
# #go row by row
# lines =var2.readlines()
# print(lines)
#
# for line1 in lines:
# print(line1,end='')
#write contents to a file
# cities = ["Delhi","Bombay","Chennai"]
#
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile1.txt",'w')as var2:
# for city in cities:
# print(city,file=var2)
#
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile1.txt",'r')as var3:
# cities = var3.readlines()
# print(cities)
#
# #strip functions strips the character that is present at the end or beginning
#,but not the middle
# for city in cities:
# print(city)
# print(city.strip("\n"))
#
# cityvar1 = []
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile1.txt",'r')as var3:
# cities = var3.readlines()
# for city in cities:
# cityvar1.append(city)
#
# print(cityvar1)
#
# cityvar2 = []
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile1.txt",'r')as var3:
# cities = var3.readlines()
# for city in cities:
# cityvar2.append(city.strip("\n"))
#
# print(cityvar2)
#
# strvar1 = "testing"
# print(strvar1.strip("s"))
# print(strvar1.strip("g"))
# #below will remove t at the beginning not the st at the middle
# print(strvar1.strip("st"))
#tuples to file
# albumtuplevar2 = "muthu","rahman",2000,(1,"oruvan oruvan"),(2,"kuluvall"),(3,"vidukathaya")
# print(albumtuplevar2)
# title,composer,year,track1,track2,track3 =albumtuplevar2
# print(title)
# print(composer)
# print(year)
# print(track1)
# print(track2)
# print(track3)
#
# with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile2.txt",'w')as var2:
# print(albumtuplevar2,file=var2)
with open("D:/WORK/2018\February/20-02-2018-Tuesday/pythonsamplewritefile2.txt",'r')as var3:
var4 = var3.readlines()
print(var4)
print(var4)
######################################################################
#appending the tables to the existing file
#if we use the mode 'a',it will append it ,if we use the mode 'w',it will overwrite the file
#our challenge is to print like
#1 times 2 is 2
#2 times 2 is 4
#....
#likewise till 13 table
with open("D:/WORK/2018/February/20-02-2018-Tuesday/pythonwritefile3.txt",'w')as tables:
for i in range(1,1000):
for j in range(1,1000):
print("{1} times {0} is {2}".format(i,j,i*j),file=tables)
print("=="*20,file=tables)
#######################################################################
#We can use pickle ,instead of converting the binaty manually and reconverting
#while reading
import pickle
imedla = ('More Mayhem',
'Imelda May',
'2011',
((1,'Pulling the rug'),
(2,'Psycho'),
(3,'Mayhem'),
(4,'Kentish Town Waltz')))
# with open("D:/WORK/2018/February/22-02-2018-Thursday/pythonwritefilebinary.pickle","wb")
as pickle_file:
# pickle.dump(imedla,pickle_file)
with open("D:/WORK/2018/February/22-02-2018-Thursday/pythonwritefilebinary.pickle","rb")
as imelda_pickled:
imelda2 = pickle.load(imelda_pickled)
print(imelda_pickled)
print(imelda2)
album,artist,year,tracklist = imelda2
print (album)
print (artist)
print (year)
for track in tracklist:
trackno,tracktile = track
print("{0} : {1}".format(trackno,tracktile))
#########################################################################################
#storing multiple objects in the binary file and retrieving it in the same order
import pickle
imedla = ('More Mayhem',
'Imelda May',
'2011',
((1,'Pulling the rug'),
(2,'Psycho'),
(3,'Mayhem'),
(4,'Kentish Town Waltz')))
even = list(range(0,10,2))
odd = list(range(1,10,2))
with open("D:/WORK/2018/February/22-02-2018-Thursday/pythonwritefilebinary2.pickle","wb")
as pickle_file:
pickle.dump(imedla,pickle_file,protocol=0)
pickle.dump(even,pickle_file,protocol=0)
pickle.dump(odd,pickle_file,protocol=0)
pickle.dump(12345,pickle_file,protocol=0)
#to read the above objects we need to read it in the same order ie..tuples,list,variable
with open("D:/WORK/2018/February/22-02-2018-Thursday/pythonwritefilebinary2.pickle","rb")
as imelda_pickled:
imelda2 = pickle.load(imelda_pickled)
even_list = pickle.load(imelda_pickled)
odd_list = pickle.load(imelda_pickled)
x = pickle.load(imelda_pickled)
print(imelda_pickled)
print(imelda2)
album,artist,year,tracklist = imelda2
print (album)
print (artist)
print (year)
for track in tracklist:
trackno,tracktile = track
print("{0} : {1}".format(trackno,tracktile))
print("="*40)
for i in even_list:
print(i)
print("="*40)
for i in odd_list:
print(i)
print("="*40)
print(x)
###################################################################################
Monday, 19 February 2018
Python Sets - Day 10(day later)
farm_animals = {"cow","goat"}
print(farm_animals)
wild_animals= set(["Lion","Tiger"])
farm_animals.add("horse")
print(farm_animals)
wild_animals.add("horse")
print(wild_animals)
evennos = set(range(0,50,2))
print(evennos)
evennos = set(range(0,50,2))
print(evennos)
squares = {4,9,16,25,36}
print(squares)
print(sorted(squares))
print (squares.union(evennos))
#both will produce same result
print (evennos.union(squares))
#both will produce same result
print (squares.intersection(evennos))
print (evennos.intersection(squares))
print (evennos & squares)
print (squares & evennos )
#*empty set can not be created by using the curly braces {},since it will be treated as
dictionary when calling the add method
emptyset1 = {}
print(emptyset1)
#the below code will throw error
# emptyset1.add("1")
print(emptyset1)
emptyset2 = set()
print(emptyset2)
#but not the below code
emptyset2.add("1")
print(emptyset2)
#differences/Minus
print(evennos)
print(squares)
print("squares minus evenos")
print(squares.difference((evennos)))
print(squares - evennos)
print("evenos minus squares ")
print(evennos.difference((squares)))
print(evennos - squares)
#update the difference in the set
squaretuple = (4,9,16,25,36)
squarenos = set(squaretuple)
evennos = set(range(0,50,2))
print(sorted(evennos))
print(sorted(squarenos))
print("="*40)
#will update the set after the difference
evennos.difference_update(squarenos)
print(evennos)
#symmetric difference,it is exact opposite of intersection
squarenos1 = {4,9,16,25,36}
evennos1 = set(range(0,50,2))
print(sorted(squarenos1))
print(sorted(evennos1))
print(evennos1.symmetric_difference(squarenos1))
#it will return the same result for both the line of the code
print(squarenos1.symmetric_difference(evennos1))
#discard & Remove,these two will affect the sets directly,
#disacard wont throw an error ,even if the value is not present there in the set,
#where as remove will throw if it does not exits
print(sorted(squarenos1))
print(sorted(evennos1))
squarenos1.discard(4)
squarenos1.remove(16)
print(sorted(squarenos1))
#wont throw error
squarenos1.discard(5)
#will throw error
# squarenos1.remove(5)
evensquarenos2 = {4,16,36}
evennos2 = set(range(0,50,2))
print(sorted(evensquarenos2))
print(sorted(evennos2))
if evennos2.issuperset(evensquarenos2):
print("evennos is the superset of the evensquarenos")
if evensquarenos2.issubset(evennos2):
print("evensquarenos is the subset of the evennos")
#frozenset,we can add,edit,remove the frozen set,but can do other operations
#like union,intersection...
evenfrozen = frozenset({2,4,6})
print(evenfrozen)
#the below line will throw an error,since we are trying
#to modify the frozen set which is not allowed
# evenfrozen.add(8)
#challenge ,remove the vowels from the string
stringval1= set("python is trending language")
stringval2= set("abcdefghijklmnopqrstuvwxyz")
frozensetstring = frozenset("aeiou")
print(stringval1.difference(frozensetstring))
print(sorted(stringval2.difference(frozensetstring)))
Saturday, 17 February 2018
Python Dictionaries CopyUpdate- Day 9(After 6 days)
# filmsvar1 = {"muthu":"one of the movie in which rajini comes in double role",
# "basha":"Don of a don movie,a cult hit",
# "enthiran":"rajini's scifi movie",
# "murattu kalai":"movie taken in paganeri"}
#
# filmsvar2 = {"BLoodStonte":"Rajini's Hollywood Movie",
# "enthiran2":"Upcoming Movie"}
#
# # print(filmsvar1)
# # print(filmsvar2)
# # #this will update the filmsvar1 wont create a separate object
# # filmsvar1.update(filmsvar2)
# # print(filmsvar1)
# # print(filmsvar2)
#
# #to make a copy of dictionary
#
# filmsvar3 = filmsvar2.copy()
# print(filmsvar2)
# print(filmsvar3)
# filmsvar2.update(filmsvar1)
# print(filmsvar2)
# print(filmsvar3)
#
# #Use the old challenge and make it work even if the user types valley,road directly
#
# location = {0:"You are Sitting in front of comp",
# 1:"You are in road",
# 2:"At the top of the hill",
# 3:"Building",
# 4:"You are across Valley",
# 5:"Roaming at forest"}
# exits = {0:{"Q":0},
# 1:{"N":5,"5":5,"S":4,"4":4,"E":3,"3":3,"Q":0},
# 2:{"N":5,"5":5,"Q":0},
# 3:{"W":1,"1":1,"Q":0},
# 4:{"W":2,"2":2,"N":1,"1":1,"Q":0},
# 5:{"S":1,"1":1,"W":2,"2":2,"Q":0}}
#
# vocabularyvar = {"NORTH":"N","SOUTH":"S","EAST":"E","WEST":"W","QUIT":"Q",
# "ROAD":"1","HILL":"2","BUILDING":"3","VALLEY":"4","FOREST":"5"}
#
# loc=1
# while True:
# availablexits = ""
# #we can use join to do the fllowing
# # for direction in exits[loc].keys():
# # availablexits +=direction+ ","
# availablexits = ','.join(exits[loc].keys())
#
# print(location[loc])
#
# if loc == 0:
# break
#
# direction = input("Available Exits are "+ availablexits).upper()
# if len(direction)>0:
# words = direction.split()
# for word in words:
# if word in vocabularyvar:
# direction = vocabularyvar[word]
# print(direction)
# print()
# if direction in exits[loc]:
# loc = exits[loc][direction]
# else:
# print("You cannot go in that direction")
#the above code will work,but it will unnecessarily will show no's 1,2,3,4,5 in the
# available exits,so we can use the copy and update funtions in dictionary to solve those issues
location = {0:"You are Sitting in front of comp",
1:"You are in road",
2:"At the top of the hill",
3:"Building",
4:"You are across Valley",
5:"Roaming at forest"}
exits = {0:{"Q":0},
1:{"N":5,"S":4,"E":3,"Q":0},
2:{"N":5,"Q":0},
3:{"W":1,"Q":0},
4:{"W":2,"N":1,"Q":0},
5:{"S":1,"W":2,"Q":0}}
namedexits = {1:{"5":5,"4":4,"3":3,"Q":0},
2:{"5":5,"Q":0},
3:{"1":1,"Q":0},
4:{"2":2,"1":1,"Q":0},
5:{"1":1,"2":2,"Q":0}}
vocabularyvar = {"NORTH":"N","SOUTH":"S","EAST":"E","WEST":"W","QUIT":"Q",
"ROAD":"1","HILL":"2","BUILDING":"3","VALLEY":"4","FOREST":"5"}
loc=1
while True:
availablexits = ""
#we can use join to do the fllowing
# for direction in exits[loc].keys():
# availablexits +=direction+ ","
availablexits = ','.join(exits[loc].keys())
print(location[loc])
if loc == 0:
break
else:
allexits = exits[loc].copy()
allexits.update(namedexits[loc])
direction = input("Available Exits are "+ availablexits).upper()
if len(direction)>0:
words = direction.split()
for word in words:
if word in vocabularyvar:
direction = vocabularyvar[word]
print(direction)
print()
#previously we used index ,since it it dictionary under dictionary
if direction in allexits:
loc = allexits[direction]
else:
print("You cannot go in that direction")
Python Dictionaries Challenge - Day 8(After 1 Week)
# location = {0:"You are Sitting in front of comp",
# 1:"You are in road",
# 2:"At the top of the hill",
# 3:"Building",
# 4:"You are across Valley",
# 5:"Roaming at forest"}
# exits = [{"Q":0},{"N":5,"S":4,"E":3,"Q":0},{"N":5,"Q":0},{"W":1,"Q":0},
{"W":2,"N":1,"Q":0},{"S":1,"W":2,"Q":0}]
# loc=1
# while True:
# availablexits = ""
# #we can use join to do the fllowing
# # for direction in exits[loc].keys():
# # availablexits +=direction+ ","
# availablexits = ','.join(exits[loc].keys())
#
# print(location[loc])
#
# if loc == 0:
# break
#
# direction = input("Available Exits are "+ availablexits).upper()
# print()
# if direction in exits[loc]:
# loc = exits[loc][direction]
# else:
# print("You cannot go in that direction")
#the 1st challenge here is to convert the exit list to dictionary,
#list index can be converted to dictionary ,by making the list index no
# to corresponding dictionary key in this case
#
#
# location = {0:"You are Sitting in front of comp",
# 1:"You are in road",
# 2:"At the top of the hill",
# 3:"Building",
# 4:"You are across Valley",
# 5:"Roaming at forest"}
# exits = {0:{"Q":0},
# 1:{"N":5,"S":4,"E":3,"Q":0},
# 2:{"N":5,"Q":0},
# 3:{"W":1,"Q":0},
# 4:{"W":2,"N":1,"Q":0},
# 5:{"S":1,"W":2,"Q":0}}
# loc=1
# while True:
# availablexits = ""
# #we can use join to do the fllowing
# # for direction in exits[loc].keys():
# # availablexits +=direction+ ","
# availablexits = ','.join(exits[loc].keys())
#
# print(location[loc])
#
# if loc == 0:
# break
#
# direction = input("Available Exits are "+ availablexits).upper()
# print()
# if direction in exits[loc]:
# loc = exits[loc][direction]
# else:
# print("You cannot go in that direction")
#the 2nd challenge is to make use of the vocabulary,
#ie user may not type in the exact letters like N,S,W,E,
#user can type north,south as well
#
# location = {0:"You are Sitting in front of comp",
# 1:"You are in road",
# 2:"At the top of the hill",
# 3:"Building",
# 4:"You are across Valley",
# 5:"Roaming at forest"}
# exits = {0:{"Q":0},
# 1:{"N":5,"S":4,"E":3,"Q":0},
# 2:{"N":5,"Q":0},
# 3:{"W":1,"Q":0},
# 4:{"W":2,"N":1,"Q":0},
# 5:{"S":1,"W":2,"Q":0}}
#
# vocabularyvar = {"North":"N","South":"S","East":"E","WEST":"W","QUIT":"Q"}
#
# loc=1
# while True:
# availablexits = ""
# #we can use join to do the fllowing
# # for direction in exits[loc].keys():
# # availablexits +=direction+ ","
# availablexits = ','.join(exits[loc].keys())
#
# print(location[loc])
#
# if loc == 0:
# break
#
# direction = input("Available Exits are "+ availablexits)
# if len(direction)>0:
# if direction in vocabularyvar:
# direction = vocabularyvar[direction].upper()
# print(direction)
# print()
# if direction in exits[loc]:
# loc = exits[loc][direction]
# else:
# print("You cannot go in that direction")
#
# split command,will split the string by default by space,the result will be of list type
# location = {0:"You are Sitting in front of comp",
# 1:"You are in road",
# 2:"At the top of the hill",
# 3:"Building",
# 4:"You are across Valley",
# 5:"Roaming at forest,which is wild"}
#
# print(location[0])
# print(location[0].split())
# print(location[5].split(","))
# print(" ".join(location[0].split()))
#using the split command in the above example and checking whether one of the user entered words,
#matches with the exits,like if the user enters "I Prefer South"/"I want to go north"
location = {0:"You are Sitting in front of comp",
1:"You are in road",
2:"At the top of the hill",
3:"Building",
4:"You are across Valley",
5:"Roaming at forest"}
exits = {0:{"Q":0},
1:{"N":5,"S":4,"E":3,"Q":0},
2:{"N":5,"Q":0},
3:{"W":1,"Q":0},
4:{"W":2,"N":1,"Q":0},
5:{"S":1,"W":2,"Q":0}}
vocabularyvar = {"NORTH":"N","SOUTH":"S","EAST":"E","WEST":"W","QUIT":"Q"}
loc=1
while True:
availablexits = ""
#we can use join to do the fllowing
# for direction in exits[loc].keys():
# availablexits +=direction+ ","
availablexits = ','.join(exits[loc].keys())
print(location[loc])
if loc == 0:
break
direction = input("Available Exits are "+ availablexits).upper()
if len(direction)>0:
words = direction.split()
for word in words:
if word in vocabularyvar:
direction = vocabularyvar[word]
print(direction)
print()
if direction in exits[loc]:
loc = exits[loc][direction]
else:
print("You cannot go in that direction")
Saturday, 10 February 2018
Python Dictionaries part1 - Day 7
#dictionary can not be accessed vy index,but through key value
films = {"muthu":"one of the movie in which rajini comes in double role",
"basha":"Don of a don movie,a cult hit",
"enthiran":"rajini's scifi movie",
"murattu kalai":"movie taken in paganeri"}
print(films)
print(films["murattu kalai"])
#to add a new value to dictionay we dont have a method or function,but we can assign like the below one
films["kaala"]="more like a basha 2,april 27th - 2018 release"
print(films)
#if we use the same key and assign it will update instead of creating new element
films["kaala"]="probably thalaivars gonna be biggest hit"
print(films)
#similarly it will take the last set of key,value combination if there is any duplicate
films = {"muthu":"one of the movie in which rajini comes in double role",
"basha":"Don of a don movie,a cult hit",
"enthiran":"rajini's scifi movie",
"murattu kalai":"movie taken in paganeri",
"muthu":"one of the thalaivar & sarath babu combination movie"}
print (films["muthu"])
bike = {"make":"royal enfiled","model":"himalayan","cc":400,"review":"mostly avg or bad"}
print (bike["model"])
print (bike["cc"])
#delete a element or delete a entire dictonary or cleare the elements in the dictionary
del(bike["review"])
# del(bike)
# bike.clear()
print (bike)
#getting the unpresent key value will result in error,in that case we can use get function
# print (bike["color"])
print(bike.get("color"))
#while True is used to make the user keep qasking the questions,unless he types quit
# while True:
# x = input("enter any thalaivar's film name: ")
# if x == "quit":
# break
# description = films.get(x)
# print(description)
# #the below piece of code will return error if we enter any unknown key value
# print(films[x])
#same code is rewritten to print the custom message if the value doesnot exists in dictory
while True:
x = input("enter any thalaivar's film name: ")
if x == "quit":
break
if x in films:
description = films.get(x)
print(description)
print(films[x])
else:
print ("{} - doesnot exists in dictionaryy".format(x))
Python Handling Binary ,Hex and octal Numbers - Day 6(posted next day)
# #decimal numbers in binary
# for i in range(10):
# print("{0:>2} in binary is {0:>8b}".format(i))
#
# print(0b1011)
# #hex decimal
# for i in range(257):
# print("{0:>2} in hex is {0:>02x}".format(i))
#
# #hex multipliation
# x = 0x20
# y = 0x0a
# print(x*y)
# #operations like or,and,xor,add,subtract refreshed
#converting decimal to binary through program
# print(10//2)
# print(10%3)
# powers = []
# for power in range(15,-1,-1):
# powers.append(2**power)
# # print(powers)
# print(powers)
# x = int(input("enter any number less than 65535 to convert to binary \n"))
# for i in powers:
# # print(i)
# print(x//i,end ='')
# x%=i
#the above program will work ,but to avoid the trialing 0's can use the below code
powers = []
for power in range(15,-1,-1):
powers.append(2**power)
# print(powers)
print(powers)
printing = False
x = int(input("enter any number less than 65535 to convert to binary \n"))
for i in powers:
# print(i)
bit = x//i
if bit!=0 or i ==1:
printing =True
if printing==True:
print(bit,end ='')
x%=i
Subscribe to:
Posts (Atom)