Skip to content

Commit 9eafea8

Browse files
authored
Merge pull request selfteaching#4 from selfteaching/master
daily rebase
2 parents 9c5dc60 + f2b472e commit 9eafea8

File tree

222 files changed

+60255
-1168
lines changed

Some content is hidden

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

222 files changed

+60255
-1168
lines changed

1901040027/1001S02E01_helloworld.txt

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# 自学 Python 训练营
2+
3+
### 入门训练营
4+
5+
#### 基本介绍
6+
7+
> 所谓"自学",就是"自己一个人(默默地)学" —— 这恰恰是绝大多数人一生学习失败的最根本原因。
8+
9+
训练营由 "新生大学" 联合 "糖果" 发起,针对基础相对薄弱,想要自学 Python 的人组织的训练营。
10+
11+
训练营期间由 `教研组` 规划学习路线、提供学习素材,`学员` 通过阅读、实践、交流等方式自学为主,遇到确实无法完成的难题会有专业的 `编程教练` 帮助解答,`辅导员` 会在整个过程中鼓励、推动,帮助学员完成整个训练。
12+
13+
#### 简单规则
14+
15+
1. 训练营每期 50 人,每 10 人一小组,每小组配备一名 `编程教练` 和一名 `辅导员`,周期为 14 天。
16+
2. 训练营需缴纳保证金 + 服务费,具体定价会根据运营成本动态调整。
17+
3. 每天 00:00 会发布当天 `学习材料` 和 `自学任务`,学员需要在 24:00 前完成。
18+
4. 每天需要 `提交作业` 和 `学习总结打卡`,可获得 `星星`,通过积累 `星星` 到达合格标准以上,在结营时可全额返回保证金。
19+
5. 每期会有10个名额针对 "新生大学会员" 推荐的在校高中生和在校大学生免收服务费。
20+
21+
22+
23+
[《自学 Python 入门训练营》报名入口](https://h5.youzan.com/v2/goods/2fo1zmvtzgvec)
24+
25+
ssd

1901040027/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# 自学 Python 训练营
2+
3+
### 入门训练营
4+
5+
#### 基本介绍
6+
7+
> 所谓"自学",就是"自己一个人(默默地)学" —— 这恰恰是绝大多数人一生学习失败的最根本原因。
8+
9+
训练营由 "新生大学" 联合 "糖果" 发起,针对基础相对薄弱,想要自学 Python 的人组织的训练营。
10+
11+
训练营期间由 `教研组` 规划学习路线、提供学习素材,`学员` 通过阅读、实践、交流等方式自学为主,遇到确实无法完成的难题会有专业的 `编程教练` 帮助解答,`辅导员` 会在整个过程中鼓励、推动,帮助学员完成整个训练。
12+
13+
#### 简单规则
14+
15+
1. 训练营每期 50 人,每 10 人一小组,每小组配备一名 `编程教练` 和一名 `辅导员`,周期为 14 天。
16+
2. 训练营需缴纳保证金 + 服务费,具体定价会根据运营成本动态调整。
17+
3. 每天 00:00 会发布当天 `学习材料``自学任务`,学员需要在 24:00 前完成。
18+
4. 每天需要 `提交作业``学习总结打卡`,可获得 `星星`,通过积累 `星星` 到达合格标准以上,在结营时可全额返回保证金。
19+
5. 每期会有10个名额针对 "新生大学会员" 推荐的在校高中生和在校大学生免收服务费。
20+
21+
22+
23+
[《自学 Python 入门训练营》报名入口](https://h5.youzan.com/v2/goods/2fo1zmvtzgvec)
24+
25+
ssd

19100101/Shawn/d12_training1.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import requests
2+
from pyquery import PyQuery
3+
from mymodule import stats_word
4+
5+
6+
# 通过url获取文本并分析
7+
def stats (url) :
8+
response = requests.get(url)
9+
# 提取微信公众号正文
10+
document = PyQuery (response.text)
11+
content = document ('#js_content').text()
12+
# 统计前100词频
13+
statList = stats_word.stats_text(content,100)
14+
statString = ''.join(str(i) for i in statList)
15+
16+
return statString

19100101/Shawn/d12_training2.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from wxpy import *
2+
import d12_training1
3+
bot = Bot()
4+
5+
# 找到好友并发消息
6+
my_friend = bot.friends().search('Somebody')[0]
7+
my_friend.send('请给我分享一篇文章')
8+
9+
# 获取分享文章url
10+
@bot.register(my_friend)
11+
def get_msg (msg) :
12+
if msg.type == 'Sharing' :
13+
target_url = msg.url
14+
stats_msg = d12_training1.stats(target_url)
15+
my_friend.send(stats_msg)
16+
else :
17+
pass
18+
embed()

19100101/YanHuiii/d12_training2.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
'''这是一个利用wxpy功能自动完成微信登录和获取好友转发的网址信息,
2+
将信息中的主要内容提取及获取词频反馈,并把结果发给好友的程序'''
3+
4+
import training1
5+
from wxpy import *
6+
7+
'''登录微信'''
8+
bot = Bot()
9+
10+
object1 = bot.friends()
11+
12+
@bot.register(object1)
13+
def SHARING_Msg (msg) :
14+
if msg.type == 'Sharing' :
15+
url = msg.url
16+
msg.reply(training1.stats_meg(url))
17+
else :
18+
print("您的好友还没发给您关于分享类型的信息")
19+
20+
embed()
21+

19100101/YanHuiii/training1.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
'''这是一个通过网络请求获得网页内容,使用分词工具对中文字符串
2+
进行分词,统计词频,返回结果'''
3+
import requests
4+
import pyquery
5+
from pyquery import PyQuery
6+
from mymodule import stats_word
7+
def stats_meg(url):
8+
9+
'''获取网址'''
10+
image_url = url
11+
12+
'''将网址中的内容全部赋值给response'''
13+
response = requests.get(image_url)
14+
15+
'''提取网址中的正文内容'''
16+
document = pyquery.PyQuery(response.text)
17+
content = document('#js_content').text()
18+
19+
'''返回网址正文中前100位的中文词频结果'''
20+
return stats_word.stats_text_cn(content,100)

19100101/lidong2119/d11_training1.py

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
import requests
2-
import yagmail
3-
import getpass
2+
# import yagmail
43
from pyquery import PyQuery
54
from mymodule import stats_word
65

7-
image_url = "https://mp.weixin.qq.com/s/pLmuGoc4bZrMNl7MSoWgiA"
8-
response = requests.get(image_url)
9-
document = PyQuery(response.text)
10-
content = document('#js_content').text()
11-
12-
sender = input('输入发件人邮箱地址:')
13-
password = getpass.getpass('输入发件人邮箱密码(可复制粘贴):')
14-
recipient = input('输入收件人邮箱地址:')
6+
def stats(url):
7+
response = requests.get(url)
8+
document = PyQuery(response.text)
9+
content = document('#js_content').text()
1510

1611

17-
yag = yagmail.SMTP(user=sender,password=password,host='smtp.qq.com')
18-
content = [stats_word.stats_text_cn(content,100)]
19-
yag.send(recipient,'lidong2119 d11',content)
12+
13+
14+
statList = stats_word.stats_text(content,100)
15+
statString = ''.join(str(i) for i in statList)
16+
17+
return statString

19100101/lidong2119/d12_training2.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from wxpy import *
2+
import d11_training1
3+
bot = Bot()
4+
5+
6+
my_friend = bot.friends().search('伟仪',sex=FEMALE,city='深圳')[0]
7+
my_friend.send('请小叶子分享文章')
8+
9+
10+
@bot.register(my_friend)
11+
def get_msg(msg):
12+
if msg.type == 'Sharing':
13+
target_url = msg.url
14+
stats_msg = d11_training1.stats(target_url)
15+
msg.reply(stats_msg)
16+
else:
17+
pass
18+
embed()

19100101/qiming09/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
2019.3.29
2+
1. learn to use 3rd-party libraby "wxpy".
3+
2. use "wxpy" to get others' message, analysis this message and reply the result.
4+
15
2019.3.28
26
1. learn to use 3rd-party library "requests","yagmail","pyquery".
37
2. use "requests" to get information from a url, get the content, cut the words and email them.

19100101/qiming09/d11_training1.py

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,33 @@
33
# author by : qiming
44

55
import requests
6-
import yagmail
7-
import getpass
86
from pyquery import PyQuery
97
from mymodule import stats_word
108

11-
# 设置发件人、登录密码、收件人
12-
sender = input('请输入发件人邮箱地址:')
13-
psw = input('请输入发件人邮箱登录密码:')
14-
recipient = input('请输入收件人邮箱地址:')
15-
smtp = 'smtp.163.com'
169

17-
# 访问url获取微信公众号文章
18-
response = requests.get('https://mp.weixin.qq.com/s/pLmuGoc4bZrMNl7MSoWgiA')
10+
# 定义stats函数,通过url获取文本并分析
11+
def stats (url) :
12+
response = requests.get(url)
13+
# 提取微信公众号正文
14+
document = PyQuery (response.text)
15+
content = document ('#js_content').text()
16+
# 统计前100词频
17+
statList = stats_word.stats_text(content,100)
18+
statString = ''.join(str(i) for i in statList)
19+
20+
return statString
21+
1922

20-
# 提取微信公众号正文
21-
document = PyQuery (response.text)
22-
content = document ('#js_content').text()
2323

24-
# 统计前100词频
25-
statList = stats_word.stats_text(content,100)
26-
statString = ''.join(str(i) for i in statList)
24+
# 发送邮件功能的实现方法(暂不需要)
25+
# import yagmail
26+
# import getpass
27+
28+
# 设置发件人、登录密码、收件人
29+
# sender = input('请输入发件人邮箱地址:')
30+
# psw = input('请输入发件人邮箱登录密码:')
31+
# recipient = input('请输入收件人邮箱地址:')
32+
# smtp = 'smtp.163.com'
2733

2834
# 将统计结果发送到 [email protected],title: 19100101 qiming
29-
yagmail.SMTP(sender,psw,smtp).send(recipient,'19100101 qiming',statString)
35+
# yagmail.SMTP(sender,psw,smtp).send(recipient,'19100101 qiming',statString)

19100101/qiming09/d12_training2.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# this is d12 excercise for 3rd-party library wxpy
2+
# date : 2019.3.29
3+
# author by : qiming
4+
5+
from wxpy import *
6+
import d11_training1
7+
bot = Bot()
8+
9+
# 找到好友并发消息
10+
my_friend = bot.friends().search('Somebody')[0]
11+
my_friend.send('请给我分享一篇文章')
12+
13+
# 获取分享文章url
14+
@bot.register(my_friend)
15+
def get_msg (msg) :
16+
if msg.type == 'Sharing' :
17+
target_url = msg.url
18+
stats_msg = d11_training1.stats(target_url)
19+
my_friend.send(stats_msg)
20+
else :
21+
pass
22+
embed()

19100101/qiming09/mymodule/stats_word.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ def stats_text_cn(cn,count) :
4040
else :
4141
raise ValueError ('type of argumengt is not str')
4242

43-
def stats_text(text_en_cn,count_en_cn) :
43+
def stats_text(text_en_cn,count) :
4444
''' 1. 合并英汉词频统计:调用stats_text_en()和stats_text_cn()并合并其结果。
4545
2. 参数类型检查,不为字符串抛出异常。
4646
'''
4747
if type(text_en_cn) == str :
48-
return (stats_text_en(text_en_cn,count_en_cn)+stats_text_cn(text_en_cn,count_en_cn))
48+
mergeCounter = stats_text_en(text_en_cn,count)+stats_text_cn(text_en_cn,count)
49+
return mergeCounter
4950
else :
5051
raise ValueError ('type of argumengt is not str')
5152

19100101/sundyyang/d12_training2.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
2+
# day12,通过调用微信组件,实现监测信息并反馈的功能
3+
4+
# 导入模块
5+
from wxpy import *
6+
from mymodule import stats_word
7+
from pyquery import PyQuery
8+
import requests
9+
10+
# 1、监听好友消息
11+
# 2、如果朋友为分享类型的消息,则获取消息的网页链接(msg.url)
12+
# 3、导入stats_word方法
13+
# 4、分析msg.url词频
14+
# 5、将词频结果返回给发送消息的好友
15+
16+
# 初始化机器人,扫码登陆
17+
bot = Bot()
18+
19+
'''
20+
my_friend = bot.friends().search('亲宝儿')[0] # 测试用
21+
my_friend.send('给我分享篇文章试下')
22+
'''
23+
24+
@bot.register()
25+
def print_others(msg):
26+
print (msg.type)
27+
if msg.type =='Sharing':
28+
29+
response = requests.get(msg.url) # 请求获得内容
30+
31+
document = PyQuery(response.text) # 解析提出内容
32+
content = document('#js_content').text()
33+
34+
result = stats_word.stats_text(content)
35+
content1 = result.most_common(100)
36+
day12 = str(content1)
37+
# print("111",day12)
38+
msg.reply(day12)
39+
40+
embed() # 让程序保持运行

19100101/sundyyang/mymodule/stats_word.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def stats(orgString, newDict) :
113113
# 第7天作业
114114
def stats_text(all,count=100):
115115
if type(all) == str: # 第8天作业,为函数添加参数类型检查
116-
return (stats_text_en(all,count)+stats_text_cn(all)) # 用return语句返回
116+
return stats_text_en(all,count)+stats_text_cn(all,count) # 用return语句返回
117117

118118
# 第8天作业,为函数添加参数类型检查
119119
else:
Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
import requests
2-
import pyquery
3-
import yagmail
4-
import getpass
52
from pyquery import PyQuery
63
from mymodule import stats_word
7-
#使用requery获取微信公众号文章
8-
r = requests.get('https://mp.weixin.qq.com/s/pLmuGoc4bZrMNl7MSoWgiA')
9-
document = PyQuery(r.text)#提取公众号正文
10-
content = document('#js_content').text()
114

12-
#设置发件人 登陆密码 收件人
13-
sender = input('输入发件人邮箱')
14-
password = getpass.getpass('输入发件人邮箱密码')
15-
recipients = input('输入收件人邮箱')
16-
smtp = 'smtp.qq.com'
5+
def auto_text(url):
6+
'''1、使用requery获取url.
7+
2、导入stats_word模块,调用stats_text进行统计和词频处理,返回前100的结果'''
8+
r = requests.get(url)
9+
document = PyQuery(r.text)#提取公众号正文
10+
content = document('#js_content').text()
1711

18-
#导入stats_word模块,调用stats_text进行统计和词频处理,返回前100的结果
19-
result = stats_word.stats_text(content,100)
20-
result1 = str(result)
21-
print(result1)
12+
result = stats_word.stats_text(content,100)
13+
result1 = str(result)
14+
return result1
2215

16+
#d12_training不要用到
17+
#import getpass
18+
#import yagmail
19+
#设置发件人 登陆密码 收件人
20+
#sender = input('输入发件人邮箱')
21+
#password = getpass.getpass('输入发件人邮箱密码')
22+
#recipients = input('输入收件人邮箱')
23+
#smtp = 'smtp.qq.com'
2324
#使用yagmail发送结果到[email protected]
24-
yag = yagmail.SMTP(sender,password,smtp)
25-
yag.send(recipients,'19100101 xiaoguaishou01',result1)
25+
#yag = yagmail.SMTP(sender,password,smtp)
26+
#yag.send(recipients,'19100101 xiaoguaishou01',result1)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from wxpy import Bot,Message,embed
2+
import d11_training1
3+
#from pyquery import PyQuery
4+
#from mymodule import stats_word
5+
#初始化机器人,扫码登陆
6+
bot = Bot()
7+
8+
@bot.register()
9+
def print_others(msg):
10+
'''1、如果消息是Sharing类型,获取URL并对文本进行统计,输出前100的词频'''
11+
if msg.type == 'Sharing':#如果是sharing类型
12+
atou_url = msg.url
13+
result_url = d11_training1.auto_text(atou_url)
14+
msg.reply(result_url)#发送result的内容给好友
15+
16+
embed()
17+
18+
19+
20+

0 commit comments

Comments
 (0)