0%

Python支持多种图形界面的第三方库,包括:Tk,Qt,GTK等。Python自带的是支持Tk的Tkinter。

turtle

好可爱的绘图库…

1
2
3
4
width(5) # 设置笔刷宽度
pencolor('red') # 设置颜色
forward(200)
right(90)

python_turtle_tree

Tkinter

廖雪峰的博客讲的不清楚啊…

抄的代码:

阅读全文 »

学会urllib和requests之后,再来学学底层的TCP协议(UDP鸽了)。

客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import socket

s = socket.socket() # 创建socket
s.connect(('www.baidu.com', 80))

s.send(b'GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: close\r\n\r\n')

buffer = []
while True:
d = s.recv(1024) # 取出1024字节
if d:
buffer.append(d)
else:
break

s.close() # 关闭socket

data = b''.join(buffer)
header, html = data.split(b'\r\n\r\n', 1)
print(header.decode())
with open('t.html', 'wb') as f: # 保存
f.write(html)

socket.socket(socket.AF_INET, socket.SOCK_STREAM),其中AF_INET指定使用IPv4协议,AF_INET6表示IPv6。SOCK_STREAM指定使用面向流的TCP协议。如无特殊情况可以留空。

使用HTTPS:

1
2
3
4
import ssl

s = ssl.wrap_socket(socket.socket())
s.connect(('www.baidu.com', 443))

服务端

服务端需要打开特定端口监听。一个Socket依赖4项:服务器地址、服务器端口、客户端地址、客户端端口。但是服务器还需要同时相应多个客户端的请求,所以每个连接都需要一个新的进程或线程来处理。

阅读全文 »

百度翻译

模仿

分析百度词典:

  1. 打开F12,查看Network栏
  2. 尝试输入单词girl,发现每敲一个字母后面都有请求
  3. 请求地址是:https://fanyi.baidu.com/sug
  4. 请求方式:POST
  5. 利用NetWork-All-Hearders查看,发现Form data的值是kw:girl,所以字典的key名为kw。
  6. 查看返回内容格式,返回的是json格式内容,需要用到json包

啊啊啊这几天太摸了!!!


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
from urllib import request, parse, error
import json

baseURL = 'https://fanyi.baidu.com/sug'

try:
word = input('INPUT:')
dat = parse.urlencode({"kw": word}).encode()
with request.urlopen(baseURL, data=dat) as f:
# print('Status:', f.status, f.reason)
ret = f.read().decode()
ret = json.loads(ret)
# print(ret['data'])
ls = [a['k'] for a in ret['data']]
if word in ls:
print('%s: %s' % (word, ret['data'][0]['v']))
print('Similar expressions:')
else:
print('NOT FOUND. Did you mean:')
print(ls)
except error.URLError as e:
print(e)
# 爽!

# Upd on 8.11
import requests
import json

BaseURL = 'https://fanyi.baidu.com/sug'

try:
word = input('INPUT:')
r = requests.post(BaseURL, data={'kw': word})
r.raise_for_status()
js = json.loads(r.text)
print(js)
except requests.RequestException as e:
print(e)

# requests更爽!
阅读全文 »

Learn from this

2020.7.31

容器初始化

1
2
3
4
list:[]
tuple:()
dict:{:}
set:{}

函数参数

位置参数

默认参数:默认参数必须指向不变对象!默认参数的值是在函数构建时被定义的。可以单独定义某个默认参数的值:

1
2
3
4
def enroll(a, b, c=1, d=2):
print(a, b, c, d)

enroll(1, 2, d=5) # output: 1 2 1 5
阅读全文 »