Tkinter

1
2
3
4
5
6
try:
# for Python2
from Tkinter import *
except ImportError:
# for Python3
from tkinter import *

使用 Tk 首先要 import tkinter ,這裡用 from , import 之後星號表示所有名稱,這使我們在程式中可以直接使用 tkinter 中的名稱,不需要連帶寫出 tkinter

1
2
3
4
root = Tk() ##create TK object
some = Label(root, text="Hello World!", width="30", height="5") ## Label with "Hello World"
some.pack()
root.mainloop()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class GUIDemo(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.grid()
self.createWidgets()

def createWidgets(self):
self.inputText = Label(self)
self.inputText["text"] = "Name:"
self.inputText.grid(row=0, column=0)

self.inputField = Entry(self)
self.inputField["width"] = 50
self.inputField.grid(row=0, column=1, columnspan=3)

self.submit = Button(self)
self.submit["text"] = "submit"
self.submit.grid(row=2, column=3)
self.submit["command"] = self.submitMethod

self.displayText = Label(self)
self.displayText["text"] = ""
self.displayText.grid(row=3, column=0, columnspan=3)
def submitMethod(self):
self.displayText["text"] = "Hello %s" % self.inputField.get()


if __name__ == '__main__':
root = Tk()
app = GUIDemo(master=root)
app.mainloop()

itertolls + DFS

程式 8個變數 範圍由1~2
輸出 8個變數全部相加 = 9的結果

1
2
3
4
5
6
7
8
9
10
11
12
x = 3
def DFS(data, deep):
if deep==9:
if sum(data)==9:
print data
return

for i in range(1, x):
DFS(data+[i], deep+1)

if __name__ == '__main__':
DFS([], 1)

use itertools

1
2
3
4
5
6
import itertools
x = 3
if __name__ == '__main__':
for data in itertools.product(range(1,x), repeat=8):
if sum(data) == 9:
print data

remove repeat

1
2
3
4
5
6
7
8
9
import itertools
x = 4
ans = set()
if __name__ == '__main__':
for data in itertools.product(range(1,x), repeat=7):
if sum(data) == 9:
ans.add(tuple(sorted(data)))
for i in ans:
print i

1
2
3
4
5
6
import itertools
x = 4
if __name__ == '__main__':
for data in itertools.combinations_with_replacement(range(1,x), 7):
if sum(data) == 9:
print data

List comprehension+Map

List comprehension
S = { 2*x | x ∈ (1..100) , x^2 >3 }

1
2
S = [2 * x for x in range(101) if x ** 2 > 3]
[mapping-expression for element in source-list if filter-expression]
1
2
3
4
5
6
7
8
9
## python -mtimeit -s'xs=range(10)' 'map(hex, xs)'
100000 loops, best of 3: 4.86 usec per loop
#python -mtimeit -s'xs=range(10)' '[hex(x) for x in xs]'
100000 loops, best of 3: 5.58 usec per loop

## python -mtimeit -s'xs=range(10)' 'map(lambda x: x+2, xs)'
100000 loops, best of 3: 4.24 usec per loop
#python -mtimeit -s'xs=range(10)' '[x+2 for x in xs]'
100000 loops, best of 3: 2.32 usec per loop
1
2
3
4
5
## python -mtimeit -s'i=[1000,2000,3000]' 'j=[10,20,30]' '[m + n for m, n in zip(i ,j)]'
1000000 loops, best of 3: 1.23 usec per loop

## python -mtimeit -s'i=[1000,2000,3000]' 'j=[10,20,30]' 'list(map(int.__add__, i, j))'
1000000 loops, best of 3: 1.79 usec per loop

ref

Read file and get internet data

in short

1
2
3
4
5
import csv
with open(myfilepath, 'rb') as f: ## must read binary
mycsv = csv.reader(f)
for row in mycsv:
text = row[1]

example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import urllib2
import pprint
import json
import csv
import time
with open('fileWriter.csv', 'wb') as csvfile2:
spamwriter = csv.writer(csvfile2, delimiter=' ',
quotechar=' ', quoting=csv.QUOTE_MINIMAL)
with open('fileReader.csv', 'rb') as csvfile:
spamreader = csv.reader(csvfile, delimiter=' ', quotechar=',')
for row in spamreader:
time.sleep(2)
info =''.join(row).split(',')
address = info[1] ##get address
geocode_url = "http://maps.googleapis.com/maps/api/geocode/json?address=%s" % urllib2.quote(address)
req = urllib2.urlopen(geocode_url)
jsonResponse = json.loads(req.read())
pprint.pprint(jsonResponse)
geometry=None
try:
geometry=jsonResponse['results'][0]['geometry']['bounds']['southwest']
except Exception, e:
geometry=jsonResponse['results'][0]['geometry']['location']
finally:
pass
spamwriter.writerow([info[0]]+[info[1]]+[geometry['lat']]+[geometry['lng']])

Read file and sort

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import random
class Student:
def __init__(self,id,name,v1,v2,v3,v4,v5,rank):
self.id = int(id)
self.name = name
self.v = []
self.v.append(int(v1))
self.v.append(int(v2))
self.v.append(int(v3))
self.v.append(int(v4))
self.v.append(int(v5))

self.rank = int(rank)

def set_random(self,random):
self.random = int(random)

def set_club(self,club):
self.club = int(club)


ins = open( "file.tsv", "r" )
students = []
for line in ins:
tmp = line.split('\t')
students.append( Student(tmp[1],tmp[2],tmp[3],tmp[4],tmp[5],tmp[6],tmp[7],tmp[8]) )
ins.close()

## for giving random value for every student
size=len(students)
rv = []
for i in range(0, size):
rv.append(i)
#print(array[0].name)

for student in students:
i = random.randint(0,size-1)
tmp=rv[i]
student.set_random(tmp)
rv.remove(tmp)
size -= 1

s_students=sorted(students, key=lambda student: (student.rank,student.random),reverse=True)

General file operation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
## show parameter or method
dir("")

## argv number and value
import sys
len(sys.argv) //count
for i in sys.argv: //list

## list all file in dir
from os import listdir
print listdir(".")

## check file exists
if os.path.exists(file_name):

## look for fileName
import os
from os import walk
for (root, dirs, files) in walk("/Users/soeasyright"):
for file in files:
if file.endswith('.py'):
print(os.path.join(root, file))

## Rename FileName
os.rename(fullpath, fullpath.replace('E', 'e'))

## open file
-- type1 --
with open(file_name) as f: //no needs file.close

-- type2 --
wopen = open(file_name,'w') //w,w+
wopen.write(tmp_word)
wopen.close()

## try except
try:
print 'deal something'
raise EOFError('XD')
print 'ok'
except EOFError as e
print e.args ## XD
type, message, traceback = sys.exc_info()
print type ##<type 'exceptions.EOFError'>
print message ##XD
finally:
print 'finally'


## exit python
import sys
sys.exit(0)
sys.exit(1) //something error