5 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
6 sock.bind(('localhost', 8001))
7 sock.listen(5)
8
9 while True:
10 connection,address = sock.accept()
11 try:
12 connection.settimeout(5)
13 buf = connection.recv(1024)
14 if buf == '1':
15 connection.send('welcome to server!')
16 else:
17 connection.send('please go out!')
18 except socket.timeout:
19 print 'time out'
20
21 connection.close()
client.py
1 #coding:utf-8
2
3 import socket
4 import time
5
6 if __name__ == '__main__':
7 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
8 sock.connect(('localhost', 8001))
9 time.sleep(2)
10 sock.send('1')
11 print sock.recv(1024)
12 sock.close()
在终端运行server.py,然后运行clien.py,会在终端打印“welcome to server!"。
31.python如何捕获异常
(1)使用try和except语句来捕获异常
1 try:
2 block
3 except [exception,[data…]]:
4 block
5
6 try:
7 block
8 except [exception,[data...]]:
9 block
10 else:
11 block
捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该python 异常处理的except代码块捕获所有的异常
(2)用raise语句手工引发一个异常:
1 raise [exception[,data]]
2
3 try:
4 raise MyError #自己抛出一个异常
5 except MyError:
6 print 'a error'
7
8 raise ValueError,’invalid argument’
(3)采用sys模块回溯最后的异常
1 import sys
2 try:
3 block
4 except:
5 info=sys.exc_info()
6 print info[0],":",info[1]
32.src = "security/afafsff/?ip=123.4.56.78&id=45",请写一段代码用正则匹配出ip
匹配ip地址的python正则表达式
pattern =
'^([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])$'
故本题答案
1 >>> re.findall(r'([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])\.([01]?\d\d?|2[0-4]\d|25[0-5])', src)
2 [('123', '4', '56', '78')]
33.写一段代码用json数据的处理方式获取{"persons":[{"name":"yu","age":"23"},{"name":"zhang","age":"34"}]}这一段json中第一个人的名字。
1 json读取
2 >>> import json
3 >>> j = json.loads('{"persons":[{"name":"yu","age":"23"},{"name":"zhang","age":"34"}]}')
4 >>> print j
5 {u'persons': [{u'age': u'23', u'name': u'yu'}, {u'age': u'34', u'name': u'zhang'}]}
6 >>> print j.keys()
7 [u'persons']
8 >>> print j.values()
9 [[{u'age': u'23', u'name': u'yu'}, {u'age': u'34', u'name': u'zhang'}]]
10 >>> print j.values()[0]
11 [{u'age': u'23', u'name': u'yu'}, {u'age': u'34', u'name': u'zhang'}]
12 >>> print j.values()[0][0]
13 {u'age': u'23', u'name': u'yu'}
14 >>> print j.values()[0][0]['name']
15 yu
34.平衡点问题
平衡点:比如int[] numbers = {1,3,5,7,8,25,4,20}; 25前面的总和为24,25后面的总和也是24,25这个点就是平衡点;假如一个数组中的元素,其前面的部分等于后面的部分,那么这个点的位序就是平衡点
要求:返回任何一个平衡点
使用sum函数累加所有的数。
使用一个变量fore来累加序列的前部。直到满足条件fore<(total-number)/2;
python代码如下:
1 numbers = [1,3,5,7,8,2,4,20]
2
3 #find total
4 total=sum(numbers)
5
6 #find num
7 fore=0
8 for number in numbers:
9 if fore<(total-number)/2 :
10 fore+=number
11 else:
12 break
13
14 #print answer
15 if fore == (total-number)/2 :
16 print number
17 else :
18 prin