Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c36c721

Browse files
committed
new file: primer/10/card.py
new file: primer/10/myexc.py new file: primer/11/Gui.py new file: primer/11/deco.py new file: primer/11/easyMath.py new file: primer/11/grabWeb.py new file: primer/11/numconv.py new file: primer/11/odd.py new file: primer/11/testit.py new file: primer/12/hot.py new file: primer/13/NumStr.py new file: primer/13/Rand.py new file: primer/13/file.py new file: primer/13/meta.py new file: primer/13/roundFloat.py new file: primer/13/time.py new file: primer/13/time60.py new file: primer/16/sockCli.py new file: primer/16/sockServ.py new file: primer/16/tcpclient.py new file: primer/16/tcpserver.py new file: primer/16/udpCli.py new file: primer/16/udpSer.py new file: primer/18/sleep.py new file: primer/18/threading.py new file: primer/19/label.py new file: primer/2/2_10.py new file: primer/2/2_11.py new file: primer/2/2_2.py new file: primer/2/2_7.py new file: primer/2/2_8.py new file: primer/20/Cralwer.py new file: primer/3/makeFile.py new file: primer/3/makeTextFile.py new file: primer/3/readTextFile.py new file: primer/4/display.py new file: primer/6/idcheck.py new file: primer/6/queue.py new file: primer/6/stack.py new file: primer/6/unicode.txt new file: primer/6/unicodeFile.py new file: primer/7/userpw.py new file: primer/9/ospathex.py datastruct/ unp/
0 parents  commit c36c721

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1097
-0
lines changed

python/primer/10/card.py

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
def safe_float(obj):
2+
try:
3+
retval = float(obj)
4+
except (ValueError,TypeError),diag:
5+
retval = str(diag)
6+
return retval
7+
8+
def main():
9+
log = open("cardlog.txt","w")
10+
try:
11+
ccfile = open("carddata.txt","r")
12+
except IOError,e:
13+
log.write("no txns this \n")
14+
log.close()
15+
return
16+
txns = ccfile.readlines()
17+
ccfile.close()
18+
total = 0.00
19+
log.write("account log:\n")
20+
21+
for eachTxn in txns:
22+
result = safe_float(eachTxn)
23+
if isinstance(result,float):
24+
total += result
25+
log.write("data ....processed\n")
26+
else:
27+
log.write("ignored: %s" % result)
28+
print "$%.2f (new balance)" % (total)
29+
log.close()
30+
31+
if __name__ == '__main__':
32+
print "run"
33+
main()

python/primer/10/myexc.py

+104
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
2+
import os,socket,errno,types,tempfile
3+
4+
class NetworkError(IOError):
5+
pass
6+
7+
class FileError(IOError):
8+
pass
9+
10+
def updArgs(args,newarg=None):
11+
if isinstance(args,IOError):
12+
myargs =[]
13+
myargs.extend([arg for arg in args])
14+
else:
15+
myargs = list(args)
16+
17+
if newarg:
18+
myargs.append(newarg)
19+
20+
return tuple(myargs)
21+
22+
def fileAargs(file,mode,agrs):
23+
if args[0] == errno.EACCES and \
24+
'access' in dir(os):
25+
perms = ''
26+
perms = {'r':os.R_OK,'w':os.W_OK,'x':os.X_OK}
27+
pkeys = permd.keys()
28+
pkeys.sort()
29+
pkeys.reverse()
30+
31+
for eachPerm in 'rwx':
32+
if os.access(file,permd[eachPerm]):
33+
perms += eachPerm
34+
else:
35+
perms += '-'
36+
37+
if isinstance(args,IOError):
38+
myargs = []
39+
myargs.extend([arg for arg in args])
40+
else:
41+
myargs = list(args)
42+
43+
myargs[1] = "'%s' %s (perms:'%s')" % (mode,myargs[1],perms)
44+
45+
myargs.append(args.filename)
46+
47+
else:
48+
myargs = args
49+
return tuple(myargs)
50+
51+
def myconnnect(sock,host,port):
52+
try:
53+
sock.connect((hosy,port))
54+
except socket.error,args:
55+
myargs = updArgs(args)
56+
if len(myargs) == 1:
57+
myargs = (errno.ENXIO,myargs[0])
58+
59+
raise NetworkError,\
60+
updArgs(myargs,host +":" + str(port))
61+
def myopen(file,mode ="r"):
62+
try:
63+
fo = open(file,mode)
64+
except IOError,args:
65+
raise FileError,fileArgs(file,mode,args)
66+
return fo
67+
68+
def testfile():
69+
file = mkdtemp()
70+
f = open(file,"w")
71+
f.close()
72+
73+
for eachTest in ((0,"r"),(0100,"r"), \
74+
(0400,"w"),(0500,"w")):
75+
try:
76+
os.chmod(file,eachTest[0])
77+
f=myopen(file,eachTest[1])
78+
79+
except FileError,args:
80+
print "%s: %s" % \
81+
(args.__class__.__name__,args)
82+
else:
83+
print file,"open ok..perm ignored"
84+
f.close()
85+
os.chmod(file,0777)
86+
os.unlink(file)
87+
def testnet():
88+
s = socket.socket(socket.AF_INET.socket.SOCK_STREAM)
89+
for eachHost in ("deli","www"):
90+
try:
91+
myconnect(s,"deli",8080)
92+
except NetworkError,args:
93+
print "%s:%s" %\
94+
(args.__class__.__name__,args)
95+
if __name__ == "__main__":
96+
testfile()
97+
testnet()
98+
99+
100+
101+
102+
103+
104+

python/primer/11/Gui.py

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
2+
from functools import partial
3+
import Tkinter
4+
5+
root=Tkinter.Tk()
6+
MyButton = partial(Tkinter.Button,root,
7+
fg="white",bg="blue")
8+
b1= MyButton(text="button 1")
9+
b2=MyButton(text="button 2")
10+
#qb=MyButton(text="QUIT",bg="red",
11+
# command=root.quit)
12+
13+
b1.pack()
14+
b2.pack()
15+
#qb.pack(file=Tkinter.X,expand= True)
16+
root.title("PFAs!")
17+
root.mainloop()

python/primer/11/deco.py

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
from time import ctime,sleep
3+
4+
def tsfunc(func):
5+
def wrappedFunc():
6+
print "[%s] %s() called" % \
7+
(ctime(),func.__name__)
8+
return func()
9+
return wrappendFunc
10+
11+
@tsfunc
12+
def foo():
13+
pass
14+
15+
foo()
16+
sleep(4)
17+
18+
for i in range(2):
19+
sleep(1)
20+
foo()
21+
22+

python/primer/11/easyMath.py

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
from operator import add,sub
3+
from random import randint,choice
4+
5+
ops ={"+":add,"-":sub}
6+
MAXTRIES = 2
7+
8+
def doprob():
9+
op = choice('+-')
10+
nums = [randint(1,10) for i in range(2)]
11+
nums.sort(reverse = True)
12+
ans = ops[op](*nums)
13+
pr="%d %s %d =" %(nums[0],op,nums[1])
14+
oops =0
15+
while True:
16+
try:
17+
if int(raw_input(pr)) == ans:
18+
print "corrent"
19+
break
20+
if oops == MAXTRIES:
21+
print "answer \n %s%d" %(pr,ans)
22+
else:
23+
print "incorrent...try again"
24+
oops += 1
25+
except (KeyboardInterrupt, EOFError,ValueError):
26+
print "invalid input ... try again"
27+
28+
def main():
29+
while True:
30+
doprob()
31+
try:
32+
opt= raw_input("Again?[y]".lower())
33+
if opt and opt[0] == "n":
34+
break
35+
except (KeyboardInterrupt,EOFError):
36+
break
37+
if __name__ == "__main__":
38+
main()
39+
40+

python/primer/11/grabWeb.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
from urllib import urlretrieve
3+
4+
def firstNoBlank(lines):
5+
for eachLine in lines:
6+
if not eachLine.strip():
7+
continue
8+
else:
9+
return eachLine
10+
11+
def firstLast(webpage):
12+
f = open(webpage)
13+
lines= f.readlines()
14+
f.close()
15+
print firstNoBlank(lines),lines.reverse()
16+
print firstNoBlank(lines),
17+
18+
def download(url = "http://www.cqupt.edu.cn",process=firstLast):
19+
try:
20+
retval = urlretrieve(url)[0]
21+
except IOError:
22+
retval = None
23+
if retval:
24+
process(retval)
25+
if __name__ == "__main__":
26+
download()

python/primer/11/numconv.py

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
2+
def convert(func,seq):
3+
return[func (eachNum ) for eachNum in seq]
4+
5+
myseq=(123,45.67,-6.2e8,99999999L)
6+
print convert(int,myseq)
7+
print convert(long,myseq)
8+
print convert(float,myseq)

python/primer/11/odd.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
from random import randint
3+
4+
#def odd(n):
5+
# return n%2
6+
7+
allNums =[]
8+
for eachNum in range(9):
9+
allNums.append(randint(1,99))
10+
print[n for n in allNums if n%2]

python/primer/11/testit.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
def testit(func,*nkwargs,**kwargs):
3+
try:
4+
retval = func(*nkwargs,**kwargs)
5+
result = (True,retval)
6+
except Exception,diag:
7+
result = (False,str(diag))
8+
return result
9+
10+
def test():
11+
funcs =(int,long,float)
12+
vals = (1234,12.34,"1234","12.34")
13+
14+
for eachFunc in funcs:
15+
print "_"*20
16+
for eachVal in vals:
17+
retval = testit(eachFunc,eachVal)
18+
if retval[0]:
19+
print "%s(%s)=" % \
20+
(eachFunc.__name__,"eachVal"),retval[1]
21+
else:
22+
print "%s(%s)=FAILED:" %\
23+
(eachFunc.__name__,"eachVal"),retval[1]
24+
25+
if __name__ == "__main__":
26+
test()

python/primer/12/hot.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
class HotelRoomCalc(object):
2+
'hotel room rate calculator'
3+
def __init__(self,rt,sales=0.085,rm=0.1):
4+
self.salesTax = sales
5+
self.roomTax = rm
6+
self.roomRate = rt
7+
8+
def calcTotal(self,days = 1):
9+
daily = round((self.roomRate *(1+self.roomTax + self.salesTax)),2)
10+
return float(days)*daily

python/primer/13/NumStr.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class NumStr(object):
2+
def __init__(self,num=0,string=''):
3+
self.__num = num
4+
self.__string = string
5+
6+
def __str__(self):
7+
return "[%d :: %r]" % (self.__num,self.__string)
8+
__repr__ = __str__
9+
10+
def __add__(self,other):
11+
if isinstance(other,NumStr):
12+
return self.__class__(self.__num + \
13+
other.__num,self.__string+other.__string)
14+
else:
15+
return TypeError,"type error"
16+
def __mul__(self,num):
17+
if isinstance(num,int):
18+
return self.__class__(self.__num *num,self.__string *num)
19+
else:
20+
raise TypeError,"__num__ error"
21+
def __nonzero__(self):
22+
return self.__num or len(self.__string)
23+
def __norm_cval(self,cmpres):
24+
return cmp(cmpres,0)
25+
def __cmp__(self,other):
26+
return self.__norm_cval(cmp(self.__num,other.__num)) + \
27+
self.__norm_cval(cmp(self.__string,other.__string))

python/primer/13/Rand.py

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
from random import choice
3+
4+
class Rand(object):
5+
def _init_(self,seq):
6+
self.data = seq
7+
def _iter_(self):
8+
return self
9+
def next(self):
10+
return choice(self.data)

python/primer/13/file.py

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import os
2+
import pickle
3+
4+
class File(object):
5+
saved=[]
6+
def __init__(self,name=None):
7+
self.name = name
8+
def __get__(self,obj,typ=None):
9+
if self.name not in File.saved:
10+
raise AttributeError,"%r used before assignment " % self.name
11+
try:
12+
f = open(self.name,"r")
13+
val = pickle.load(f)
14+
f.close()
15+
return val
16+
except (pickle.UnpicklingError,IOError,EOFError,AttributeError,\
17+
ImportError,IndexError),e:
18+
raise AttributeError,"could not read %r:%s" % (self.name,e)
19+
def __set__(self,obj,val):
20+
f = open(self.name,"w")
21+
try:
22+
pickle.dump(val,f)
23+
File.saved.append(self.name)
24+
except (TypeError,pickle.PicklingError),e:
25+
raise AttributeError,"could not pickle %r " % self.name
26+
finally:
27+
f.close()
28+
29+
def __delete__(self,obj):
30+
try:
31+
os.unlink(self.name)
32+
File.saved.remove(self.name)
33+
except (OSError,ValueError),e:
34+
pass

0 commit comments

Comments
 (0)