-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathatom.xml
521 lines (276 loc) · 281 KB
/
atom.xml
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>ZeroDesigner</title>
<subtitle>一切的失败源于我们对世界认知的模糊</subtitle>
<link href="http://example.com/atom.xml" rel="self"/>
<link href="http://example.com/"/>
<updated>2021-03-21T07:39:57.591Z</updated>
<id>http://example.com/</id>
<author>
<name>Jiaqi Su</name>
</author>
<generator uri="https://hexo.io/">Hexo</generator>
<entry>
<title>Python每日一谈|No.21.实例.3-Life-每天一句名人名言+天气预报</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.22.%E5%AE%9E%E4%BE%8B.3-Life-%E6%AF%8F%E5%A4%A9%E4%B8%80%E5%8F%A5%E5%90%8D%E4%BA%BA%E5%90%8D%E8%A8%80+%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.22.%E5%AE%9E%E4%BE%8B.3-Life-%E6%AF%8F%E5%A4%A9%E4%B8%80%E5%8F%A5%E5%90%8D%E4%BA%BA%E5%90%8D%E8%A8%80+%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.22.%E5%AE%9E%E4%BE%8B.3-Life-%E6%AF%8F%E5%A4%A9%E4%B8%80%E5%8F%A5%E5%90%8D%E4%BA%BA%E5%90%8D%E8%A8%80+%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.22.%E5%AE%9E%E4%BE%8B.3-Life-%E6%AF%8F%E5%A4%A9%E4%B8%80%E5%8F%A5%E5%90%8D%E4%BA%BA%E5%90%8D%E8%A8%80+%E5%A4%A9%E6%B0%94%E9%A2%84%E6%8A%A5/</id>
<published>2021-03-20T11:57:15.318Z</published>
<updated>2021-03-21T07:39:57.591Z</updated>
<content type="html"><![CDATA[<h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>今天我们来写一个每日一句</p><p>先看看效果</p><hr><p>👻👽⭐👽🗻👻</p><p>python every day</p><p> 生活的道路一旦选定,就要勇敢地走到底,决不回头。</p><p>————————————</p><p>🗓|日期:2021-03-20</p><p>🌏|坐标: 北京</p><p>🌌|天气: 晴</p><p>🌡|温度:低温 2℃~高温 15℃</p><p>🌬|风力:3级</p><hr><h3 id="分析"><a href="#分析" class="headerlink" title="分析"></a>分析</h3><p>先来简单分析下</p><ol><li><p>emoji</p><p>web:<a href="https://www.emojiall.com/zh-hans">https://www.emojiall.com/zh-hans</a></p><p>简介:绘文字(日语:絵文字/えもじemoji)是日本在无线通信中所使用的视觉情感符号,绘指图画,文字指的则是字符,可用来代表多种表情,如笑脸表示笑、蛋糕表示食物等。 在NTTDoCoMo的i-mode系统电话系统中,绘文字的尺寸是12x12像素,在传送时,一个图形有2个字节。Unicode编码为E63E到E757,而在Shift-JIS编码则是从F89F到F9FC。基本的绘文字共有176个符号,在C-HTML4.0的编程语言中,则另增添了76个情感符号。 最早由栗田穰崇(Shigetaka Kurita)创作,并在日本网络及手机用户中流行。 自苹果公司发布的iOS 5输入法中加入了emoji后,这种表情符号开始席卷全球,目前emoji已被大多数现代计算机系统所兼容的Unicode编码采纳,普遍应用于各种手机短信和社交网络中。</p><p>来源于–知乎</p><p>然后,使用一个python包来调用</p><p>web:<a href="https://pypi.org/project/emoji/">https://pypi.org/project/emoji/</a></p><p>安装:<code>pip install emoji</code></p><p>先看一下关键字和表情的对应表:<a href="https://www.webfx.com/tools/emoji-cheat-sheet/">https://www.webfx.com/tools/emoji-cheat-sheet/</a></p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210320143730509.png" alt="image-20210320143730509"></p><p>使用:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">In [29]:import emoji</span><br><span class="line">In [30]: print(emoji.emojize(':smile:',use_aliases=True))</span><br><span class="line">😄</span><br></pre></td></tr></table></figure></li><li><p>python every day</p><p>欢迎关注我的微信公众号(FindKey),知乎(ZeroDesigner),b站(ZeroDesigner)什么的,没了,这就是一个字符串</p></li><li><p>名人名言</p><p>我们先来找碗鸡汤</p><p>我这里准备了一份,在当前目录下,为<code>tsv</code>格式,分割符为<code>table</code>键,名称为<code>名人名言.tsv</code></p><p>先来看下</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">名言出处</span><br><span class="line">君子赠人以言,庶人赠人以财。荀况</span><br><span class="line">使意志获得自由的唯一途径,就是让意志摆脱任性。黑尔</span><br><span class="line">如烟往事俱忘却,心底无私天地宽。陶铸</span><br><span class="line">执着追求并从中得到最大快乐的人,才是成功者。梭罗</span><br><span class="line">有百折不挠的信念的所支持的人的意志,比那些似乎是无敌的物质力量有更强大的威力。爱因斯坦</span><br><span class="line">生活在我们这个世界里,不读书就完全不可能了解人。高尔基</span><br><span class="line">一个人即使已登上顶峰,也仍要自强不息。罗素·贝克</span><br><span class="line">对具有高度自觉与深邃透彻的心灵的人来说,痛苦与烦恼是他必备的气质。陀思妥耶夫斯基</span><br><span class="line">先相信你自己,然后别人才会相信你。屠格涅夫</span><br><span class="line">上天赋予的生命,就是要为人类的繁荣和平和幸福而奉献。松下幸之助</span><br></pre></td></tr></table></figure><p>安装<code>pandas</code>:</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pip install pandas</span><br></pre></td></tr></table></figure><p> 使用:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">5</span>]: <span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"> ...: data = pd.read_csv(<span class="string">'./soup-master/名人名言.tsv'</span>,sep=<span class="string">'\t'</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">6</span>]: data</span><br><span class="line">Out[<span class="number">6</span>]:</span><br><span class="line"> 名言 出处</span><br><span class="line"><span class="number">0</span> 君子赠人以言,庶人赠人以财。 荀况</span><br><span class="line"><span class="number">1</span> 使意志获得自由的唯一途径,就是让意志摆脱任性。 黑尔</span><br><span class="line"><span class="number">2</span> 如烟往事俱忘却,心底无私天地宽。 陶铸</span><br><span class="line"><span class="number">3</span> 执着追求并从中得到最大快乐的人,才是成功者。 梭罗</span><br><span class="line"><span class="number">4</span> 有百折不挠的信念的所支持的人的意志,比那些似乎是无敌的物质力量有更强大的威力。 爱因斯坦</span><br><span class="line">.. ... ...</span><br><span class="line"><span class="number">95</span> 节制使快乐增加并使享受加强。 德谟克利特</span><br><span class="line"><span class="number">96</span> 书不仅是生活,而且是现在、过去和未来文化生活的源泉。 库法耶夫</span><br><span class="line"><span class="number">97</span> 奢侈是舒适的,否则就不是奢侈。 CocoChanel</span><br><span class="line"><span class="number">98</span> 命运压不垮一个人,只会使人坚强起来。 伯尔</span><br><span class="line"><span class="number">99</span> 沉沉的黑夜都是白天的前奏。 郭小川</span><br><span class="line"></span><br><span class="line">[<span class="number">100</span> rows x <span class="number">2</span> columns]</span><br><span class="line"></span><br></pre></td></tr></table></figure></li><li><p>获取日期</p><p>使用python自带的datatime模块</p><p>例如:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">39</span>]: <span class="comment"># 导入</span></span><br><span class="line"> ...: <span class="keyword">import</span> datetime</span><br><span class="line"> ...: <span class="comment"># 获取当前时间,并且格式化为年-月-日形式</span></span><br><span class="line"> ...: t = datetime.datetime.now().strftime(<span class="string">'%Y-%m-%d'</span>)</span><br><span class="line"> ...: print(t)</span><br><span class="line"><span class="number">2021</span>-03-<span class="number">20</span></span><br></pre></td></tr></table></figure></li><li><p>获取地址,定位到城市</p><p>a. 首先查询本机ip地址</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">100</span>]: <span class="comment">#导入python自带的包</span></span><br><span class="line"> ...: <span class="keyword">import</span> requests</span><br><span class="line"> ...: url = <span class="string">'http://txt.go.sohu.com/ip/soip'</span></span><br><span class="line"> ...: web = requests.get(url)</span><br><span class="line"> ...: web.text</span><br><span class="line">Out[<span class="number">100</span>]: <span class="string">'String.prototype.getQueryString=function(v){var reg=new RegExp("(^|&|\\\\?)" + v + "=([^&]*)(&|$)"), r;if(r=this.match(reg)){return unescape(r[2]);}return null;};var sohu_IP_Loc="unknown",LocUrl=document.location.href;if((LocUrl.indexOf("sohusce.com") >= 0)||(LocUrl.indexOf("sohu.com") >= 0)||(LocUrl.indexOf("chinaren.com") >= 0)||(LocUrl.indexOf("17173.com") >= 0)||(LocUrl.indexOf("focus.cn") >= 0)){window.sohu_user_ip="111.201.148.162";sohu_IP_Loc="CN110000";sohu_IP_Loc_V="CN110000";}var AdLoc2=sohu_IP_Loc.substr(0,2),AdLoc4=sohu_IP_Loc.substr(0,4),AdLoc6=sohu_IP_Loc.substr(0,6);if(window.location.href.getQueryString("ip"))sohu_IP_Loc=AdLoc2=AdLoc4=AdLoc6=window.location.href.getQueryString("ip");'</span></span><br><span class="line"><span class="comment"># 可以看到ip地址为111.201.148.162</span></span><br><span class="line"><span class="comment">#先分割,取1号,再分割,取0,当然,你喜欢用正则,我也不拦着</span></span><br><span class="line">In [<span class="number">103</span>]: web.text.split(<span class="string">'{window.sohu_user_ip="'</span>)[<span class="number">1</span>].split(<span class="string">'";sohu_IP_Loc='</span>)[<span class="number">0</span>]</span><br><span class="line">Out[<span class="number">103</span>]: <span class="string">'111.201.148.162'</span></span><br></pre></td></tr></table></figure><p>b. 根据ip地址获取城市信息</p><p>一般分为两种方式</p><ol><li><p>一种是使用api通过网页</p></li><li><p>一种是离线:<a href="https://blog.csdn.net/qf0129/article/details/83145765">https://blog.csdn.net/qf0129/article/details/83145765</a></p></li></ol><p>我现在使用网页api</p><p>地址:<a href="https://www.ip138.com/">https://www.ip138.com</a></p><p>申请一个token</p><p><a href="https://user.ip138.com/ip/">https://user.ip138.com/ip/</a></p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210320162145213.png" alt="image-20210320162145213"></p><p>选择在线API申请,注册完成之后,校验信息那边有token</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/Screen%20Shot%202021-03-20%20at%204.22.14%20PM.png" alt="Screen Shot 2021-03-20 at 4.22.14 PM"></p><p>ip查询接口文档为:</p><p><a href="https://user.ip138.com/ip/doc">https://user.ip138.com/ip/doc</a></p><p>查询:</p><p><a href="http://api.ip138.com/ip/?ip=%E5%A1%AB%E5%85%A5%E4%BD%A0%E7%9A%84ip%E5%9C%B0%E5%9D%80&datatype=text&token=%E5%A1%AB%E5%85%A5%E4%BD%A0%E7%9A%84token">http://api.ip138.com/ip/?ip=填入你的ip地址&datatype=text&token=填入你的token</a></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">98</span>]: <span class="keyword">import</span> requests</span><br><span class="line"> ...: url = <span class="string">'http://api.ip138.com/ip/?ip=111.200.157.165&datatype=text&token=abbbcccddd123456789'</span></span><br><span class="line"> ...: web = requests.get(url)</span><br><span class="line"> ...: web.text</span><br><span class="line">Out[<span class="number">98</span>]: <span class="string">'111.200.157.165\t中国 北京 北京 联通 100000 010'</span></span><br><span class="line">In [<span class="number">99</span>]: <span class="comment"># 很明显的可以看到是国家省份城市</span></span><br><span class="line"> ...: <span class="comment"># 我们再来看一个</span></span><br><span class="line">In [<span class="number">97</span>]: <span class="keyword">import</span> requests</span><br><span class="line">...: url = <span class="string">'http://api.ip138.com/ip/?ip=27.128.190.0&datatype=text&token=f6f</span></span><br><span class="line"><span class="string">...: 83777eef0804454d340dd7aabbcb4'</span></span><br><span class="line">...: web = requests.get(url)</span><br><span class="line">...: web.text</span><br><span class="line">Out[<span class="number">97</span>]: <span class="string">'27.128.190.0\t中国 河北 石家庄 电信 050000 0311'</span></span><br><span class="line">In [<span class="number">97</span>]: <span class="comment"># 获取城市信息</span></span><br><span class="line">In [<span class="number">74</span>]: city = web.text.split()[<span class="number">3</span>]</span><br><span class="line">In [<span class="number">75</span>]: city</span><br><span class="line">Out[<span class="number">75</span>]: <span class="string">'石家庄'</span> </span><br></pre></td></tr></table></figure></li><li><p>查询本市的天气</p><p>使用中华万年历API接口,获取天气信息,json格式</p><p><a href="http://wthrcdn.etouch.cn/weather_mini?city=%E5%8C%97%E4%BA%AC">http://wthrcdn.etouch.cn/weather_mini?city=北京</a></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">96</span>]: <span class="keyword">import</span> requests</span><br><span class="line"> ...: url = <span class="string">'http://wthrcdn.etouch.cn/weather_mini?city=北京'</span></span><br><span class="line"> ...: web = requests.get(url)</span><br><span class="line"> ...: web.text</span><br><span class="line">Out[<span class="number">96</span>]: <span class="string">'{"data":{"yesterday":{"date":"19日星期五","high":"高温 10℃","fx":"西南风","low":"低温 3℃","fl":"<![CDATA[2级]]>","type":"小雨"},"city":"北京","forecast":[{"date":"20日星期六","high":"高温 15℃","fengli":"<![CDATA[3级]]>","low":"低温 3℃","fengxiang":"西北风","type":"晴"},{"date":"21日星期天","high":"高温 13℃","fengli":"<![CDATA[3级]]>","low":"低温 0℃","fengxiang":"西北风","type":"晴"},{"date":"22日星期一","high":"高温 18℃","fengli":"<![CDATA[2级]]>","low":"低温 3℃","fengxiang":"西南风","type":"晴"},{"date":"23日星期二","high":"高温 19℃","fengli":"<![CDATA[1级]]>","low":"低温 7℃","fengxiang":"南风","type":"晴"},{"date":"24日星期三","high":"高温 20℃","fengli":"<![CDATA[2级]]>","low":"低温 4℃","fengxiang":"北风","type":"晴"}],"ganmao":"感冒易发期,外出请适当调整衣物,注意补充水分。","wendu":"12"},"status":1000,"desc":"OK"}'</span></span><br><span class="line">In [<span class="number">97</span>]: <span class="comment"># 解析json</span></span><br><span class="line">In [<span class="number">104</span>]: <span class="keyword">import</span> json</span><br><span class="line">In [<span class="number">131</span>]: wea_dict=json.loads(web.text)</span><br><span class="line">In [<span class="number">132</span>]: wea_dict</span><br><span class="line">Out[<span class="number">132</span>]:</span><br><span class="line">{<span class="string">'data'</span>: {<span class="string">'yesterday'</span>: {<span class="string">'date'</span>: <span class="string">'19日星期五'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 10℃'</span>,</span><br><span class="line"> <span class="string">'fx'</span>: <span class="string">'西南风'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 3℃'</span>,</span><br><span class="line"> <span class="string">'fl'</span>: <span class="string">'<![CDATA[2级]]>'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'小雨'</span>},</span><br><span class="line"> <span class="string">'city'</span>: <span class="string">'北京'</span>,</span><br><span class="line"> <span class="string">'forecast'</span>: [{<span class="string">'date'</span>: <span class="string">'20日星期六'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 15℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[3级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 3℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'西北风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>},</span><br><span class="line"> {<span class="string">'date'</span>: <span class="string">'21日星期天'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 13℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[3级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 0℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'西北风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>},</span><br><span class="line"> {<span class="string">'date'</span>: <span class="string">'22日星期一'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 18℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[2级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 3℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'西南风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>},</span><br><span class="line"> {<span class="string">'date'</span>: <span class="string">'23日星期二'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 19℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[1级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 7℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'南风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>},</span><br><span class="line"> {<span class="string">'date'</span>: <span class="string">'24日星期三'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 20℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[2级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 4℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'北风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>}],</span><br><span class="line"> <span class="string">'ganmao'</span>: <span class="string">'感冒易发期,外出请适当调整衣物,注意补充水分。'</span>,</span><br><span class="line"> <span class="string">'wendu'</span>: <span class="string">'12'</span>},</span><br><span class="line"> <span class="string">'status'</span>: <span class="number">1000</span>,</span><br><span class="line"> <span class="string">'desc'</span>: <span class="string">'OK'</span>}</span><br><span class="line"></span><br><span class="line">In [<span class="number">135</span>]: <span class="comment"># 所以今天的天气为</span></span><br><span class="line">In [<span class="number">136</span>]: wea_dict[<span class="string">'data'</span>][<span class="string">'forecast'</span>][<span class="number">0</span>]</span><br><span class="line">Out[<span class="number">136</span>]:</span><br><span class="line">{<span class="string">'date'</span>: <span class="string">'20日星期六'</span>,</span><br><span class="line"> <span class="string">'high'</span>: <span class="string">'高温 15℃'</span>,</span><br><span class="line"> <span class="string">'fengli'</span>: <span class="string">'<![CDATA[3级]]>'</span>,</span><br><span class="line"> <span class="string">'low'</span>: <span class="string">'低温 3℃'</span>,</span><br><span class="line"> <span class="string">'fengxiang'</span>: <span class="string">'西北风'</span>,</span><br><span class="line"> <span class="string">'type'</span>: <span class="string">'晴'</span>}</span><br><span class="line"> </span><br></pre></td></tr></table></figure></li></ol><h3 id="整体代码"><a href="#整体代码" class="headerlink" title="整体代码"></a>整体代码</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># -*- coding: utf-8 -*-</span></span><br><span class="line"><span class="comment"># 导入所需包</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">import</span> json</span><br><span class="line"><span class="keyword">import</span> emoji</span><br><span class="line"><span class="keyword">import</span> random</span><br><span class="line"><span class="keyword">import</span> datetime</span><br><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">import</span> pandas <span class="keyword">as</span> pd</span><br><span class="line"></span><br><span class="line"><span class="comment"># 随机形成几个emoji字符</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">random_emoji</span>(<span class="params">num</span>):</span></span><br><span class="line"> <span class="comment"># 挑选几个比较优质的emoji</span></span><br><span class="line"> emoji_list = [<span class="string">':thumbs_up:'</span>,<span class="string">':collision:'</span>,<span class="string">':star:'</span>,<span class="string">':sparkles:'</span>,<span class="string">':alien:'</span>,<span class="string">':fire:'</span>,<span class="string">':whale:'</span>, <span class="string">':mount_fuji:'</span>,<span class="string">':ghost:'</span>]</span><br><span class="line"> <span class="comment"># 将其随机组合成几个字符</span></span><br><span class="line"> emoji_str = <span class="string">''</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(num):</span><br><span class="line"> emoji_str = emoji_str + random.choice(emoji_list)</span><br><span class="line"> <span class="keyword">return</span> emoji_str</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 读取名人名言并随机选择一条</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_saying</span>(<span class="params">file</span>):</span></span><br><span class="line"> df = pd.read_csv(file,sep=<span class="string">'\t'</span>)</span><br><span class="line"> <span class="keyword">return</span> random.choice(df[<span class="string">'名言'</span>])</span><br><span class="line"></span><br><span class="line"><span class="comment"># 定义获取ip的函数</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_host_ip</span>():</span></span><br><span class="line"> url = <span class="string">'http://txt.go.sohu.com/ip/soip'</span></span><br><span class="line"> web = requests.get(url)</span><br><span class="line"> <span class="keyword">return</span> web.text.split(<span class="string">'{window.sohu_user_ip="'</span>)[<span class="number">1</span>].split(<span class="string">'";sohu_IP_Loc='</span>)[<span class="number">0</span>]</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 定义通过ip获取城市的函数</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_city</span>(<span class="params">ip,token</span>):</span></span><br><span class="line"> url = <span class="string">'http://api.ip138.com/ip/?ip='</span>+ip+<span class="string">'&datatype=text&token='</span>+token</span><br><span class="line"> web = requests.get(url)</span><br><span class="line"> <span class="keyword">return</span> web.text.split()[<span class="number">3</span>]</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 定义通过城市获取天气信息的函数</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">get_weather</span>(<span class="params">city</span>):</span></span><br><span class="line"> url = <span class="string">'http://wthrcdn.etouch.cn/weather_mini?city='</span>+city</span><br><span class="line"> web = requests.get(url)</span><br><span class="line"> wea_dict = json.loads(web.text)</span><br><span class="line"> <span class="keyword">return</span> wea_dict[<span class="string">'data'</span>][<span class="string">'forecast'</span>][<span class="number">0</span>]</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 填入我们的格式化字符串中</span></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">output_str</span>(<span class="params">emoji_str,saying,city,wea_dict</span>):</span></span><br><span class="line"> <span class="comment"># 获取日期</span></span><br><span class="line"> date = datetime.datetime.now().strftime(<span class="string">'%Y-%m-%d'</span>)</span><br><span class="line"> <span class="comment"># 格式化字符串</span></span><br><span class="line"> format_str = <span class="string">"%s \npython every day\n %s \n———————————— \n🗓|日期:%s \n🌏|坐标: %s\n🌌|天气: %s\n🌡|温度:%s\n🌬|风力:%s"</span></span><br><span class="line"> <span class="comment"># 解析天气信息</span></span><br><span class="line"> wea_type = wea_dict[<span class="string">'type'</span>]</span><br><span class="line"> wind = wea_dict[<span class="string">'fengli'</span>].split(<span class="string">'CDATA['</span>)[<span class="number">1</span>][:<span class="number">2</span>]</span><br><span class="line"> temp = wea_dict[<span class="string">'low'</span>] + <span class="string">'~'</span> + wea_dict[<span class="string">'high'</span>]</span><br><span class="line"> out = format_str % (emoji_str, saying, date, city, wea_type, temp,wind)</span><br><span class="line"> <span class="keyword">return</span> out</span><br><span class="line"></span><br><span class="line"><span class="function"><span class="keyword">def</span> <span class="title">simply_get_everyday</span>(<span class="params">num = <span class="number">6</span>, file = <span class="string">'./soup-master/名人名言.tsv'</span>, token = <span class="string">'get_by_yourself'</span></span>):</span></span><br><span class="line"> <span class="comment"># 注释:因为无复杂函数,所以只是为此函数作说明</span></span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 描述:</span></span><br><span class="line"><span class="string"> 自动获取当前地理位置,天气,以及名人名言</span></span><br><span class="line"><span class="string"> 输出每日一句</span></span><br><span class="line"><span class="string"> 参数:</span></span><br><span class="line"><span class="string"> num: 需要emoji 的数目,默认为 6,类型:int</span></span><br><span class="line"><span class="string"> file: 名人名言文件存放目录,默认为 ./soup-master/名人名言.tsv,类型:str</span></span><br><span class="line"><span class="string"> token: 申请的http://api.ip138.com/ip 的token,默认为 get_by_yourself,类型:str</span></span><br><span class="line"><span class="string"> 返回:</span></span><br><span class="line"><span class="string"> out,含有emoji的字符串,类型:str</span></span><br><span class="line"><span class="string"> 使用:</span></span><br><span class="line"><span class="string"> >>> out = simply_get_everyday(6,'./soup-master/名人名言.tsv','aaaaaaaabbbbbbcccccddddd123454')</span></span><br><span class="line"><span class="string"> >>> print(out)</span></span><br><span class="line"><span class="string"> 👻👽⭐👽🗻👻</span></span><br><span class="line"><span class="string"> python every day</span></span><br><span class="line"><span class="string"> 生活的道路一旦选定,就要勇敢地走到底,决不回头。</span></span><br><span class="line"><span class="string"> ————————————</span></span><br><span class="line"><span class="string"> 🗓|日期:2021-03-20</span></span><br><span class="line"><span class="string"> 🌏|坐标: 北京</span></span><br><span class="line"><span class="string"> 🌌|天气: 晴</span></span><br><span class="line"><span class="string"> 🌡|温度:低温 2℃~高温 15℃</span></span><br><span class="line"><span class="string"> 🌬|风力:3级</span></span><br><span class="line"><span class="string"> 异常:</span></span><br><span class="line"><span class="string"> TypeError: emoji的数目类型输入错误</span></span><br><span class="line"><span class="string"> IndexError: token输入错误,或者已经失效</span></span><br><span class="line"><span class="string"> FileNotFoundError: 名人名言文件位置输入错误</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> emoji_str = random_emoji(num)</span><br><span class="line"> saying = get_saying(file)</span><br><span class="line"> ip = get_host_ip()</span><br><span class="line"> city = get_city(ip,token)</span><br><span class="line"> wea_dict = get_weather(city)</span><br><span class="line"> out = output_str(emoji_str,saying,city,wea_dict)</span><br><span class="line"> <span class="keyword">return</span> emoji.emojize(out)</span><br><span class="line"><span class="comment"># 进入主函数</span></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">"__main__"</span>:</span><br><span class="line"> print(simply_get_everyday(num = <span class="number">6</span>, file = <span class="string">'./soup-master/名人名言.tsv'</span>, token = <span class="string">'aaaaaabbbbbcccccddddd1234'</span>))</span><br><span class="line"></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h3><p>今天我们来写一个每日一句</p>
<p>先看看效果</p>
<hr>
<p>👻👽⭐👽🗻👻</p>
<p>python every </summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.5</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.5/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.5/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="字典"><a href="#字典" class="headerlink" title="字典"></a>字典</h3><ul><li><p>字典是经常使用的数据结构</p></li><li><p>字典分为key 以及value两部分</p></li><li><p>每个Key都可以对应一个value</p></li><li><p>使用<code>{}</code>来创建字典</p></li><li><p>字典的元素可以是比较任意的类型,例如列表,元祖等</p></li><li><p>字典的一般操作有创建,更新元素,删除元素,添加元素,以及遍历</p></li></ul><p><strong>实例</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">#创建一个空字典</span></span><br><span class="line">In [<span class="number">1</span>]: a = {}</span><br><span class="line"></span><br><span class="line">In [<span class="number">2</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">2</span>]: <span class="built_in">dict</span></span><br><span class="line"> </span><br><span class="line"><span class="comment"># 当然也可以创建一个非空字典</span></span><br><span class="line">In [<span class="number">4</span>]: b = {<span class="string">'Name'</span>: <span class="string">'Zara'</span>, <span class="string">'Age'</span>: <span class="number">7</span>, <span class="string">'Class'</span>: <span class="string">'First'</span>}</span><br><span class="line"></span><br><span class="line">In [<span class="number">5</span>]: b</span><br><span class="line">Out[<span class="number">5</span>]: {<span class="string">'Name'</span>: <span class="string">'Zara'</span>, <span class="string">'Age'</span>: <span class="number">7</span>, <span class="string">'Class'</span>: <span class="string">'First'</span>}</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 在b中更新元素</span></span><br><span class="line">In [<span class="number">6</span>]: b[<span class="string">'Name'</span>]</span><br><span class="line">Out[<span class="number">6</span>]: <span class="string">'Zara'</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">7</span>]: b[<span class="string">'Name'</span>] = <span class="string">'Xiaoming'</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">8</span>]: b</span><br><span class="line">Out[<span class="number">8</span>]: {<span class="string">'Name'</span>: <span class="string">'Xiaoming'</span>, <span class="string">'Age'</span>: <span class="number">7</span>, <span class="string">'Class'</span>: <span class="string">'First'</span>}</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 在删除b中元素</span></span><br><span class="line">In [<span class="number">9</span>]: <span class="keyword">del</span> b[<span class="string">'Name'</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: b</span><br><span class="line">Out[<span class="number">10</span>]: {<span class="string">'Age'</span>: <span class="number">7</span>, <span class="string">'Class'</span>: <span class="string">'First'</span>}</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 在b中添加元素</span></span><br><span class="line">In [<span class="number">11</span>]: b[<span class="string">'new'</span>] = <span class="string">'nihao'</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">12</span>]: b</span><br><span class="line">Out[<span class="number">12</span>]: {<span class="string">'Age'</span>: <span class="number">7</span>, <span class="string">'Class'</span>: <span class="string">'First'</span>, <span class="string">'new'</span>: <span class="string">'nihao'</span>}</span><br><span class="line"></span><br><span class="line"></span><br></pre></td></tr></table></figure><h3 id="集合"><a href="#集合" class="headerlink" title="集合"></a>集合</h3><ul><li>集合是无序的,<strong>不重复的</strong></li><li>使用<code>set()</code>来创建一个集合</li><li>你可以添加元素,也可以删除元素</li><li>集合比较重要的是其运算求交集,并集等等</li></ul><p><strong>实例</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建一个集合</span></span><br><span class="line">In [<span class="number">13</span>]: a = <span class="built_in">set</span>(<span class="string">'abracadabra'</span>)</span><br><span class="line"> ...: b = <span class="built_in">set</span>(<span class="string">'alacazam'</span>)</span><br><span class="line"> </span><br><span class="line">In [<span class="number">24</span>]: a = <span class="built_in">set</span>([<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'r'</span>])</span><br><span class="line">In [<span class="number">26</span>]: b = <span class="built_in">set</span>([<span class="string">'a'</span>, <span class="string">'c'</span>, <span class="string">'l'</span>, <span class="string">'m'</span>, <span class="string">'z'</span>])</span><br><span class="line">In [<span class="number">25</span>]: a</span><br><span class="line">Out[<span class="number">25</span>]: {<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'r'</span>}</span><br><span class="line"></span><br><span class="line">In [<span class="number">27</span>]: b</span><br><span class="line">Out[<span class="number">27</span>]: {<span class="string">'a'</span>, <span class="string">'c'</span>, <span class="string">'l'</span>, <span class="string">'m'</span>, <span class="string">'z'</span>}</span><br><span class="line"></span><br><span class="line">In [<span class="number">14</span>]: a</span><br><span class="line">Out[<span class="number">14</span>]: {<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'r'</span>}</span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: b</span><br><span class="line">Out[<span class="number">15</span>]: {<span class="string">'a'</span>, <span class="string">'c'</span>, <span class="string">'l'</span>, <span class="string">'m'</span>, <span class="string">'z'</span>}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 求ab的交集</span></span><br><span class="line">In [<span class="number">17</span>]: a & b</span><br><span class="line">Out[<span class="number">17</span>]: {<span class="string">'a'</span>, <span class="string">'c'</span>}</span><br><span class="line"></span><br><span class="line"><span class="comment"># 求ab的并集</span></span><br><span class="line">In [<span class="number">16</span>]: a | b</span><br><span class="line">Out[<span class="number">16</span>]: {<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'l'</span>, <span class="string">'m'</span>, <span class="string">'r'</span>, <span class="string">'z'</span>}</span><br><span class="line"></span><br><span class="line"><span class="comment">#在a中但不在b中的元素</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">18</span>]: a-b</span><br><span class="line">Out[<span class="number">18</span>]: {<span class="string">'b'</span>, <span class="string">'d'</span>, <span class="string">'r'</span>}</span><br><span class="line"></span><br><span class="line"><span class="comment">#不在a中不在b中</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">19</span>]: a ^ b</span><br><span class="line">Out[<span class="number">19</span>]: {<span class="string">'b'</span>, <span class="string">'d'</span>, <span class="string">'l'</span>, <span class="string">'m'</span>, <span class="string">'r'</span>, <span class="string">'z'</span>}</span><br><span class="line"> </span><br><span class="line"> </span><br><span class="line"><span class="comment">#添加元素</span></span><br><span class="line">In [<span class="number">28</span>]: a.add(<span class="string">'g'</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">29</span>]: a</span><br><span class="line">Out[<span class="number">29</span>]: {<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'g'</span>, <span class="string">'r'</span>}</span><br><span class="line"><span class="comment">#移除元素</span></span><br><span class="line">In [<span class="number">30</span>]: a.remove(<span class="string">'g'</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">31</span>]: a</span><br><span class="line">Out[<span class="number">31</span>]: {<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'r'</span>}</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="字典"><a href="#字典" class="headerlink" title="字典"></a>字典</h3><ul>
<li><p>字典是经常使用的数据结构</p>
</li>
<li><p>字典分为key 以及value两部分</p>
</li>
<l</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.6</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.6/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.6/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="条件控制"><a href="#条件控制" class="headerlink" title="条件控制"></a>条件控制</h3><p>简单说下就是<code>if</code>判断</p><p><img src="https://i.loli.net/2021/02/25/EHfGhODU4zk9mqx.jpg" alt="cainiaojiaocheng1"></p><p>简单来说下基本形式就是:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> 条件一:</span><br><span class="line">执行动作一</span><br><span class="line"><span class="keyword">elif</span> 条件二:</span><br><span class="line">执行动作二:</span><br><span class="line"><span class="keyword">else</span> 条件三:</span><br><span class="line">执行动作三</span><br></pre></td></tr></table></figure><p>如果你只需要判断一种条件那么:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> 条件一:</span><br><span class="line">执行动作一</span><br></pre></td></tr></table></figure><p>甚至不需要else</p><p>需要注意的是 <code>if</code>判断条件后面需要加<code>:</code></p><p><code>if</code>常和<code>while</code>以及<code>for</code>联用</p><h3 id="实例:"><a href="#实例:" class="headerlink" title="实例:"></a>实例:</h3><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 从一个列表中用判断某个数字是否存在</span></span><br><span class="line">a = [<span class="number">1</span>,<span class="number">2</span>]</span><br><span class="line"><span class="keyword">if</span> <span class="number">1</span> <span class="keyword">in</span> a:</span><br><span class="line">print(<span class="string">'1 in a'</span>)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 判断一个列表中特定数字是否存在</span></span><br><span class="line"><span class="comment"># 创建一个列表,包含`1,2,3,4`四个元素</span></span><br><span class="line">a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"><span class="comment"># 遍历列表</span></span><br><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"><span class="comment">#判断列表元素是否等于1</span></span><br><span class="line"><span class="keyword">if</span> i == <span class="number">1</span>:</span><br><span class="line">print(<span class="string">'1 in a'</span>)</span><br><span class="line"><span class="comment">#判断列表元素是否等于2</span></span><br><span class="line"><span class="keyword">elif</span> <span class="number">1</span> < i < <span class="number">3</span>:</span><br><span class="line">print(<span class="string">'2 in a'</span>)</span><br><span class="line"><span class="comment">#如果列表元素既不等于1也不等于2</span></span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line">print(<span class="string">'this >= 3'</span>)</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>当然列表也可以嵌套,这取决你的解决问题的复杂程度</p><p><strong>你当然可以按照下述操作进行使用</strong></p><p><strong>但是需要注意</strong></p><p><strong>当你的问题达到一个很复杂的程度的时候,使用嵌套方式会加大你的记忆程度,以及程序的使用难度以及设计难度</strong></p><p><strong>而且会使问题的解决方式实际上变得更为复杂,这取决于你的记忆以及编码水平</strong></p><p><strong>同时在这里你应该注意缩进符对python的影响,只要有一个缩进有问题,此程序便不可运行</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">13</span>]: a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>,<span class="number">6</span>,<span class="number">7</span>,<span class="number">8</span>,<span class="number">9</span>]</span><br><span class="line"> ...:</span><br><span class="line"> ...: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...:<span class="keyword">if</span> <span class="number">1</span><i<<span class="number">4</span>:</span><br><span class="line"> ...:<span class="keyword">if</span> i == <span class="number">1</span>:</span><br><span class="line"> ...:print(<span class="string">'this is 1 and this < 4'</span>)</span><br><span class="line"> ...:<span class="keyword">elif</span> i == <span class="number">2</span>:</span><br><span class="line"> ...:print(<span class="string">'this is 2 and this < 4'</span>)</span><br><span class="line"> ...:<span class="keyword">if</span> i > <span class="number">4</span>:</span><br><span class="line"> ...:<span class="keyword">if</span> i == <span class="number">5</span>:</span><br><span class="line"> ...:print(<span class="string">'this is 5 and this > 4'</span>)</span><br><span class="line"> ...:<span class="keyword">elif</span> i == <span class="number">6</span>:</span><br><span class="line"> ...:print(<span class="string">'this is 6 and this > 4'</span>)</span><br><span class="line"> ...:<span class="keyword">else</span>:</span><br><span class="line"> ...:print(<span class="string">'this is others'</span>)</span><br><span class="line"> </span><br><span class="line">this <span class="keyword">is</span> <span class="number">2</span> <span class="keyword">and</span> this < <span class="number">4</span></span><br><span class="line">this <span class="keyword">is</span> <span class="number">5</span> <span class="keyword">and</span> this > <span class="number">4</span></span><br><span class="line">this <span class="keyword">is</span> <span class="number">6</span> <span class="keyword">and</span> this > <span class="number">4</span></span><br><span class="line">this <span class="keyword">is</span> others</span><br><span class="line">this <span class="keyword">is</span> others</span><br><span class="line">this <span class="keyword">is</span> others</span><br></pre></td></tr></table></figure><p><code>if</code>中常用的一些判断符号</p><table><thead><tr><th align="left">判断符</th><th align="left">描述</th></tr></thead><tbody><tr><td align="left"><code><</code></td><td align="left">小于</td></tr><tr><td align="left"><code><=</code></td><td align="left">小于或等于</td></tr><tr><td align="left"><code>></code></td><td align="left">大于</td></tr><tr><td align="left"><code>>=</code></td><td align="left">大于或等于</td></tr><tr><td align="left"><code>==</code></td><td align="left">等于,比较两个值是否相等</td></tr><tr><td align="left"><code>!=</code></td><td align="left">不等于</td></tr></tbody></table>]]></content>
<summary type="html"><h3 id="条件控制"><a href="#条件控制" class="headerlink" title="条件控制"></a>条件控制</h3><p>简单说下就是<code>if</code>判断</p>
<p><img src="https://i.loli.net/20</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.7</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.7/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.7/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="循环"><a href="#循环" class="headerlink" title="循环"></a>循环</h3><p>循环,是最常用的命令,和判断语句一样,一般情况下,我们将问题或者实际情况进行拆解,分类,然后使用循环以及判断来寻找潜在的解。</p><p>python的循环有两个<code>for</code>以及<code>while</code></p><p>我们先来看<code>for</code>循环</p><p><code>for</code>循环可以遍历字符串,列表,字典等等数据结构。</p><p>一般的情况就是:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line">print(i)</span><br><span class="line"><span class="comment"># 列表</span></span><br><span class="line">In [<span class="number">1</span>]: a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">2</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...: print(i)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="comment"># 字符串</span></span><br><span class="line">In [<span class="number">3</span>]: a = <span class="string">'1,2,3,4'</span></span><br><span class="line">In [<span class="number">4</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...: print(i)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line">,</span><br><span class="line"><span class="number">2</span></span><br><span class="line">,</span><br><span class="line"><span class="number">3</span></span><br><span class="line">,</span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="comment"># 字典</span></span><br><span class="line"><span class="comment"># 字典会比较复杂,你可以遍历keys,value以及(key,value)</span></span><br><span class="line"><span class="comment"># 我们来遍历key+value</span></span><br><span class="line">In [<span class="number">6</span>]: a = {<span class="string">'b'</span>:<span class="number">1</span>,<span class="string">'c'</span>:<span class="number">2</span>,<span class="string">'d'</span>:<span class="number">3</span>}</span><br><span class="line"> ...: <span class="keyword">for</span> i <span class="keyword">in</span> a.items():</span><br><span class="line"> ...: print(i)</span><br><span class="line"> ...:</span><br><span class="line">(<span class="string">'b'</span>, <span class="number">1</span>)</span><br><span class="line">(<span class="string">'c'</span>, <span class="number">2</span>)</span><br><span class="line">(<span class="string">'d'</span>, <span class="number">3</span>)</span><br></pre></td></tr></table></figure><p>或者你可以通过索引来进行遍历,最常见是遍历列表</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">7</span>]: a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">8</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(a)):</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="comment"># 让我们来看看整个过程发生了什么</span></span><br><span class="line"><span class="comment"># 当然是用代码来进行表示</span></span><br><span class="line">In [<span class="number">9</span>]: a</span><br><span class="line">Out[<span class="number">9</span>]: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"><span class="comment">#获取列表长度</span></span><br><span class="line">In [<span class="number">10</span>]: <span class="built_in">len</span>(a)</span><br><span class="line">Out[<span class="number">10</span>]: <span class="number">4</span></span><br><span class="line"><span class="comment">#使用range函数创建一个整数列表</span></span><br><span class="line">In [<span class="number">11</span>]: <span class="built_in">range</span>(<span class="number">4</span>)</span><br><span class="line">Out[<span class="number">11</span>]: <span class="built_in">range</span>(<span class="number">0</span>, <span class="number">4</span>)</span><br><span class="line"><span class="comment">#使用for来遍历这个整数列表</span></span><br><span class="line">In [<span class="number">12</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">4</span>):</span><br><span class="line"> ...: print(i)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">0</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="comment">#使用索引来遍历列表a中的所有元素</span></span><br><span class="line">In [<span class="number">13</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">4</span>):</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>让我们再来看看<code>else</code></p><p><code>else</code>在循环中也可以使用</p><p>我们先来看一个简单的例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">In [<span class="number">19</span>]: <span class="built_in">list</span> = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>]</span><br><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">list</span>:</span><br><span class="line"> ...: print(x)</span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(<span class="string">"else"</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="keyword">else</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>在上例中,我们先使用<code>for</code>遍历了<code>x</code>,执行完成之后,程序执行<code>else</code>语句,打印出<code>print</code></p><p>是不是感觉好像<code>else</code>没有什么用处</p><p>就仿佛。。。。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">list</span>:</span><br><span class="line"> ...: print(x)</span><br><span class="line"> ...: print(<span class="string">"else"</span>)</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="keyword">else</span></span><br></pre></td></tr></table></figure><p>恩。。。确实是,我们再来看一个官方例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">22</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n):</span><br><span class="line"> ...: <span class="keyword">if</span> n % x == <span class="number">0</span>:</span><br><span class="line"> ...: print( n, <span class="string">'等于'</span>, x, <span class="string">'*'</span>, n/x)</span><br><span class="line"> ...: <span class="keyword">break</span></span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(n, <span class="string">'是一个素数'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">2</span> 是一个素数</span><br><span class="line"><span class="number">3</span> 是一个素数</span><br><span class="line"><span class="number">4</span> 等于 <span class="number">2</span> * <span class="number">2.0</span></span><br><span class="line"><span class="number">5</span> 是一个素数</span><br><span class="line"><span class="number">6</span> 等于 <span class="number">2</span> * <span class="number">3.0</span></span><br><span class="line"><span class="number">7</span> 是一个素数</span><br><span class="line"><span class="number">8</span> 等于 <span class="number">2</span> * <span class="number">4.0</span></span><br><span class="line"><span class="number">9</span> 等于 <span class="number">3</span> * <span class="number">3.0</span></span><br></pre></td></tr></table></figure><p>整个过程发生了什么</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 我们首先使用range函数创造了一个整数列表</span></span><br><span class="line">In [<span class="number">23</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: print(n)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="number">8</span></span><br><span class="line"><span class="number">9</span></span><br><span class="line"><span class="comment"># 然后我们使用range函数创建了,从2到n的一个整数列表</span></span><br><span class="line">In [<span class="number">26</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: print(<span class="built_in">range</span>(<span class="number">2</span>,n))</span><br><span class="line"> ...:</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">2</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">3</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">4</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">5</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">6</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">7</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">8</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">2</span>, <span class="number">9</span>)</span><br><span class="line"><span class="comment"># 随后我们来检查是否n处以x等于0</span></span><br><span class="line">In [<span class="number">28</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n):</span><br><span class="line"> ...: <span class="keyword">if</span> n % x == <span class="number">0</span>:</span><br><span class="line"> ...: print( <span class="string">'check'</span>,n,<span class="string">'/'</span>,x,<span class="string">'=0'</span>)</span><br><span class="line"> ...: print( n, <span class="string">'等于'</span>, x, <span class="string">'*'</span>, n/x)</span><br><span class="line"> ...:</span><br><span class="line">check <span class="number">4</span> / <span class="number">2</span> =<span class="number">0</span></span><br><span class="line"><span class="number">4</span> 等于 <span class="number">2</span> * <span class="number">2.0</span></span><br><span class="line">check <span class="number">6</span> / <span class="number">2</span> =<span class="number">0</span></span><br><span class="line"><span class="number">6</span> 等于 <span class="number">2</span> * <span class="number">3.0</span></span><br><span class="line">check <span class="number">6</span> / <span class="number">3</span> =<span class="number">0</span></span><br><span class="line"><span class="number">6</span> 等于 <span class="number">3</span> * <span class="number">2.0</span></span><br><span class="line">check <span class="number">8</span> / <span class="number">2</span> =<span class="number">0</span></span><br><span class="line"><span class="number">8</span> 等于 <span class="number">2</span> * <span class="number">4.0</span></span><br><span class="line">check <span class="number">8</span> / <span class="number">4</span> =<span class="number">0</span></span><br><span class="line"><span class="number">8</span> 等于 <span class="number">4</span> * <span class="number">2.0</span></span><br><span class="line">check <span class="number">9</span> / <span class="number">3</span> =<span class="number">0</span></span><br><span class="line"><span class="number">9</span> 等于 <span class="number">3</span> * <span class="number">3.0</span></span><br><span class="line"><span class="comment"># 如果我们发现了n除以x等于0</span></span><br><span class="line"><span class="comment"># 例如 check 6 / 2 =0</span></span><br><span class="line"><span class="comment"># 那么打印出6 等于 2 * 3.0</span></span><br><span class="line"><span class="comment"># for x in range(2, n) 被break掉,else不会执行</span></span><br><span class="line">In [<span class="number">29</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n):</span><br><span class="line"> ...: <span class="keyword">if</span> n % x == <span class="number">0</span>:</span><br><span class="line"> ...: print( n, <span class="string">'等于'</span>, x, <span class="string">'*'</span>, n/x)</span><br><span class="line"> ...: <span class="keyword">break</span></span><br><span class="line"> ...:</span><br><span class="line"><span class="number">4</span> 等于 <span class="number">2</span> * <span class="number">2.0</span></span><br><span class="line"><span class="number">6</span> 等于 <span class="number">2</span> * <span class="number">3.0</span></span><br><span class="line"><span class="number">8</span> 等于 <span class="number">2</span> * <span class="number">4.0</span></span><br><span class="line"><span class="number">9</span> 等于 <span class="number">3</span> * <span class="number">3.0</span></span><br><span class="line"><span class="comment"># 如果我们没有发现n除以x等于0</span></span><br><span class="line"><span class="comment"># 那么执行else</span></span><br><span class="line"><span class="comment"># 打印出3 是个素数</span></span><br><span class="line">In [<span class="number">32</span>]: <span class="keyword">for</span> n <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, <span class="number">10</span>):</span><br><span class="line"> ...: <span class="keyword">for</span> x <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">2</span>, n):</span><br><span class="line"> ...: <span class="keyword">if</span> n % x == <span class="number">0</span>:</span><br><span class="line"> ...: print( n, <span class="string">'等于'</span>, x, <span class="string">'*'</span>, n/x)</span><br><span class="line"> ...: <span class="keyword">break</span></span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(n, <span class="string">'是个素数'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">2</span> 是个素数</span><br><span class="line"><span class="number">3</span> 是个素数</span><br><span class="line"><span class="number">4</span> 等于 <span class="number">2</span> * <span class="number">2.0</span></span><br><span class="line"><span class="number">5</span> 是个素数</span><br><span class="line"><span class="number">6</span> 等于 <span class="number">2</span> * <span class="number">3.0</span></span><br><span class="line"><span class="number">7</span> 是个素数</span><br><span class="line"><span class="number">8</span> 等于 <span class="number">2</span> * <span class="number">4.0</span></span><br><span class="line"><span class="number">9</span> 等于 <span class="number">3</span> * <span class="number">3.0</span></span><br></pre></td></tr></table></figure><p>其实,写到这里我也有些困了,<code>for </code>和<code>else</code>一起搭的用法确实有些反人类,看看官方的这个例子,也就是在整体的<code>for</code>循环中,又分为两个部分,一个用于判断,如果判断成功则<code>else</code>不被执行,否则执行<code>else</code></p><p>好了,今天就到这里.</p>]]></content>
<summary type="html"><h3 id="循环"><a href="#循环" class="headerlink" title="循环"></a>循环</h3><p>循环,是最常用的命令,和判断语句一样,一般情况下,我们将问题或者实际情况进行拆解,分类,然后使用循环以及判断来寻找潜在的解。</p>
<p></summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.8</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.8/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.8/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="循环"><a href="#循环" class="headerlink" title="循环"></a>循环</h3><p>另外一个常用的循环语句是<code>while</code>,在<code>while</code>语句中只要满足条件,就可以一直循环</p><p>基本形式为</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">while 判断语句:</span><br><span class="line">执行语句</span><br></pre></td></tr></table></figure><p>例如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">1</span>]: a = <span class="number">0</span></span><br><span class="line">In [<span class="number">2</span>]: b = <span class="number">10</span></span><br><span class="line">In [<span class="number">4</span>]: <span class="keyword">while</span> a < b :</span><br><span class="line"> ...: print(a)</span><br><span class="line"> ...: a = a + <span class="number">1</span></span><br><span class="line"> ...: print(<span class="string">'end'</span>)</span><br><span class="line"><span class="number">0</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="number">8</span></span><br><span class="line"><span class="number">9</span></span><br><span class="line">end</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>当然利用这个特性,你也可以使用一个死循环</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">9</span>]: a = <span class="number">1</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: b = <span class="number">1</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">11</span>]: <span class="keyword">while</span> a == b:</span><br><span class="line"> ...: print(a)</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="comment"># 此时你可以关闭终端,或者ctrl + c来进行终止</span></span><br></pre></td></tr></table></figure><p>当然<code>while</code>也可以与<code>else</code>联用,个人理解在<code>while</code>执行完成之后,不符合判段条件时,便可以执行<code>else</code>语句</p><p>基本形式为</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">while</span> 判断条件:</span><br><span class="line"></span><br><span class="line">执行语句</span><br><span class="line"></span><br><span class="line"><span class="keyword">else</span> :</span><br><span class="line"></span><br><span class="line">执行语句</span><br></pre></td></tr></table></figure><p>例如:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">12</span>]: a = <span class="number">1</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">13</span>]: b = <span class="number">3</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">14</span>]: <span class="keyword">while</span> a < b :</span><br><span class="line"> ...: print(a)</span><br><span class="line"> ...: a = a + <span class="number">1</span></span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(<span class="string">'jump'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line">jump</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="循环"><a href="#循环" class="headerlink" title="循环"></a>循环</h3><p>另外一个常用的循环语句是<code>while</code>,在<code>while</code>语句中只要满足条件,就可以一直循环</p</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.9</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.9/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.9/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="循环中的一些关键词"><a href="#循环中的一些关键词" class="headerlink" title="循环中的一些关键词"></a>循环中的一些关键词</h3><p>在上面我们已经说了<code>else</code></p><p>现在那么只有三个关键词<code>break, continue,pass</code></p><ol><li><p><code>break</code></p><p><code>break</code> 用于打破循环,想到了悟空,hhh,在循环中,当值满足某个条件值,可以使用<code>break</code>打破此循环,避免执行后续语句,减少计算量</p><p>一般形式</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">22</span>]: a = <span class="string">'abcdefg'</span></span><br><span class="line"> ...: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...: <span class="keyword">if</span> i == <span class="string">'d'</span>:</span><br><span class="line"> ...:print(<span class="string">'find d and break'</span>)</span><br><span class="line"> ...:<span class="keyword">break</span></span><br><span class="line"> ...:print(<span class="string">'find'</span>,i)</span><br><span class="line"> ...: print(<span class="string">'finished'</span>)</span><br><span class="line">find a</span><br><span class="line">find b</span><br><span class="line">find c</span><br><span class="line">find d <span class="keyword">and</span> <span class="keyword">break</span></span><br><span class="line">finished</span><br></pre></td></tr></table></figure></li><li><p><code>continue</code>用于跳过当前的循环</p><p>当满足你的判断条件时,使用<code>continue</code>可以跳过本次循环,进入下一循环</p><p>我们来看一个实例</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 当我们使用continue时</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">36</span>]: a = <span class="string">'abcdefg'</span> </span><br><span class="line"> ...: print(<span class="string">'continue'</span>) </span><br><span class="line"> ...: <span class="keyword">for</span> i <span class="keyword">in</span> a: </span><br><span class="line"> ...: <span class="keyword">if</span> i == <span class="string">'c'</span>: </span><br><span class="line"> ...: <span class="keyword">continue</span> </span><br><span class="line"> ...: print(<span class="string">'find '</span>,i) </span><br><span class="line"> ...: </span><br><span class="line"><span class="keyword">continue</span></span><br><span class="line">find a</span><br><span class="line">find b</span><br><span class="line">find d</span><br><span class="line">find e</span><br><span class="line">find f</span><br><span class="line">find g</span><br><span class="line"><span class="comment"># 可以看出我们跳过了c进行了后续的循环</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment"># 当我们使用break是</span></span><br><span class="line">In [<span class="number">62</span>]: print(<span class="string">'break'</span>)</span><br><span class="line"> ...: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...: <span class="keyword">if</span> i == <span class="string">'c'</span>:</span><br><span class="line"> ...: <span class="keyword">break</span></span><br><span class="line"> ...: print(<span class="string">'find '</span>,i)</span><br><span class="line"> ...:</span><br><span class="line"><span class="keyword">break</span></span><br><span class="line">find a</span><br><span class="line">find b</span><br><span class="line"><span class="comment"># 可以看出当遇到break时,循环直接被打破</span></span><br><span class="line"></span><br></pre></td></tr></table></figure></li><li><p><code>pass</code></p><p>pass是空语句,不做任何事情,你可以把它当作一个为了保证程序结构完整性而创造出来的词</p><p>只是为了占个位置,看起来顺眼</p><p>例如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">63</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> a:</span><br><span class="line"> ...: <span class="keyword">if</span> i == <span class="string">'c'</span>:</span><br><span class="line"> ...: <span class="keyword">pass</span></span><br><span class="line"> ...: print(<span class="string">'find '</span>,i)</span><br><span class="line"> ...:</span><br><span class="line">find a</span><br><span class="line">find b</span><br><span class="line">find c</span><br><span class="line">find d</span><br><span class="line">find e</span><br><span class="line">find f</span><br><span class="line">find g</span><br><span class="line"><span class="comment"># 可以看出当我们使用pass时,实际上没有发生任何变化,程序会正常执行,循环</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 或者下面一个例子</span></span><br><span class="line">In [<span class="number">38</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> a: </span><br><span class="line"> ...: <span class="keyword">if</span> i == <span class="string">'c'</span>: </span><br><span class="line"> ...: <span class="keyword">pass</span> </span><br><span class="line"> ...: <span class="keyword">else</span>: </span><br><span class="line"> ...: print(i,<span class="string">'is not c'</span>) </span><br><span class="line"><span class="comment"># 当我们在使用pass时,程序不执行任何操作,但当条件不是‘c’时,程序执行print操作 </span></span><br><span class="line">a <span class="keyword">is</span> <span class="keyword">not</span> c</span><br><span class="line">b <span class="keyword">is</span> <span class="keyword">not</span> c</span><br><span class="line">d <span class="keyword">is</span> <span class="keyword">not</span> c</span><br><span class="line">e <span class="keyword">is</span> <span class="keyword">not</span> c</span><br><span class="line">f <span class="keyword">is</span> <span class="keyword">not</span> c</span><br><span class="line">g <span class="keyword">is</span> <span class="keyword">not</span> c</span><br></pre></td></tr></table></figure></li></ol>]]></content>
<summary type="html"><h3 id="循环中的一些关键词"><a href="#循环中的一些关键词" class="headerlink" title="循环中的一些关键词"></a>循环中的一些关键词</h3><p>在上面我们已经说了<code>else</code></p>
<p>现在那么只有三个</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>PythonEveryDay</title>
<link href="http://example.com/2021/03/20/python-every-day/README/"/>
<id>http://example.com/2021/03/20/python-every-day/README/</id>
<published>2021-03-20T11:51:05.133Z</published>
<updated>2021-03-20T11:51:05.134Z</updated>
<content type="html"><![CDATA[<p>Hi, 大家好。</p><blockquote><p>开这个专栏是因为大家想学,而且,基本不需要更新的问题。</p><p>我们会从基础开始进行教学,继而进行安装,包使用,编程等等。</p><p>由于是总结以及教学方面,我会参考各种教程,如有引用,必定开源(本教程遵循MIT协议)。</p><p>当然,我们的实例重点是偏向于python使用与结构生物学,CADD,化学信息学等方面的使用。</p><p>(毕竟爬PubChem,也算爬虫的一种)</p><p>最终会提供几个实例,作为结尾,说到这里,又应该开一个仓库了。</p><p>(Typora + Gitee)[<a href="https://zhuanlan.zhihu.com/p/349427506]%E8%87%AA%E5%8A%A8%E4%B8%8A%E4%BC%A0%E4%BA%86%E8%A7%A3%E4%B8%80%E4%B8%8B%EF%BC%9F%F0%9F%98%8E">https://zhuanlan.zhihu.com/p/349427506]自动上传了解一下?😎</a></p></blockquote><p>祝大家学习愉快!</p>]]></content>
<summary type="html"><p>Hi, 大家好。</p>
<blockquote>
<p>开这个专栏是因为大家想学,而且,基本不需要更新的问题。</p>
<p>我们会从基础开始进行教学,继而进行安装,包使用,编程等等。</p>
<p>由于是总结以及教学方面,我会参考各种教程,如有引用,必定开源(本教程遵循</summary>
</entry>
<entry>
<title>Python每日一谈|No.3 :hello world;注释;数据类型</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.3/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.3/</id>
<published>2021-03-20T11:51:05.132Z</published>
<updated>2021-03-20T11:51:05.132Z</updated>
<content type="html"><![CDATA[<h3 id="开始第一个编程"><a href="#开始第一个编程" class="headerlink" title="开始第一个编程"></a>开始第一个编程</h3><p>当然是 输出 Hellow World</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">print(<span class="string">'Hellow World!'</span>)</span><br></pre></td></tr></table></figure><p>有两种选项</p><ol><li>使用ipython或者jupyter notebook等,在其中直接输入此命令然后运行</li><li>保存此命令为<code>hellow.py</code>文件,在命令行中输入<code>python hellow.py</code></li></ol><p><strong>Welcom to Python!</strong></p><p>现在你已经完成了你的第一个程序,成功的输出了<code>Hellow World!</code>在屏幕上</p><p>接下来,我们会进行进一步的学习</p><h3 id="Python中的注释"><a href="#Python中的注释" class="headerlink" title="Python中的注释"></a>Python中的注释</h3><p>python可以进行单行注释,用<code>#</code>开头</p><p>也可以进行多行注释,使用三个单引号<code>'''</code>或者三个双引号<code>"""</code>将内容涵盖在内</p><p>如下:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">In [<span class="number">84</span>]: <span class="comment"># 这是一个注释</span></span><br><span class="line"> ...: print(<span class="string">"Hello, World!"</span>)</span><br><span class="line"> ...: <span class="string">'''</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个单引号</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个单引号</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个单引号</span></span><br><span class="line"><span class="string"> ...: '''</span></span><br><span class="line"> ...: print(<span class="string">"Hello, World!"</span>)</span><br><span class="line"> ...: <span class="string">"""</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个双引号</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个双引号</span></span><br><span class="line"><span class="string"> ...: 这是多行注释,用三个双引号</span></span><br><span class="line"><span class="string"> ...: """</span></span><br><span class="line"> ...: print(<span class="string">"Hello, World!"</span>)</span><br><span class="line"> </span><br><span class="line">Hello, World!</span><br><span class="line">Hello, World!</span><br><span class="line">Hello, World!</span><br></pre></td></tr></table></figure><p><strong>我们为什么需要注释,以及该如何注释</strong></p><p>注释是编程能力的重要一部分,良好的注释能力意味着你有了良好的团队合作能力</p><p>想象一下,当你面对自己三年前编写的万行无注释代码时,会是什么样的感觉</p><p>但是注释也应该有一个标准,以便交流,这里推荐谷歌风格规范,不仅仅是注释,更是对其余方面也进行了阐释</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">Google 开源项目风格指南 (中文版)</span><br><span class="line"></span><br><span class="line">在线文档托管在 ReadTheDocs : 在线阅读最新版本 [https://google-styleguide.readthedocs.io/zh_CN/latest/]</span><br><span class="line">中文风格指南 GitHub 托管地址:zh-google-styleguide [https://github.com/zh-google-styleguide/zh-google-styleguide]</span><br><span class="line">离线文档下载地址:release [https://github.com/zh-google-styleguide/zh-google-styleguide/releases]”</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>一个例子:</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br></pre></td><td class="code"><pre><span class="line">关于函数的几个方面应该在特定的小节中进行描述记录, 这几个方面如下文所述. 每节应该以一个标题行开始. 标题行以冒号结尾. 除标题行外, 节的其他内容应被缩进2个空格.</span><br><span class="line"></span><br><span class="line">Args:</span><br><span class="line">列出每个参数的名字, 并在名字后使用一个冒号和一个空格, 分隔对该参数的描述.如果描述太长超过了单行80字符,使用2或者4个空格的悬挂缩进(与文件其他部分保持一致). 描述应该包括所需的类型和含义. 如果一个函数接受*foo(可变长度参数列表)或者**bar (任意关键字参数), 应该详细列出*foo和**bar.</span><br><span class="line"></span><br><span class="line">Returns: (或者 Yields: 用于生成器)</span><br><span class="line">描述返回值的类型和语义. 如果函数返回None, 这一部分可以省略.</span><br><span class="line"></span><br><span class="line">Raises:</span><br><span class="line">列出与接口有关的所有异常.”</span><br><span class="line"></span><br><span class="line">def fetch_smalltable_rows(table_handle: smalltable.Table,</span><br><span class="line"> keys: Sequence[Union[bytes, str]],</span><br><span class="line"> require_all_keys: bool = False,</span><br><span class="line">) -> Mapping[bytes, Tuple[str]]:</span><br><span class="line"> """</span><br><span class="line"> Fetches rows from a Smalltable.</span><br><span class="line"></span><br><span class="line"> Retrieves rows pertaining to the given keys from the Table instance</span><br><span class="line"> represented by table_handle. String keys will be UTF-8 encoded.</span><br><span class="line"></span><br><span class="line"> Args:</span><br><span class="line"> table_handle: An open smalltable.Table instance.</span><br><span class="line"> keys: A sequence of strings representing the key of each table</span><br><span class="line"> row to fetch. String keys will be UTF-8 encoded.</span><br><span class="line"> require_all_keys: Optional; If require_all_keys is True only</span><br><span class="line"> rows with values set for all keys will be returned.</span><br><span class="line"></span><br><span class="line"> Returns:</span><br><span class="line"> A dict mapping keys to the corresponding table row data</span><br><span class="line"> fetched. Each row is represented as a tuple of strings. For</span><br><span class="line"> example:</span><br><span class="line"></span><br><span class="line"> {b'Serak': ('Rigel VII', 'Preparer'),</span><br><span class="line"> b'Zim': ('Irk', 'Invader'),</span><br><span class="line"> b'Lrrr': ('Omicron Persei 8', 'Emperor')}</span><br><span class="line"></span><br><span class="line"> Returned keys are always bytes. If a key from the keys argument is</span><br><span class="line"> missing from the dictionary, then that row was not found in the</span><br><span class="line"> table (and require_all_keys must have been False).</span><br><span class="line"></span><br><span class="line"> Raises:</span><br><span class="line"> IOError: An error occurred accessing the smalltable.</span><br><span class="line">"""</span><br></pre></td></tr></table></figure><h3 id="Python中的数据类型"><a href="#Python中的数据类型" class="headerlink" title="Python中的数据类型"></a>Python中的数据类型</h3><p>数据类型和基本的数据结构是根本,这意味着你使用怎样的方式来存储数据</p><p>在进行实际使用时,我们使用等号(=)来进行赋值</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">7</span>]: a = <span class="number">100</span> <span class="comment"># 整型变量</span></span><br><span class="line"> ...: b = <span class="number">1000.0</span> <span class="comment"># 浮点型变量</span></span><br><span class="line"> ...: c = <span class="string">"runoob"</span> <span class="comment"># 字符串</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">8</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">8</span>]: <span class="built_in">int</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">9</span>]: <span class="built_in">type</span>(b)</span><br><span class="line">Out[<span class="number">9</span>]: <span class="built_in">float</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: <span class="built_in">type</span>(c)</span><br><span class="line">Out[<span class="number">10</span>]: <span class="built_in">str</span></span><br><span class="line"><span class="comment">#当然,我们也可以更改变量类型</span></span><br><span class="line">In [<span class="number">14</span>]: d = <span class="built_in">str</span>(a)</span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: <span class="built_in">type</span>(d)</span><br><span class="line">Out[<span class="number">15</span>]: <span class="built_in">str</span></span><br></pre></td></tr></table></figure><p>数据类型和基本的数据结构是根本,这意味着你使用怎样的方式来存储数据</p><ul><li><p>数值类型</p><ul><li>整数型(Int):没有小数,无大小,你的电脑内存有多大,整数就可以创造多大</li><li>浮点型(float):存在小数点,可以使用普通写法<code>1.23,3.5,-9.1</code>等,也可以使用科学计数法<code>2.5e2,2.5**10</code></li><li>复数型( (complex)):我使用的比较少, 复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点–摘自,菜鸟教程</li></ul></li><li><p>字符串:字符串是最常见的数字类型,<code>hellow world!</code>便是</p><ul><li><p>我们可以直接进行赋值:例如<code>a = 'u can u up'</code> 或者 <code>a = "no can no bb"</code>,当然你也可以使用<code>a = "i say 'somthing'"</code>,来进行表示,唯一需要注意的一点是中英文的切换。</p></li><li><p>转义字符,python中的转衣字符有<code>\n</code>表示换行,<code>\t</code>表示制表符,我们最常见的用法是</p><ul><li>```python<br>In [61]: print(‘Hellow\tWorld!\nNi\tHao.’)<br>Hellow World!<br>Ni Hao.<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"></span><br><span class="line">+ 在进行使用时,如果你不想转义,则可以在,前面加`r`,如下</span><br><span class="line"></span><br><span class="line">+ ```python</span><br><span class="line"> In [62]: print(r'Hellow\tWorld!\nNi\tHao.')</span><br><span class="line"> Hellow\tWorld!\nNi\tHao.</span><br></pre></td></tr></table></figure></li><li>说到这个,不得不提起PDB格式(蛋白质数据专用格式),PDB格式ATOM共80列,每一列都需要填充,也就是,你在分割时需要按照index进行分割,而不是<code>\t</code></li></ul></li></ul></li><li><p>布尔值:一个布尔值只有<code>True</code>、<code>False</code>两种值,布尔值可以用<code>and</code>、<code>or</code>和<code>not</code>运算,常常用作比较,以及判断</p><ul><li><p>```python<br>In [68]: print(8 > 7)</p><pre><code>...: print(8 < 7)</code></pre><p>True<br>False<br>In [75]: a<br>Out[75]: 7</p><p>In [76]: a <10 and a >5<br>Out[76]: True</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"> </span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">+ 空值:`None`不能理解为`0`,`""`,`[]`,`False`,`None`是一个特殊的空值。</span><br><span class="line"></span><br><span class="line"> + ```python</span><br><span class="line"> In [65]: a = None</span><br><span class="line"> ...: type(a)</span><br><span class="line"> Out[65]: NoneType</span><br><span class="line"> In [66]: print(a)</span><br><span class="line"> None</span><br></pre></td></tr></table></figure></li><li><p>从类型层面上,<code>False</code>是布尔类型,而<code>None</code>是<code>class 'NoneType'</code>;从意义层面上,<code>None</code>表示不存在,而<code>False</code>表示真假。</p></li></ul></li></ul><blockquote><p>关于数据类型与内存空间</p></blockquote><blockquote><p>在python中,如果改变变量的数值类型,那么其内存空间将会重新分配,但重新引用并不会造成内存空间的重分配</p><p>我们来看一个例子</p></blockquote><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># a赋值为100</span></span><br><span class="line">In [<span class="number">26</span>]: a = <span class="number">100</span></span><br><span class="line"> </span><br><span class="line"> <span class="comment">#查看内存地址</span></span><br><span class="line">In [<span class="number">27</span>]: <span class="built_in">id</span>(a)</span><br><span class="line">Out[<span class="number">27</span>]: <span class="number">4452845280</span></span><br><span class="line"> </span><br><span class="line"><span class="comment">#查看数据类型</span></span><br><span class="line">In [<span class="number">28</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">28</span>]: <span class="built_in">int</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">29</span>]: b = a</span><br><span class="line"></span><br><span class="line">In [<span class="number">30</span>]: <span class="built_in">id</span>(b)</span><br><span class="line">Out[<span class="number">30</span>]: <span class="number">4452845280</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">31</span>]: c = <span class="built_in">float</span>(a)</span><br><span class="line"></span><br><span class="line">In [<span class="number">32</span>]: <span class="built_in">type</span>(c)</span><br><span class="line">Out[<span class="number">32</span>]: <span class="built_in">float</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">33</span>]: <span class="built_in">id</span>(c)</span><br><span class="line">Out[<span class="number">33</span>]: <span class="number">4485900944</span></span><br><span class="line"> </span><br><span class="line">In [<span class="number">52</span>]: d = <span class="built_in">str</span>(a)</span><br><span class="line"> </span><br><span class="line">In [<span class="number">54</span>]: <span class="built_in">type</span>(d)</span><br><span class="line">Out[<span class="number">54</span>]: <span class="built_in">str</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">53</span>]: <span class="built_in">id</span>(d)</span><br><span class="line">Out[<span class="number">53</span>]: <span class="number">4485942256</span></span><br><span class="line"> </span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="开始第一个编程"><a href="#开始第一个编程" class="headerlink" title="开始第一个编程"></a>开始第一个编程</h3><p>当然是 输出 Hellow World</p>
<figure class="highlight </summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.4</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.4/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.4/</id>
<published>2021-03-20T11:51:05.132Z</published>
<updated>2021-03-20T11:51:05.133Z</updated>
<content type="html"><![CDATA[<h3 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h3><p>上面我们谈了数据类型,这篇我们该看下数据结构</p><p>Python中的数据结构有list(列表),dict(字典),set(集合), tuple(元祖)</p><p>可以对元素进行修改的数据结构有:list(列表),dict(字典),set(集合)</p><p>不可以对元素进行修改的数据结构有: tuple(元祖)</p><h3 id="列表:"><a href="#列表:" class="headerlink" title="列表:"></a>列表:</h3><ul><li><p>列表是最常用的,也是最基本的数据结构。</p></li><li><p>使用<code>[]</code>来生成一个列表</p></li><li><p>列表的元素可以是,字符串,数字等基本数据类型,也可以是列表,元祖等其余数据结构</p></li><li><p>列表是有序的,你可以正向使用,也可以反向使用。</p></li><li><p>列表可以进行的基本操作有索引,切片,加,乘,检查成员。</p></li></ul><p><img src="/Users/sujiaqi/Pictures/Typora/python-list.png" alt="查看源图像"></p><h4 id="实例"><a href="#实例" class="headerlink" title="实例"></a>实例</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">6</span>]: a=[<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"> </span><br><span class="line">In [<span class="number">35</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">35</span>]: <span class="built_in">list</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">7</span>]: b=[<span class="string">'a'</span>,<span class="string">'b'</span>,<span class="string">'c'</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">8</span>]: c=[a,b]</span><br><span class="line"></span><br><span class="line">In [<span class="number">9</span>]: print(a)</span><br><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: print(b)</span><br><span class="line">[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">11</span>]: print(c)</span><br><span class="line">[[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>], [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]]</span><br><span class="line"></span><br><span class="line"><span class="comment">#列表索引操作</span></span><br><span class="line">In [<span class="number">12</span>]: a[<span class="number">1</span>]</span><br><span class="line">Out[<span class="number">12</span>]: <span class="number">2</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">13</span>]: a[<span class="number">0</span>]</span><br><span class="line">Out[<span class="number">13</span>]: <span class="number">1</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">14</span>]: a[-<span class="number">1</span>]</span><br><span class="line">Out[<span class="number">14</span>]: <span class="number">4</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: a[-<span class="number">2</span>]</span><br><span class="line">Out[<span class="number">15</span>]: <span class="number">3</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="comment">#列表加操作</span></span><br><span class="line">In [<span class="number">16</span>]: d = a + b</span><br><span class="line"></span><br><span class="line">In [<span class="number">17</span>]: print(d)</span><br><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]</span><br><span class="line"></span><br><span class="line"><span class="comment">#列表乘操作</span></span><br><span class="line">In [<span class="number">18</span>]: a*<span class="number">3</span></span><br><span class="line">Out[<span class="number">18</span>]: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">24</span>]: c*<span class="number">2</span></span><br><span class="line">Out[<span class="number">24</span>]: [[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>], [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>], [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>], [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]]</span><br><span class="line"></span><br><span class="line"><span class="comment">#检查成员</span></span><br><span class="line">In [<span class="number">25</span>]: <span class="number">1</span> <span class="keyword">in</span> a</span><br><span class="line">Out[<span class="number">25</span>]: <span class="literal">True</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">26</span>]: <span class="number">7</span> <span class="keyword">in</span> a</span><br><span class="line">Out[<span class="number">26</span>]: <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 列表切片</span></span><br><span class="line">In [<span class="number">27</span>]: f = a*<span class="number">3</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">28</span>]: print(f)</span><br><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"><span class="comment"># 一般用法</span></span><br><span class="line">In [<span class="number">29</span>]: f[<span class="number">0</span>:<span class="number">3</span>]</span><br><span class="line">Out[<span class="number">29</span>]: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">30</span>]: f[<span class="number">3</span>:]</span><br><span class="line">Out[<span class="number">30</span>]: [<span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">32</span>]: f[:-<span class="number">3</span>]</span><br><span class="line">Out[<span class="number">32</span>]: [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">1</span>]</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 步长</span></span><br><span class="line"><span class="comment"># 从f[1]到f[4],每隔两位抽取一个元素</span></span><br><span class="line">In [<span class="number">34</span>]: f[<span class="number">1</span>:<span class="number">4</span>:<span class="number">2</span>]</span><br><span class="line">Out[<span class="number">34</span>]: [<span class="number">2</span>, <span class="number">4</span>]</span><br></pre></td></tr></table></figure><h3 id="元祖"><a href="#元祖" class="headerlink" title="元祖"></a>元祖</h3><ul><li><p>元祖是不可修改的</p></li><li><p>使用<code>( )</code>来创造一个元祖</p></li><li><p>也可以根据索引来使用元素,或切片</p></li><li><p>不可以修改元祖中的值,但元祖之间可以进行连接</p></li></ul><p><strong>实例</strong></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建元祖</span></span><br><span class="line">In [<span class="number">41</span>]: tup1=(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">42</span>]: tup2=(tup1,tup1)</span><br><span class="line"></span><br><span class="line">In [<span class="number">43</span>]: tup2</span><br><span class="line">Out[<span class="number">43</span>]: ((<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>), (<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>))</span><br><span class="line"></span><br><span class="line">In [<span class="number">44</span>]: <span class="built_in">type</span>(tup1)</span><br><span class="line">Out[<span class="number">44</span>]: <span class="built_in">tuple</span></span><br><span class="line"><span class="comment"># 元祖切片</span></span><br><span class="line">In [<span class="number">45</span>]: tup1[:<span class="number">2</span>]</span><br><span class="line">Out[<span class="number">45</span>]: (<span class="number">1</span>, <span class="number">2</span>)</span><br><span class="line"><span class="comment"># 根据index来使用元祖元素</span></span><br><span class="line">In [<span class="number">47</span>]: tup1[<span class="number">1</span>]</span><br><span class="line">Out[<span class="number">47</span>]: <span class="number">2</span></span><br><span class="line"><span class="comment"># 元祖连接</span></span><br><span class="line">In [<span class="number">48</span>]: tup3 = tup1 + tup2</span><br><span class="line"></span><br><span class="line">In [<span class="number">49</span>]: tup3</span><br><span class="line">Out[<span class="number">49</span>]: (<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, (<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>), (<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>))</span><br><span class="line"> </span><br><span class="line"> </span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="数据结构"><a href="#数据结构" class="headerlink" title="数据结构"></a>数据结构</h3><p>上面我们谈了数据类型,这篇我们该看下数据结构</p>
<p>Python中的数据结构有list(列表),dict(字典),s</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.17.文件读写</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.17.%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.17.%E6%96%87%E4%BB%B6%E8%AF%BB%E5%86%99/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<p>well,我们很多基本的操作都属于I/O流</p><p>假设你只是一个黑盒子用户的话,大概只需要调取参数,获取自己所需的文件然后进行下一步操作即可</p><p>我们现在就来看下python的I/O流</p><ol><li><p>读取一个文件</p><p>我们以<code>1stp.pdb</code>这个蛋白为例</p><p>下载地址在这里:<a href="http://www.rcsb.org/structure/1STP">http://www.rcsb.org/structure/1STP</a></p><p><img src="/Users/sujiaqi/Pictures/Typora/image-20210308214614070.png" alt="image-20210308214614070"></p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"># 我们可以直接使用python自带的os函数打开</span><br><span class="line">In [1]: f = open('1stp.pdb','r')</span><br></pre></td></tr></table></figure></li></ol><p> 其基本形式为</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">f = open(文件名,打开模式)</span><br><span class="line"></span><br><span class="line">各个参数的细节如下:</span><br><span class="line">- 文件名:文件名是一个字符串值。</span><br><span class="line">- 打开模式:只读(r),写入(w),追加(w+)等。</span><br><span class="line"></span><br></pre></td></tr></table></figure><p>这里有一份来源于菜鸟教程的,使用不同模式打开文件的说明</p><p> 当然,你并不需要全文背诵,只需要知道几个常用值就好:</p><table><thead><tr><th>模式</th><th>描述</th></tr></thead><tbody><tr><td>t</td><td>文本模式 (默认)。</td></tr><tr><td>x</td><td>写模式,新建一个文件,如果该文件已存在则会报错。</td></tr><tr><td>b</td><td>二进制模式。</td></tr><tr><td>+</td><td>打开一个文件进行更新(可读可写)。</td></tr><tr><td>U</td><td>通用换行模式(不推荐)。</td></tr><tr><td>r</td><td>以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。</td></tr><tr><td>rb</td><td>以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。</td></tr><tr><td>r+</td><td>打开一个文件用于读写。文件指针将会放在文件的开头。</td></tr><tr><td>rb+</td><td>以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。</td></tr><tr><td>w</td><td>打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。</td></tr><tr><td>wb</td><td>以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。</td></tr><tr><td>w+</td><td>打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。</td></tr><tr><td>wb+</td><td>以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。</td></tr><tr><td>a</td><td>打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。</td></tr><tr><td>ab</td><td>以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。</td></tr><tr><td>a+</td><td>打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。</td></tr><tr><td>ab+</td><td>以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。</td></tr></tbody></table><p>在我们打开文本对象之后,下一步该做的就是提取字符串</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">4</span>]: f_str = f.read()</span><br><span class="line">In [<span class="number">5</span>]: f_str[:<span class="number">300</span>]</span><br><span class="line">Out[<span class="number">5</span>]: <span class="string">'HEADER BIOTIN BINDING PROTEIN 12-MAR-92 1STP \nTITLE STRUCTURAL ORIGINS OF HIGH-AFFINITY BIOTIN BINDING TO STREPTAVIDIN \nCOMPND MOL_ID: 1; \nCOMPND 2 MOLECULE: STREPTAVIDIN COMPLEX WITH BIOTIN; '</span></span><br></pre></td></tr></table></figure><p>当执行完成操作之后记得要关闭此对象</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">In [6]: f.close()</span><br></pre></td></tr></table></figure><p>此时,你便获取了一部分文字</p><p>现在就可以对其进行编辑,增加删除,然后输出</p><p>此时,我们需要再次打开一个写入对象</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">6</span>]: f_new = <span class="built_in">open</span>(<span class="string">'out.pdb'</span>,<span class="string">'w'</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">7</span>]: f_new.write(f_str)</span><br><span class="line">Out[<span class="number">7</span>]: <span class="number">119232</span></span><br><span class="line"> </span><br><span class="line"><span class="comment"># 关闭对象</span></span><br><span class="line">In [<span class="number">9</span>]: f_new.close()</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>well,我们很多基本的操作都属于I/O流</p>
<p>假设你只是一个黑盒子用户的话,大概只需要调取参数,获取自己所需的文件然后进行下一步操作即可</p>
<p>我们现在就来看下python的I/O流</p>
<ol>
<li><p>读取一个文件</p>
<p>我们以<c</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.18.序列化</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.18.%E5%BA%8F%E5%88%97%E5%8C%96/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.18.%E5%BA%8F%E5%88%97%E5%8C%96/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<h3 id="定义"><a href="#定义" class="headerlink" title="定义"></a>定义</h3><p>。。。,我摘抄一个</p><p>系列化,将对象存储为二进制。</p><p>反序列化,将二进制返回为对象。</p><h3 id="释义"><a href="#释义" class="headerlink" title="释义"></a>释义</h3><p>我们再来看一个例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 创建一个文件,模式为写入</span></span><br><span class="line">In [<span class="number">1</span>]: f = <span class="built_in">open</span>(<span class="string">'tmp.txt'</span>,<span class="string">'w'</span>)</span><br><span class="line"><span class="comment"># 创建一个字符串对象</span></span><br><span class="line">In [<span class="number">2</span>]: a= <span class="string">'1234'</span></span><br><span class="line"><span class="comment"># 将a写入文件</span></span><br><span class="line">In [<span class="number">3</span>]: f.write(a)</span><br><span class="line">Out[<span class="number">3</span>]: <span class="number">4</span></span><br><span class="line"><span class="comment"># 关闭文件对象</span></span><br><span class="line">In [<span class="number">4</span>]: f.close()</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 获取文件内容</span></span><br><span class="line">In [<span class="number">5</span>]: !cat tmp.txt</span><br><span class="line"><span class="number">1234</span></span><br></pre></td></tr></table></figure><p>well,我们上述操作即为创建了一个字符串a,并将字符串写入了文件<code>tmp.txt</code>中</p><p>当然,你可以认为此次操作结束了,你获得了一个含有内容的文件</p><p>但是如果我们想储存的是对象或者说为变量a怎么对待呢,如何将其储存,并在下次启动时仍然可以进行使用.</p><p>Python提供了<code>pickle</code>模块来实现序列化。</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 导入模块</span></span><br><span class="line">In [<span class="number">6</span>]: <span class="keyword">import</span> pickle</span><br><span class="line"><span class="comment"># 打开文件</span></span><br><span class="line">In [<span class="number">8</span>]: f = <span class="built_in">open</span>(<span class="string">'a.txt'</span>, <span class="string">'wb'</span>)</span><br><span class="line"><span class="comment"># 将变量a输入到文件中</span></span><br><span class="line">In [<span class="number">9</span>]: pickle.dump(a,f)</span><br><span class="line"><span class="comment"># 关闭文件</span></span><br><span class="line">In [<span class="number">10</span>]: f.close()</span><br></pre></td></tr></table></figure><p>那么我们就可以在下次启动的时候,使用反序列化获得a</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 打开文件</span></span><br><span class="line">In [<span class="number">11</span>]: f = <span class="built_in">open</span>(<span class="string">'a.txt'</span>, <span class="string">'rb'</span>)</span><br><span class="line"><span class="comment"># 反序列化</span></span><br><span class="line">In [<span class="number">12</span>]: b = pickle.load(f)</span><br><span class="line"><span class="comment"># 查看b</span></span><br><span class="line">In [<span class="number">13</span>]: b</span><br><span class="line">Out[<span class="number">13</span>]: <span class="string">'1234'</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="定义"><a href="#定义" class="headerlink" title="定义"></a>定义</h3><p>。。。,我摘抄一个</p>
<p>系列化,将对象存储为二进制。</p>
<p>反序列化,将二进制返回为对象。</p>
<h3 id="释义"</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.19.异常</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.19.%E5%BC%82%E5%B8%B8/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.19.%E5%BC%82%E5%B8%B8/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<p>我们在运行python程序时,经常会出现一些异常。</p><p>异常是一种跳出代码块的正常控制流来处理错误或者其它异常条件的方式.</p><ul><li><p>有可能是你自己写错了</p></li><li><p>也有可能是程序本身无法处理</p></li></ul><p>但是,活得干呀,我们现在就来看下怎么处理异常</p><p>python内部有很多异常,可以向用户直接汇报出信息</p><p>来看下python本身的异常</p><p>摘自:<a href="https://www.php.cn/python/python-exceptions.html">https://www.php.cn/python/python-exceptions.html</a></p><table><thead><tr><th>异常名称</th><th>描述</th></tr></thead><tbody><tr><td></td><td></td></tr><tr><td>BaseException</td><td>所有异常的基类</td></tr><tr><td>SystemExit</td><td>解释器请求退出</td></tr><tr><td>KeyboardInterrupt</td><td>用户中断执行(通常是输入^C)</td></tr><tr><td>Exception</td><td>常规错误的基类</td></tr><tr><td>StopIteration</td><td>迭代器没有更多的值</td></tr><tr><td>GeneratorExit</td><td>生成器(generator)发生异常来通知退出</td></tr><tr><td>StandardError</td><td>所有的内建标准异常的基类</td></tr><tr><td>ArithmeticError</td><td>所有数值计算错误的基类</td></tr><tr><td>FloatingPointError</td><td>浮点计算错误</td></tr><tr><td>OverflowError</td><td>数值运算超出最大限制</td></tr><tr><td>ZeroDivisionError</td><td>除(或取模)零 (所有数据类型)</td></tr><tr><td>AssertionError</td><td>断言语句失败</td></tr><tr><td>AttributeError</td><td>对象没有这个属性</td></tr><tr><td>EOFError</td><td>没有内建输入,到达EOF 标记</td></tr><tr><td>EnvironmentError</td><td>操作系统错误的基类</td></tr><tr><td>IOError</td><td>输入/输出操作失败</td></tr><tr><td>OSError</td><td>操作系统错误</td></tr><tr><td>WindowsError</td><td>系统调用失败</td></tr><tr><td>ImportError</td><td>导入模块/对象失败</td></tr><tr><td>LookupError</td><td>无效数据查询的基类</td></tr><tr><td>IndexError</td><td>序列中没有此索引(index)</td></tr><tr><td>KeyError</td><td>映射中没有这个键</td></tr><tr><td>MemoryError</td><td>内存溢出错误(对于Python 解释器不是致命的)</td></tr><tr><td>NameError</td><td>未声明/初始化对象 (没有属性)</td></tr><tr><td>UnboundLocalError</td><td>访问未初始化的本地变量</td></tr><tr><td>ReferenceError</td><td>弱引用(Weak reference)试图访问已经垃圾回收了的对象</td></tr><tr><td>RuntimeError</td><td>一般的运行时错误</td></tr><tr><td>NotImplementedError</td><td>尚未实现的方法</td></tr><tr><td>SyntaxError</td><td>Python 语法错误</td></tr><tr><td>IndentationError</td><td>缩进错误</td></tr><tr><td>TabError</td><td>Tab 和空格混用</td></tr><tr><td>SystemError</td><td>一般的解释器系统错误</td></tr><tr><td>TypeError</td><td>对类型无效的操作</td></tr><tr><td>ValueError</td><td>传入无效的参数</td></tr><tr><td>UnicodeError</td><td>Unicode 相关的错误</td></tr><tr><td>UnicodeDecodeError</td><td>Unicode 解码时的错误</td></tr><tr><td>UnicodeEncodeError</td><td>Unicode 编码时错误</td></tr><tr><td>UnicodeTranslateError</td><td>Unicode 转换时错误</td></tr><tr><td>Warning</td><td>警告的基类</td></tr><tr><td>DeprecationWarning</td><td>关于被弃用的特征的警告</td></tr><tr><td>FutureWarning</td><td>关于构造将来语义会有改变的警告</td></tr><tr><td>OverflowWarning</td><td>旧的关于自动提升为长整型(long)的警告</td></tr><tr><td>PendingDeprecationWarning</td><td>关于特性将会被废弃的警告</td></tr><tr><td>RuntimeWarning</td><td>可疑的运行时行为(runtime behavior)的警告</td></tr><tr><td>SyntaxWarning</td><td>可疑的语法的警告</td></tr><tr><td>UserWarning</td><td>用户代码生成的警告</td></tr></tbody></table><p>我们在运行程序时,需要捕捉或者避开这些异常</p><p>就可以使用<code>try expect</code> 这个语句</p><p>一般使用情景是:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line">判断语句或者执行语句</span><br><span class="line"><span class="keyword">except</span> 报错名称:</span><br><span class="line">报错之后的处理语句(你也可以简单打印)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> 如果没有的报错的话,可以在这里执行</span><br><span class="line"> 例如:</span><br><span class="line"> print(<span class="string">'No Bug,happy'</span>)</span><br><span class="line"><span class="keyword">finally</span>:</span><br><span class="line"> 扫尾语句</span><br></pre></td></tr></table></figure><p>你也可以处理多个异常</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line">判断语句或者执行语句</span><br><span class="line"><span class="keyword">except</span>(Exception1[, Exception2[,...ExceptionN]]]):</span><br><span class="line">报错之后的处理语句(你也可以简单打印)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> 如果没有的报错的话,可以在这里执行</span><br><span class="line"> 例如:</span><br><span class="line"> print(<span class="string">'No Bug,happy'</span>)</span><br><span class="line"><span class="keyword">finally</span>:</span><br><span class="line"> 扫尾语句</span><br></pre></td></tr></table></figure><p>当然,你也可以使用<code>expect:</code>来直接跳过所有异常</p><p>但是,我并不建议使用,因为这比较容易隐藏一些bug</p><p>而且你应该尽量减少<code>try expect</code> 中的代码量,毕竟,你是补货异常并处理,而不是再制造一个异常</p><p>此外还有一种格式<code> try finally</code> </p><p>finally 通常放在最后作为扫尾工作</p><p>在整个异常处理机制中,finally 语句的功能是:无论 try 块是否发生异常,最终都要进入 finally 语句,并执行其中的代码块。</p><p>其实try expect的最简形式为·:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">try</span>:</span><br><span class="line">判断语句或者执行语句</span><br><span class="line"><span class="keyword">except</span> 报错名称:</span><br><span class="line">报错之后的处理语句(你也可以简单打印)</span><br></pre></td></tr></table></figure><p>我们来看个例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">1</span>]: a= [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">2</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">5</span>):</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line">---------------------------------------------------------------------------</span><br><span class="line">IndexError Traceback (most recent call last)</span><br><span class="line"><ipython-<span class="built_in">input</span>-<span class="number">2</span>-2cb727696c4c> <span class="keyword">in</span> <module></span><br><span class="line"> <span class="number">1</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">5</span>):</span><br><span class="line">----> 2 print(a[i])</span><br><span class="line"> <span class="number">3</span></span><br><span class="line"></span><br><span class="line">IndexError: <span class="built_in">list</span> index out of <span class="built_in">range</span></span><br></pre></td></tr></table></figure><p>此时报错是IndexError </p><p>接下来,我们来捕获他</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">3</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">5</span>):</span><br><span class="line"> ...: <span class="keyword">try</span>:</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...: <span class="keyword">except</span> IndexError:</span><br><span class="line"> ...: print(<span class="string">'find index error'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line">find index error</span><br></pre></td></tr></table></figure><p>上面是,我们发现了一个index error ,然后捕获了他</p><p>然后我们,在加入else看下:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">4</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">5</span>):</span><br><span class="line"> ...: <span class="keyword">try</span>:</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...: <span class="keyword">except</span> IndexError:</span><br><span class="line"> ...: print(<span class="string">'find index error'</span>)</span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(<span class="string">'no bug,lucky'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="number">2</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="number">3</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="number">4</span></span><br><span class="line">no bug,lucky</span><br><span class="line">find index error</span><br></pre></td></tr></table></figure><p>我们可以很明显的看出,程序是先执行try except,再执行else</p><p>我再加finally试一下</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">9</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">5</span>):</span><br><span class="line"> ...: <span class="keyword">try</span>:</span><br><span class="line"> ...: print(a[i])</span><br><span class="line"> ...: <span class="keyword">except</span> IndexError:</span><br><span class="line"> ...: print(<span class="string">'find index error'</span>)</span><br><span class="line"> ...: <span class="keyword">else</span>:</span><br><span class="line"> ...: print(<span class="string">'no bug,lucky'</span>)</span><br><span class="line"> ...: <span class="keyword">finally</span>:</span><br><span class="line"> ...: print(<span class="string">'finally'</span>)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">1</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="keyword">finally</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="keyword">finally</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="keyword">finally</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line">no bug,lucky</span><br><span class="line"><span class="keyword">finally</span></span><br><span class="line">find index error</span><br><span class="line"><span class="keyword">finally</span></span><br></pre></td></tr></table></figure><p>我们可以看到,不管是是否出现异常总会有finally中的语句被执行</p><p>而只有不报错时,else中的语句才会被执行</p>]]></content>
<summary type="html"><p>我们在运行python程序时,经常会出现一些异常。</p>
<p>异常是一种跳出代码块的正常控制流来处理错误或者其它异常条件的方式.</p>
<ul>
<li><p>有可能是你自己写错了</p>
</li>
<li><p>也有可能是程序本身无法处理</p>
</li>
</</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.2.IDE简介</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.2/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.2/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<h3 id="前言:"><a href="#前言:" class="headerlink" title="前言:"></a>前言:</h3><p>我总喜欢把已有的信息放在前面,而不是最后。一方面是因为前人的树,致敬一下;另一方面,我的教学,也是从他们当中进行学习,汇总,精炼,如果觉得我的教程比较慢的话,你也可以直接去学习。</p><h3 id="IDE简介:"><a href="#IDE简介:" class="headerlink" title="IDE简介:"></a>IDE简介:</h3><blockquote><p>集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。如微软的Visual Studio系列,Borland的C++ Builder、Delphi系列等。该程序可以独立运行,也可以和其它程序并用。IDE多被用于开发HTML应用软件。例如,许多人在设计网站时使用IDE(如HomeSite、DreamWeaver等),因为很多项任务会自动生成。微软的Visual Basic是早期的典型的可视化开发环境,后来的包括Borland公司的Delphi等。</p></blockquote><p>摘自:<a href="https://www.zhihu.com/topic/20018211/intro">https://www.zhihu.com/topic/20018211/intro</a></p><blockquote><p>Python 中IDE各凭习惯,环境以及爱好来进行使用</p></blockquote><blockquote><p>个人建议新手入坑PyCharm,虽然他慢,但是大部分图形化操作界面,容易上手,对新手很友好,当你不知道怎么配置的时候,default一般是最佳选项。社区版免费下载。</p></blockquote><blockquote><p>然后说说我的配置,我是conda,ipython,jupyter notebook三者联用。我安装的conda为miniconda不是anaconda,因为miniconda更快一点,体积更小一点,然后分别创造python2.x以及python3.x两个环境,在其中安装好ipython以及jupyter notebook进行使用。</p></blockquote><p><strong>后续的所有程序均在IDE中运行,如果你喜欢简单那么ipython,如果你需要一些可视化比较强的那么jupyter notebook,如果你需要一套强大的工具包那么PyCharm,vscode或者conda</strong></p><h3 id="IDE安装:"><a href="#IDE安装:" class="headerlink" title="IDE安装:"></a>IDE安装:</h3><ol><li><p>Pycharm安装:<a href="https://zhuanlan.zhihu.com/p/51780281">https://zhuanlan.zhihu.com/p/51780281</a></p><p>很简单的过程,不多做赘述</p></li><li><p>Conda安装:</p><p>miniconda版本:<a href="https://www.jianshu.com/p/edaa744ea47d">https://www.jianshu.com/p/edaa744ea47d</a></p><p>anaconda版本:<a href="https://blog.csdn.net/tqlisno1/article/details/108908775">https://blog.csdn.net/tqlisno1/article/details/108908775</a></p></li></ol><h3 id="IDE使用:"><a href="#IDE使用:" class="headerlink" title="IDE使用:"></a>IDE使用:</h3><p>基本就是Miniconda使用</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br></pre></td><td class="code"><pre><span class="line">查看conda版本</span><br><span class="line">conda -V/--version</span><br><span class="line">conda env list</span><br><span class="line"><span class="meta">#</span><span class="bash">激活或推出环境</span></span><br><span class="line">conda activate env_name</span><br><span class="line">conda deactivate</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">新建虚拟环境:</span></span><br><span class="line">conda create --name py36 python=3.6</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">删除环境:</span></span><br><span class="line">conda remove -n py36 --all</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">复制环境:</span></span><br><span class="line">conda create -n newpy36 --clone py36</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">列出所有包:</span></span><br><span class="line">conda list</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">安装包</span></span><br><span class="line">conda install package_name</span><br><span class="line"><span class="meta">#</span><span class="bash">package_name为包的名称</span></span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">指定安装包版本</span></span><br><span class="line">conda install python=3.5</span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">安装ipython</span></span><br><span class="line">conda install -c anaconda ipython </span><br><span class="line"></span><br><span class="line"><span class="meta">#</span><span class="bash">启动ipython</span></span><br><span class="line">ipython</span><br><span class="line"></span><br></pre></td></tr></table></figure><h4 id="conda-包查询网址:https-anaconda-org-anaconda"><a href="#conda-包查询网址:https-anaconda-org-anaconda" class="headerlink" title="conda 包查询网址:https://anaconda.org/anaconda"></a>conda 包查询网址:<a href="https://anaconda.org/anaconda">https://anaconda.org/anaconda</a></h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">mymac:~/ $ conda activate py3 [<span class="number">20</span>:<span class="number">21</span>:<span class="number">30</span>]</span><br><span class="line">(py3) mymac:~/ $ ipython [<span class="number">20</span>:<span class="number">26</span>:<span class="number">57</span>]</span><br><span class="line">Python <span class="number">3.7</span><span class="number">.7</span> (default, Mar <span class="number">26</span> <span class="number">2020</span>, <span class="number">10</span>:<span class="number">32</span>:<span class="number">53</span>)</span><br><span class="line">Type <span class="string">'copyright'</span>, <span class="string">'credits'</span> <span class="keyword">or</span> <span class="string">'license'</span> <span class="keyword">for</span> more information</span><br><span class="line">IPython <span class="number">7.13</span><span class="number">.0</span> -- An enhanced Interactive Python. Type <span class="string">'?'</span> <span class="keyword">for</span> <span class="built_in">help</span>.</span><br><span class="line"></span><br><span class="line">In [<span class="number">1</span>]: print(<span class="string">'hellow world!'</span>)</span><br><span class="line">hellow world!</span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="前言:"><a href="#前言:" class="headerlink" title="前言:"></a>前言:</h3><p>我总喜欢把已有的信息放在前面,而不是最后。一方面是因为前人的树,致敬一下;另一方面,我的教学,也是从他们当中进行学习,汇总,精炼,如</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.20.实例.1-PyMol.1-导入蛋白,创建蛋白</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.20.%E5%AE%9E%E4%BE%8B.1-PyMol.1/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.20.%E5%AE%9E%E4%BE%8B.1-PyMol.1/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<p>已经写到20了,我知道你们也有点烦了</p><p>姑且认为以前的都会了吧</p><p>今天写PyMol</p><p><del>然后这次水一波PyMol</del></p><ol><li><p>安装</p><ul><li><p>官网:<a href="https://pymol.org/2/">https://pymol.org/2/</a></p></li><li><p>开源版本:<a href="https://sourceforge.net/projects/pymol/">https://sourceforge.net/projects/pymol/</a></p></li><li><p>或者假设你已经安装了<a href="https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/">conda</a></p></li></ul><p> 命令行安装:<code>conda install -c schrodinger pymol-bundle</code></p></li><li><p>使用</p><p>当然你可以在某一环境下,直接输入pymol,打开可视化界面</p><p>类似于这样</p><p>当然,这并不是我们的主题</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/Screen%20Shot%202021-03-14%20at%2010.43.41%20AM-5689935.png" alt="Screen Shot 2021-03-14 at 10.43.41 AM"></p><p>这次,直接打开<code>ipython</code></p><p>我的使用界面</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/Screen%20Shot%202021-03-14%20at%2010.47.52%20AM.png" alt="Screen Shot 2021-03-14 at 10.47.52 AM"></p></li><li><p>pymol 的api</p><p>api:看下释义,懒得解释</p><blockquote><p>API(Application Programming Interface,<a href="https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%8E%A5%E5%8F%A3/10418844">应用程序接口</a>)是一些预先定义的接口(如函数、HTTP接口),或指<a href="https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6%E7%B3%BB%E7%BB%9F/224122">软件系统</a>不同组成部分衔接的约定。 [1] 用来提供<a href="https://baike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F">应用程序</a>与开发人员基于某<a href="https://baike.baidu.com/item/%E8%BD%AF%E4%BB%B6">软件</a>或硬件得以访问的一组<a href="https://baike.baidu.com/item/%E4%BE%8B%E7%A8%8B/2390628">例程</a>,而又无需访问源码,或理解内部<a href="https://baike.baidu.com/item/%E5%B7%A5%E4%BD%9C%E6%9C%BA%E5%88%B6/9905789">工作机制</a>的细节。源于百度百科</p></blockquote><p>其实,就是pymol给我提供了一些简单的接口命令,让我们可以更加方便的使用</p><p>首先,来获取一个蛋白</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 导入pymol</span></span><br><span class="line">In [<span class="number">1</span>]: <span class="keyword">import</span> pymol</span><br><span class="line"></span><br><span class="line">In [<span class="number">2</span>]: Feature has expired.</span><br><span class="line">Feature: PYMOL_MAIN</span><br><span class="line">Expire date: 01-nov-<span class="number">2020</span></span><br><span class="line">License path: /Users/sujiaqi/.pymol/license.lic:</span><br><span class="line">FlexNet Licensing error:-<span class="number">10</span>,<span class="number">32</span></span><br><span class="line">For further information, refer to the FlexNet Licensing documentation,</span><br><span class="line">available at <span class="string">"www.flexerasoftware.com"</span>.</span><br><span class="line"><span class="comment"># 看下帮助指令</span></span><br><span class="line">In [<span class="number">14</span>]: <span class="built_in">help</span>(pymol)</span><br><span class="line">Help on package pymol:</span><br><span class="line"></span><br><span class="line">NAME</span><br><span class="line"> pymol</span><br><span class="line"></span><br><span class="line">DESCRIPTION</span><br><span class="line"> PyMOL Molecular Graphics System</span><br><span class="line"> Copyright (c) Schrodinger, Inc.</span><br><span class="line"></span><br><span class="line"> Supported ways to launch PyMOL:</span><br><span class="line"></span><br><span class="line"> If $PYMOL_PATH <span class="keyword">is</span> a non-default location, it must be <span class="built_in">set</span> <span class="keyword">and</span> exported</span><br><span class="line"> before launching PyMOL.</span><br><span class="line"></span><br><span class="line"> From a terminal:</span><br><span class="line"></span><br><span class="line"> shell> python /path/to/pymol/__init__.py [args]</span><br><span class="line"></span><br><span class="line"><span class="comment"># 获取蛋白3nss</span></span><br><span class="line">In [<span class="number">5</span>]: pymol.cmd.fetch(<span class="string">'3nss'</span>)</span><br><span class="line"> PyMOL <span class="keyword">not</span> running, entering library mode (experimental)</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line">Out[<span class="number">5</span>]: <span class="string">'3nss'</span></span><br><span class="line"><span class="comment"># 查看object </span></span><br><span class="line">In [<span class="number">10</span>]: pymol.cmd.get_object_list()</span><br><span class="line">Out[<span class="number">10</span>]: [<span class="string">'3nss'</span>]</span><br><span class="line"><span class="comment"># 将object保存为fasta格式</span></span><br><span class="line">In [<span class="number">23</span>]: pymol.cmd.save(<span class="string">'3nss.fasta'</span>,<span class="string">'3nss'</span>,<span class="built_in">format</span>=<span class="string">'fasta'</span>)</span><br><span class="line">>3nss_A</span><br><span class="line">SVKLAGNSSLCPVSGWAIYSKDNSVRIGSKGDVFVIREPFISCSPLECRTFFLTQGALLNDKHSNGTIKD</span><br><span class="line">RSPYRTLMSCPIGEVPSPYNSRFESVAWSASACHDGINWLTIGISGPDNGAVAVLKYNGIITDTIKSWRN</span><br><span class="line">NILRTQESECACVNGSCFTVMTDGPSNGQASYKIFRIEKGKIVKSVEMNAPNYHYEECSCYPDSSEITCV</span><br><span class="line">CRDNWHGSNRPWVSFNQNLEYQIGYICSGIFGDNPRPNDKTGSCGPVSSNGANGVKGFSFKYGNGVWIGR</span><br><span class="line">TKSISSRNGFEMIWDPNGWTGTDNNFSIKQDIVGINEWSGYSGSFVQHPELTGLDCIRPCFWVELIRGRP</span><br><span class="line">KENTIWTSGSSISFCGVNSDTVGWSWPDGAELPFTIDK</span><br><span class="line">>3nss_B</span><br><span class="line">SVKLAGNSSLCPVSGWAIYSKDNSVRIGSKGDVFVIREPFISCSPLECRTFFLTQGALLNDKHSNGTIKD</span><br><span class="line">RSPYRTLMSCPIGEVPSPYNSRFESVAWSASACHDGINWLTIGISGPDNGAVAVLKYNGIITDTIKSWRN</span><br><span class="line">NILRTQESECACVNGSCFTVMTDGPSNGQASYKIFRIEKGKIVKSVEMNAPNYHYEECSCYPDSSEITCV</span><br><span class="line">CRDNWHGSNRPWVSFNQNLEYQIGYICSGIFGDNPRPNDKTGSCGPVSSNGANGVKGFSFKYGNGVWIGR</span><br><span class="line">TKSISSRNGFEMIWDPNGWTGTDNNFSIKQDIVGINEWSGYSGSFVQHPELTGLDCIRPCFWVELIRGRP</span><br><span class="line">KENTIWTSGSSISFCGVNSDTVGWSWPDGAELPFTIDK</span><br><span class="line"><span class="comment"># 然后,我们看下蛋白结构</span></span><br><span class="line"><span class="comment"># 两条链,有离子,有水,有配体</span></span><br><span class="line"><span class="comment"># 你打开pymol就好了,命令行下,我现在没有找到一个比较好的显示蛋白信息的方法</span></span><br><span class="line"></span><br></pre></td></tr></table></figure><p>然后,我们再来创建一个新的蛋白,使用fab指令</p></li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"> In [<span class="number">8</span>]: <span class="built_in">help</span>(pymol.cmd.fab)</span><br><span class="line">Help on function fab <span class="keyword">in</span> module pymol.editor:</span><br><span class="line"> fab(<span class="built_in">input</span>, name=<span class="literal">None</span>, mode=<span class="string">'peptide'</span>, resi=<span class="number">1</span>, chain=<span class="string">''</span>, segi=<span class="string">''</span>, state=-<span class="number">1</span>, <span class="built_in">dir</span>=<span class="number">1</span>, hydro=-<span class="number">1</span>, ss=<span class="number">0</span>, async_=<span class="number">0</span>, quiet=<span class="number">1</span>, _self=<module <span class="string">'pymol.cmd'</span> <span class="keyword">from</span> <span class="string">'/Users/sujiaqi/miniconda3/envs/py3/lib/python3.7/site-packages/pymol/cmd.py'</span>>, **kwargs)</span><br><span class="line"> DESCRIPTION</span><br><span class="line"> </span><br><span class="line"> Build a peptide</span><br><span class="line"> </span><br><span class="line"> ARGUMENTS</span><br><span class="line"> </span><br><span class="line"> <span class="built_in">input</span> = <span class="built_in">str</span>: sequence <span class="keyword">in</span> one-letter code</span><br><span class="line"> </span><br><span class="line"> name = <span class="built_in">str</span>: name of <span class="built_in">object</span> to create {default: }</span><br><span class="line"> </span><br><span class="line"> ss = <span class="built_in">int</span>: Secondary structure <span class="number">1</span>=alpha helix, <span class="number">2</span>=antiparallel beta, <span class="number">3</span>=parallel beta, <span class="number">4</span>=flat</span><br><span class="line"> </span><br><span class="line"> EXAMPLE</span><br><span class="line"> </span><br><span class="line"> fab ACDEFGH</span><br><span class="line"> fab ACDEFGH, helix, ss=<span class="number">1</span></span><br><span class="line"> In [<span class="number">10</span>]: pymol.cmd.fab(<span class="string">'ACDEFGH'</span>, <span class="string">'helix'</span>, ss=<span class="number">1</span>)</span><br><span class="line"> <span class="comment"># 看下object列表</span></span><br><span class="line"> In [<span class="number">11</span>]: pymol.cmd.get_object_list()</span><br><span class="line"> Out[<span class="number">11</span>]: [<span class="string">'3nss'</span>, <span class="string">'helix'</span>]</span><br><span class="line"> <span class="comment"># 保存</span></span><br><span class="line"> In [<span class="number">13</span>]: pymol.cmd.save(<span class="string">'helix.pdb'</span>,<span class="string">'helix'</span>,<span class="built_in">format</span>=<span class="string">'pdb'</span>)</span><br><span class="line"> <span class="comment"># 你可以使用jupyter notebook进行查看,bio3d包</span></span><br><span class="line"> <span class="comment"># 也可以使用pymol直接打开进行查看</span></span><br></pre></td></tr></table></figure><p> <img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210314115756456.png" alt="image-20210314115756456"></p><p>水文结束,see u.</p>]]></content>
<summary type="html"><p>已经写到20了,我知道你们也有点烦了</p>
<p>姑且认为以前的都会了吧</p>
<p>今天写PyMol</p>
<p><del>然后这次水一波PyMol</del></p>
<ol>
<li><p>安装</p>
<ul>
<li><p>官网:<a href="https</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.21.实例.1-PyMol.2-计算RMSD</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.21.%E5%AE%9E%E4%BE%8B.1-PyMol.2/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.21.%E5%AE%9E%E4%BE%8B.1-PyMol.2/</id>
<published>2021-03-20T11:51:05.131Z</published>
<updated>2021-03-20T11:51:05.131Z</updated>
<content type="html"><![CDATA[<p>我可以把cmd的指令遍历一次,这样就不需要愁拖稿了hhh</p><p>我们来看下蛋白质的中的结构比较</p><p>在结构比较中,你可以很方便的使用align对两个object进行比较</p><p>这里的object你可以简单的理解为蛋白</p><ol><li>你可以很方便的pymol自带的工具对两个或者多个蛋白进行align</li></ol><p>步骤如下,3nss–>Action–>align–>to molecule–>5nwe</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/Screen%20Shot%202021-03-15%20at%204.44.37%20PM.png" alt="Screen Shot 2021-03-15 at 4.44.37 PM"></p><ol start="2"><li>当align不能满足的时候,你也可以使用pymol的插件alignment选择一个比对方式,来进行比较<br><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315164700320.png" alt="image-20210315164700320"></li></ol><p>这里我们先来看下比较方式的不同定义:</p><p>align:首先进行序列对齐,然后进行结构叠加,随后循环几个周期来进行优化,以便拒绝掉在拟合期间发现的异常值。在序列相似度较高的蛋白中align效果会比较好(序列>30%),如果序列相似度比较低的话,super或者cealign会比较好。</p><p>super:对齐选择的结构,他执行的是基于结构的动态规划对齐(不依赖于序列),随后进行循环优化来提高拟合度,对于低序列相似性的蛋白来说,super比align更为鲁棒。</p><p>cealign:使用CE算法来对齐两个蛋白。对于几乎没有序列相似性的蛋白质(twilight zone),它是非常鲁棒的。对于结构比较相似的蛋白,请使用<a href="https://pymolviki.org/index.php/Super">super</a>首选命令,对于序列比较相似的蛋白,则align为首选命令,因为这些命令比cealign快得多</p><p>fit:将第一选择中的模型叠加到第二个模型中,在两个选择中,只要匹配的院子才会被用于fit</p><p><strong>晕了的话我们就来看看例子</strong></p><p>借用我最近看的算法图解的书来说,我们都是视觉型学习者</p><p>align:</p><p>官方给的例子是1oky, 1t46</p><p>在pymol进行align比较,rmsd = 1.306</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315173226326.png" alt="image-20210315173226326"></p><p>我们来看看他的序列相似度</p><p>虽然,我有时候并不喜欢做图,但是,我们可以比较容易的从图中获得其序列相对而言比较保守的信息</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315173805551.png" alt="image-20210315173805551"></p><p>然后我们在看看看super,官方给的案例是</p><p>1F9J,1YX5,rmsd = 0.717</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315174136972.png" alt="image-20210315174136972"></p><p>两者的序列相似度,很不相似</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315174349940.png" alt="image-20210315174349940"></p><p>我使用了align方法,对齐比较了一下,rmsd = 13.697</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315174508859.png" alt="image-20210315174508859"></p><p>然后,我们来看cealign,官方给的案例:1c0mB,1bco,rmsd = 4.958</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315174718512.png" alt="image-20210315174718512"></p><p>序列相似度</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315175038498.png" alt="image-20210315175038498"></p><p>最后,我们看来看下fit</p><p>所用的比较部分为1a00的a链和c链,rmsd =0.564,当然这个需要的对比条件比较严格,</p><p>object的id必须要严格保持一致,比如segi, chain,如果不一致那么需要手动整</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/image-20210315175925035.png" alt="image-20210315175925035"></p><p>到这里,基本上和python没什么用</p><p>但是,强制有用</p><p>举个例子,假设,我有10个蛋白需要比较,计算rmsd</p><p>此处,以aligh为例</p><p>蛋白为:6BHT,4WYM,6OBH,6ECN,5HGL,2PWM,2PWO,6ECO,6OMT,3J3Y</p><p>开始</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br><span class="line">72</span><br><span class="line">73</span><br><span class="line">74</span><br><span class="line">75</span><br><span class="line">76</span><br><span class="line">77</span><br><span class="line">78</span><br><span class="line">79</span><br><span class="line">80</span><br><span class="line">81</span><br><span class="line">82</span><br><span class="line">83</span><br><span class="line">84</span><br><span class="line">85</span><br><span class="line">86</span><br><span class="line">87</span><br><span class="line">88</span><br><span class="line">89</span><br><span class="line">90</span><br><span class="line">91</span><br><span class="line">92</span><br><span class="line">93</span><br><span class="line">94</span><br><span class="line">95</span><br><span class="line">96</span><br><span class="line">97</span><br><span class="line">98</span><br><span class="line">99</span><br><span class="line">100</span><br><span class="line">101</span><br><span class="line">102</span><br><span class="line">103</span><br><span class="line">104</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 启动pymol</span></span><br><span class="line">In [<span class="number">1</span>]: <span class="keyword">import</span> pymol</span><br><span class="line"></span><br><span class="line">Feature has expired.</span><br><span class="line">Feature: PYMOL_MAIN</span><br><span class="line">Expire date: 01-nov-<span class="number">2020</span></span><br><span class="line">License path: /Users/sujiaqi/.pymol/license.lic:</span><br><span class="line">FlexNet Licensing error:-<span class="number">10</span>,<span class="number">32</span></span><br><span class="line">For further information, refer to the FlexNet Licensing documentation,</span><br><span class="line">available at <span class="string">"www.flexerasoftware.com"</span>.</span><br><span class="line"><span class="comment"># 将pdb id号存储为list</span></span><br><span class="line">In [<span class="number">2</span>]: pdb_list = [<span class="string">'6BHT'</span>,<span class="string">'4WYM'</span>,<span class="string">'6OBH'</span>,<span class="string">'6ECN'</span>,<span class="string">'5HGL'</span>,<span class="string">'2PWM'</span>,<span class="string">'2PWO'</span>,<span class="string">'6ECO'</span>,<span class="string">'6OM</span></span><br><span class="line"><span class="string"> ...: T'</span>,<span class="string">'3J3Y'</span>]</span><br><span class="line"><span class="comment"># 获取蛋白</span></span><br><span class="line">In [<span class="number">5</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> pdb_list:</span><br><span class="line"> ...: pymol.cmd.fetch(i)</span><br><span class="line"> ...:</span><br><span class="line"> PyMOL <span class="keyword">not</span> running, entering library mode (experimental)</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> ExecutiveLoad-Detail: Detected mmCIF</span><br><span class="line"> <span class="comment"># 查看object名单</span></span><br><span class="line">In [<span class="number">6</span>]: pymol.cmd.get_object_list()</span><br><span class="line">Out[<span class="number">6</span>]:</span><br><span class="line">[<span class="string">'6BHT'</span>,</span><br><span class="line"> <span class="string">'4WYM'</span>,</span><br><span class="line"> <span class="string">'6OBH'</span>,</span><br><span class="line"> <span class="string">'6ECN'</span>,</span><br><span class="line"> <span class="string">'5HGL'</span>,</span><br><span class="line"> <span class="string">'2PWM'</span>,</span><br><span class="line"> <span class="string">'2PWO'</span>,</span><br><span class="line"> <span class="string">'6ECO'</span>,</span><br><span class="line"> <span class="string">'6OMT'</span>,</span><br><span class="line"> <span class="string">'3J3Y'</span>]</span><br><span class="line"> <span class="comment"># 两两比较rmsd</span></span><br><span class="line"> <span class="comment"># 构建两两组合表</span></span><br><span class="line">In [<span class="number">7</span>]: <span class="keyword">import</span> itertools</span><br><span class="line"></span><br><span class="line">In [<span class="number">8</span>]: combinations = <span class="built_in">list</span>(itertools.combinations(pdb_list, <span class="number">2</span>))</span><br><span class="line"></span><br><span class="line">In [<span class="number">9</span>]: combinations</span><br><span class="line">Out[<span class="number">9</span>]:</span><br><span class="line">[(<span class="string">'6BHT'</span>, <span class="string">'4WYM'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'6OBH'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'6ECN'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'5HGL'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'2PWM'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'6BHT'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'6OBH'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'6ECN'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'5HGL'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'2PWM'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'4WYM'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'6ECN'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'5HGL'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'2PWM'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'6OBH'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'5HGL'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'2PWM'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'6ECN'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'5HGL'</span>, <span class="string">'2PWM'</span>),</span><br><span class="line"> (<span class="string">'5HGL'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'5HGL'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'5HGL'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'5HGL'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'2PWM'</span>, <span class="string">'2PWO'</span>),</span><br><span class="line"> (<span class="string">'2PWM'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'2PWM'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'2PWM'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'2PWO'</span>, <span class="string">'6ECO'</span>),</span><br><span class="line"> (<span class="string">'2PWO'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'2PWO'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'6ECO'</span>, <span class="string">'6OMT'</span>),</span><br><span class="line"> (<span class="string">'6ECO'</span>, <span class="string">'3J3Y'</span>),</span><br><span class="line"> (<span class="string">'6OMT'</span>, <span class="string">'3J3Y'</span>)]</span><br><span class="line"> </span><br><span class="line"> <span class="comment"># 使用align进行比较,然后计算一下时间</span></span><br><span class="line">In [<span class="number">7</span>]: <span class="keyword">import</span> time</span><br><span class="line"> ...: a = time.time()</span><br><span class="line"> ...: print(pymol.cmd.align(combinations[<span class="number">0</span>][<span class="number">0</span>],combinations[<span class="number">0</span>][<span class="number">1</span>]))</span><br><span class="line"> ...: b = time.time()</span><br><span class="line"> ...: b - a</span><br><span class="line">(<span class="number">0.797596275806427</span>, <span class="number">17935</span>, <span class="number">5</span>, <span class="number">1.2639384269714355</span>, <span class="number">19167</span>, <span class="number">14602.0</span>, <span class="number">2772</span>)</span><br><span class="line">Out[<span class="number">7</span>]: <span class="number">3.0302011966705322</span></span><br><span class="line"> </span><br></pre></td></tr></table></figure><p>输出的7个值为</p><p>This returns a list with 7 items:</p><ol><li>RMSD after refinement</li><li>Number of aligned atoms after refinement</li><li>Number of refinement cycles</li><li>RMSD before refinement</li><li>Number of aligned atoms before refinement</li><li>Raw alignment score</li><li>Number of residues aligned</li></ol><p>简而言之,选择第一个就够用</p>]]></content>
<summary type="html"><p>我可以把cmd的指令遍历一次,这样就不需要愁拖稿了hhh</p>
<p>我们来看下蛋白质的中的结构比较</p>
<p>在结构比较中,你可以很方便的使用align对两个object进行比较</p>
<p>这里的object你可以简单的理解为蛋白</p>
<ol>
<li>你可</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.11.函数</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.11.%E5%87%BD%E6%95%B0/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.11.%E5%87%BD%E6%95%B0/</id>
<published>2021-03-20T11:51:05.130Z</published>
<updated>2021-03-20T11:51:05.130Z</updated>
<content type="html"><![CDATA[<p>手写一个迭代器,不要傻了,在你连函数都不会定义的情况下,我教你手写一个迭代器那是作死。</p><p>迭代器在后方</p><p>我们现在来看看<strong>函数,function</strong>定义</p><p>啥子叫个函数嘞</p><p>先来看看我对他的简化版定义</p><p><strong>当你写的代码太过复杂,不易被管理时,我们对代码所用的一种优化,一种代码的简洁结构</strong></p><p>当然他有一定的规则,来看看函数定义的规则(大部分摘自:<a href="https://www.runoob.com/python3/python3-function.html)%EF%BC%9A">https://www.runoob.com/python3/python3-function.html):</a></p><ul><li>函数代码块以 <strong>def</strong> 关键词开头,后接函数标识符名称(就是下面的那个max)和圆括号 <code>()</code>,后面再加个冒号<code>:</code>。</li><li>任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。</li><li>函数内容有缩进。</li><li>使用<code>return</code> 结束函数,函数会返回一个值,结束时不带return的话相当于返回 None。</li></ul><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/py-tup-10-26-1.png" alt="img"></p><h4 id="一般形式"><a href="#一般形式" class="headerlink" title="一般形式"></a>一般形式</h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="function"><span class="keyword">def</span> 函数名(<span class="params">参数</span>):</span></span><br><span class="line"></span><br><span class="line">函数</span><br><span class="line"></span><br><span class="line"><span class="keyword">return</span></span><br></pre></td></tr></table></figure><h3 id="一个实例"><a href="#一个实例" class="headerlink" title="一个实例"></a>一个实例</h3><p>仍然是<code>hellow world!</code></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">11</span>]: <span class="function"><span class="keyword">def</span> <span class="title">hw</span>(<span class="params">words</span>):</span></span><br><span class="line"> ...: print(words)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">12</span>]: hw(<span class="string">'Hellow World!'</span>)</span><br><span class="line">Hellow World!</span><br></pre></td></tr></table></figure><p>然后让我们看看有<code>return</code>的情况</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">13</span>]: <span class="function"><span class="keyword">def</span> <span class="title">plus</span>(<span class="params">a,b</span>):</span></span><br><span class="line"> ...: c = a + b</span><br><span class="line"> ...: <span class="keyword">return</span> c</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">14</span>]: plus(<span class="number">1</span>,<span class="number">2</span>)</span><br><span class="line">Out[<span class="number">14</span>]: <span class="number">3</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: d = plus(<span class="number">1</span>,<span class="number">2</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">16</span>]: d</span><br><span class="line">Out[<span class="number">16</span>]: <span class="number">3</span></span><br></pre></td></tr></table></figure><p>当然<code>return</code>在一个函数中也可以多次使用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">72</span>]: <span class="function"><span class="keyword">def</span> <span class="title">pick_max</span>(<span class="params">a,b</span>):</span> </span><br><span class="line"> ...: <span class="keyword">if</span> a > b : </span><br><span class="line"> ...: <span class="keyword">return</span> a </span><br><span class="line"> ...: <span class="keyword">else</span>: </span><br><span class="line"> ...: <span class="keyword">return</span> b </span><br><span class="line"> ...: </span><br><span class="line"></span><br><span class="line">In [<span class="number">73</span>]: pick_max(<span class="number">1</span>,<span class="number">2</span>) </span><br><span class="line">Out[<span class="number">73</span>]: <span class="number">2</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">74</span>]: c = pick_max(<span class="number">1</span>,<span class="number">2</span>) </span><br><span class="line"></span><br><span class="line">In [<span class="number">75</span>]: c </span><br><span class="line">Out[<span class="number">75</span>]: <span class="number">2</span></span><br></pre></td></tr></table></figure><h4 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h4><p>我们来看下传参</p><ol><li><p>必须参数</p><p>你函数定义了一个参数,此函数必须要有相对应地参数否则运行便会报错</p><p>例如:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">20</span>]: <span class="function"><span class="keyword">def</span> <span class="title">hw</span>(<span class="params">words</span>):</span></span><br><span class="line"> ...: print(words)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">21</span>]: hw()</span><br><span class="line">---------------------------------------------------------------------------</span><br><span class="line">TypeError Traceback (most recent call last)</span><br><span class="line"><ipython-<span class="built_in">input</span>-<span class="number">21</span>-9982e5434f2d> <span class="keyword">in</span> <module></span><br><span class="line">----> 1 hw()</span><br><span class="line"></span><br><span class="line">TypeError: hw() missing <span class="number">1</span> required positional argument: <span class="string">'words'</span></span><br></pre></td></tr></table></figure></li><li><p>默认参数</p><p>我们有时会给参数加一些默认值,如果运行函数时传入修改的参数的话,那么函数一般运行便会使用默认值</p><p>例如</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">23</span>]: <span class="function"><span class="keyword">def</span> <span class="title">hw</span>(<span class="params">a,b,c = <span class="number">5</span></span>):</span></span><br><span class="line"> ...: print(a)</span><br><span class="line"> ...: print(b)</span><br><span class="line"> ...: print(c)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">24</span>]: hw(<span class="number">1</span>,<span class="number">2</span>)</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">25</span>]: hw(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>)</span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br></pre></td></tr></table></figure></li><li><p>可变参数</p><p>顾名思义,可变参数就是参数的个数是可变的,可以是1个也可以是n个</p><p>一般使用<code>*参数名</code>来进行表示,有时候你会常常看到这种形式<code>*args</code></p><p><code>*</code>参数用于解包tuple对象的每个元素,作为一个一个的位置参数传入到函数中</p><p>来举个例子,我想要计算(1,2,3,4)之间的加和</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">26</span>]: <span class="function"><span class="keyword">def</span> <span class="title">calc</span>(<span class="params">*numbers</span>):</span></span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="number">0</span></span><br><span class="line"> ...: <span class="keyword">for</span> n <span class="keyword">in</span> numbers:</span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="built_in">sum</span> + n * n</span><br><span class="line"> ...: <span class="keyword">return</span> <span class="built_in">sum</span></span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">27</span>]: calc(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>,<span class="number">5</span>)</span><br><span class="line">Out[<span class="number">27</span>]: <span class="number">55</span></span><br><span class="line"> </span><br><span class="line"></span><br><span class="line">In [<span class="number">30</span>]: <span class="function"><span class="keyword">def</span> <span class="title">calc</span>(<span class="params">*args</span>):</span></span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="number">0</span></span><br><span class="line"> ...: <span class="keyword">for</span> n <span class="keyword">in</span> args:</span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="built_in">sum</span> + n * n</span><br><span class="line"> ...: <span class="keyword">return</span> <span class="built_in">sum</span></span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">31</span>]: calc(<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>)</span><br><span class="line">Out[<span class="number">31</span>]: <span class="number">30</span></span><br></pre></td></tr></table></figure><p>如果我们有一个列表或者元祖,如和进行传参呢</p><p>例如: a = [1,2,3,4]</p><p>这样?<code>calc(a[0],a[1],a[2],a[3])</code></p><p>虽然可行,但是太过赘述,python中容许在列表或者元祖前加<code>*</code>,将其作为可变参数传入</p><p>例如:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">32</span>]: <span class="function"><span class="keyword">def</span> <span class="title">calc</span>(<span class="params">*args</span>):</span></span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="number">0</span></span><br><span class="line"> ...: <span class="keyword">for</span> n <span class="keyword">in</span> args:</span><br><span class="line"> ...: <span class="built_in">sum</span> = <span class="built_in">sum</span> + n * n</span><br><span class="line"> ...: <span class="keyword">return</span> <span class="built_in">sum</span></span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">33</span>]: a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">34</span>]: calc(*a)</span><br><span class="line">Out[<span class="number">34</span>]: <span class="number">30</span></span><br></pre></td></tr></table></figure><p>还有另外一种形式<code>**karg</code>,使用这种形式参数在函数内部组装为一个dict。</p><p>我们来看个例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">39</span>]: <span class="function"><span class="keyword">def</span> <span class="title">see</span>(<span class="params">**kw</span>):</span></span><br><span class="line"> ...: print(kw)</span><br><span class="line"></span><br><span class="line">In [<span class="number">41</span>]: see(a = <span class="number">1</span>,b = <span class="number">2</span>,c = <span class="number">3</span>,d = <span class="number">4</span>)</span><br><span class="line">{<span class="string">'a'</span>: <span class="number">1</span>, <span class="string">'b'</span>: <span class="number">2</span>, <span class="string">'c'</span>: <span class="number">3</span>, <span class="string">'d'</span>: <span class="number">4</span>}</span><br><span class="line"></span><br></pre></td></tr></table></figure></li><li><p>命名关键字参数</p><p>对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。</p><p>但是,我们需要检查某些关键字,以便查看使用者输入的参数是否是正确的。</p><p>。。。</p><p>把自己当作那些一无所知的用户吧,为他们设身处地的想想。</p><p>我们需要检查,用户的参数输入是否符合我们的标准</p><p>形式为<code>*,关键字,关键字</code></p><p>例如:我们需要检查用户是否输入了<code>id</code>,<code>smi</code>这两个参数,化学信息学初步引入hhh</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">45</span>]: <span class="function"><span class="keyword">def</span> <span class="title">get</span>(<span class="params">*,<span class="built_in">id</span>,smi</span>):</span></span><br><span class="line"> ...: print(<span class="built_in">id</span>,smi)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">46</span>]: get(<span class="built_in">id</span>=<span class="number">1</span>,smi=<span class="string">'c1ccccc1'</span>)</span><br><span class="line"><span class="number">1</span> c1ccccc1</span><br><span class="line"></span><br><span class="line"><span class="comment"># 如果缺少id</span></span><br><span class="line">In [<span class="number">47</span>]: get(<span class="built_in">id</span>=<span class="number">1</span>)</span><br><span class="line">---------------------------------------------------------------------------</span><br><span class="line">TypeError Traceback (most recent call last)</span><br><span class="line"><ipython-<span class="built_in">input</span>-<span class="number">47</span>-f3ae4c96f67d> <span class="keyword">in</span> <module></span><br><span class="line">----> 1 get(id=1)</span><br><span class="line"></span><br><span class="line">TypeError: get() missing <span class="number">1</span> required keyword-only argument: <span class="string">'smi'</span></span><br><span class="line"> </span><br><span class="line"><span class="comment"># 如果缺少smi</span></span><br><span class="line">In [<span class="number">48</span>]: get(smi = <span class="string">'c1ccccc1'</span>)</span><br><span class="line">---------------------------------------------------------------------------</span><br><span class="line">TypeError Traceback (most recent call last)</span><br><span class="line"><ipython-<span class="built_in">input</span>-<span class="number">48</span>-988e95298c74> <span class="keyword">in</span> <module></span><br><span class="line">----> 1 get(smi = 'c1ccccc1')</span><br><span class="line"></span><br><span class="line">TypeError: get() missing <span class="number">1</span> required keyword-only argument: <span class="string">'id'</span></span><br></pre></td></tr></table></figure></li><li><p>参数组合</p><p>额,我就假设你们对前面的内容理解了</p><p>阿弥陀佛</p><p>我们已知有上述几种参数的形式,那么在定义函数的时候,这些参数是否是有顺序的呢</p><p>答案是有的</p><p><strong>参数的顺序必须是:必须参数、默认参数、可变参数/命名关键字参数和关键字参数</strong></p><p>详细可以看:<a href="https://www.jianshu.com/p/98f7e34845b5">https://www.jianshu.com/p/98f7e34845b5</a></p><p>举个例子:</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 这里简单引入驼峰命名法,其实就是justdo不好看hhh</span></span><br><span class="line"><span class="comment"># 驼峰命名法:https://baike.baidu.com/item/骆驼命名法</span></span><br><span class="line">In [<span class="number">49</span>]: <span class="function"><span class="keyword">def</span> <span class="title">just_do</span>(<span class="params">a, b, c=<span class="number">0</span>, *, d, **kw</span>):</span></span><br><span class="line"> ...: print(<span class="string">'a ='</span>, a, <span class="string">'b ='</span>, b, <span class="string">'c ='</span>, c, <span class="string">'d ='</span>, d, <span class="string">'kw ='</span>, kw)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">50</span>]: just_do(<span class="number">1</span>, <span class="number">2</span>, d=<span class="number">99</span>, ext=<span class="literal">None</span>)</span><br><span class="line">a = <span class="number">1</span> b = <span class="number">2</span> c = <span class="number">0</span> d = <span class="number">99</span> kw = {<span class="string">'ext'</span>: <span class="literal">None</span>}</span><br></pre></td></tr></table></figure></li></ol>]]></content>
<summary type="html"><p>手写一个迭代器,不要傻了,在你连函数都不会定义的情况下,我教你手写一个迭代器那是作死。</p>
<p>迭代器在后方</p>
<p>我们现在来看看<strong>函数,function</strong>定义</p>
<p>啥子叫个函数嘞</p>
<p>先来看看我对他的简化版定</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.12.列表生成式.1</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.12.%E5%88%97%E8%A1%A8%E7%94%9F%E6%88%90%E5%BC%8F/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.12.%E5%88%97%E8%A1%A8%E7%94%9F%E6%88%90%E5%BC%8F/</id>
<published>2021-03-20T11:51:05.130Z</published>
<updated>2021-03-20T11:51:05.130Z</updated>
<content type="html"><![CDATA[<h3 id="额"><a href="#额" class="headerlink" title="额"></a>额</h3><p>竟然就到了函数,为什么这么快,我。。。是不是落了一些hh</p><p>来看一个我经常使用的方式</p><p>**列表生成式 **</p><p>一般来说我们如果要创建一个列表的话,那么可选的方案有</p><ol><li><p>直接定义列表</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">1</span>]: a = [<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">2</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">2</span>]: <span class="built_in">list</span></span><br></pre></td></tr></table></figure></li><li><p>将其余数据结构直接列表化</p></li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">3</span>]: b = (<span class="number">1</span>,<span class="number">2</span>,<span class="number">3</span>,<span class="number">4</span>)</span><br><span class="line"></span><br><span class="line">In [<span class="number">4</span>]: <span class="built_in">type</span>(b)</span><br><span class="line">Out[<span class="number">4</span>]: <span class="built_in">tuple</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">5</span>]: c = <span class="built_in">list</span>(a)</span><br><span class="line"></span><br><span class="line">In [<span class="number">6</span>]: <span class="built_in">type</span>(c)</span><br><span class="line">Out[<span class="number">6</span>]: <span class="built_in">list</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">7</span>]: print(c)</span><br><span class="line">[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br></pre></td></tr></table></figure><ol start="3"><li>先创建一个空列表,然后往里面塞元素</li></ol><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">8</span>]: d = []</span><br><span class="line"></span><br><span class="line">In [<span class="number">9</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">4</span>):</span><br><span class="line"> ...: d.append(i)</span><br><span class="line"> ...:</span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: d</span><br><span class="line">Out[<span class="number">10</span>]: [<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">11</span>]: <span class="built_in">type</span>(d)</span><br><span class="line">Out[<span class="number">11</span>]: <span class="built_in">list</span></span><br></pre></td></tr></table></figure><p>但是python提供了一个更为强大的列表生成方案</p><p>他的一般形式是</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">列表 = [表达式 for i in 列表]</span><br></pre></td></tr></table></figure><p>当然你也可以复杂一点</p><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">列表 = [表达式 for i in 列表 判断式]</span><br></pre></td></tr></table></figure><p>那么我们就可以这样使用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">12</span>]: a = [i <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">4</span>)]</span><br><span class="line"></span><br><span class="line">In [<span class="number">13</span>]: a</span><br><span class="line">Out[<span class="number">13</span>]: [<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]</span><br></pre></td></tr></table></figure><p>或者</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">14</span>]: a = [i**<span class="number">2</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">4</span>)]</span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: a</span><br><span class="line">Out[<span class="number">15</span>]: [<span class="number">0</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">9</span>]</span><br></pre></td></tr></table></figure><p>甚至于这样</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">16</span>]: a = [i**<span class="number">2</span> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">4</span>) <span class="keyword">if</span> i > <span class="number">1</span>]</span><br><span class="line"></span><br><span class="line">In [<span class="number">17</span>]: a</span><br><span class="line">Out[<span class="number">17</span>]: [<span class="number">4</span>, <span class="number">9</span>]</span><br><span class="line"></span><br><span class="line"> </span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><h3 id="额"><a href="#额" class="headerlink" title="额"></a>额</h3><p>竟然就到了函数,为什么这么快,我。。。是不是落了一些hh</p>
<p>来看一个我经常使用的方式</p>
<p>**列表生成式 **</p>
<p></summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.13.列表生成式.2</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.13.%E5%88%97%E8%A1%A8%E7%94%9F%E6%88%90%E5%BC%8F/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.13.%E5%88%97%E8%A1%A8%E7%94%9F%E6%88%90%E5%BC%8F/</id>
<published>2021-03-20T11:51:05.130Z</published>
<updated>2021-03-20T11:51:05.130Z</updated>
<content type="html"><![CDATA[<p> 上篇我们说到了列表生成式</p><p>你可以很简单的通过</p><p><code>a = [i for i in b]</code></p><p>来搭建一个列表</p><p><strong>但是,问题还在于内存</strong>,是不是有种熟悉的味道</p><p>是的,你可以在生成列表之后使用迭代器来减少内存</p><p>其实方法很简单,<del>我是为了水文才拆成了两篇</del>,怕你们记不住</p><p>我们只需要将<code>[]</code>修改为<code>()</code>便可以直接生成一个迭代器</p><p>我们看个例子</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">3</span>]: a = [i <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">1000</span>)]</span><br><span class="line"></span><br><span class="line">In [<span class="number">4</span>]: <span class="built_in">type</span>(a)</span><br><span class="line">Out[<span class="number">4</span>]: <span class="built_in">list</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">5</span>]: <span class="keyword">import</span> sys</span><br><span class="line"></span><br><span class="line">In [<span class="number">6</span>]: sys.getsizeof(a)</span><br><span class="line">Out[<span class="number">6</span>]: <span class="number">9032</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">9</span>]: b = (i <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">1000</span>))</span><br><span class="line"></span><br><span class="line">In [<span class="number">10</span>]: sys.getsizeof(b)</span><br><span class="line">Out[<span class="number">10</span>]: <span class="number">128</span></span><br></pre></td></tr></table></figure><p>我们生成迭代器之后的使用方法和原来的一样</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">12</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">12</span>]: <span class="number">0</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">13</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">13</span>]: <span class="number">1</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">14</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">14</span>]: <span class="number">2</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">15</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">15</span>]: <span class="number">3</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">16</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">16</span>]: <span class="number">4</span></span><br><span class="line"></span><br><span class="line">In [<span class="number">17</span>]: <span class="built_in">next</span>(b)</span><br><span class="line">Out[<span class="number">17</span>]: <span class="number">5</span></span><br></pre></td></tr></table></figure><p>当然,你也可以通过循环来进行调用</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">In [<span class="number">20</span>]: b = (i <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">0</span>,<span class="number">10</span>))</span><br><span class="line"></span><br><span class="line">In [<span class="number">21</span>]: <span class="keyword">for</span> i <span class="keyword">in</span> b:</span><br><span class="line"> ...: print(i)</span><br><span class="line"> ...:</span><br><span class="line"><span class="number">0</span></span><br><span class="line"><span class="number">1</span></span><br><span class="line"><span class="number">2</span></span><br><span class="line"><span class="number">3</span></span><br><span class="line"><span class="number">4</span></span><br><span class="line"><span class="number">5</span></span><br><span class="line"><span class="number">6</span></span><br><span class="line"><span class="number">7</span></span><br><span class="line"><span class="number">8</span></span><br><span class="line"><span class="number">9</span></span><br></pre></td></tr></table></figure><p>好,水文结束,大家早午晚安</p>]]></content>
<summary type="html"><p> 上篇我们说到了列表生成式</p>
<p>你可以很简单的通过</p>
<p><code>a = [i for i in b]</code></p>
<p>来搭建一个列表</p>
<p><strong>但是,问题还在于内存</strong>,是不是有种熟悉的味道</p>
<p</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.14.模块(包)的使用</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.14.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.14.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B/</id>
<published>2021-03-20T11:51:05.130Z</published>
<updated>2021-03-20T11:51:05.130Z</updated>
<content type="html"><![CDATA[<p>本来打算写类的,但是想了下,写一个类然后打包发布,对于使用者来说难度有点大</p><p>所以我们就简单介绍一下包的使用和安装,足够大家使用就好</p><p><strong>python的一大优势就是有很多的第三方包</strong></p><ul><li><p>蛋白设计:PyRosetta等</p></li><li><p>化学信息学:Rdkit,PyBel,ODDT等</p></li><li><p>生物信息学:BioPython,Dash Bio等</p></li><li><p>AI:Sklearn,Tensorflow,PyTorch等</p></li></ul><p>当你熟练的使用这些包的时候,就可以很方便的使用各个学科的相关知识,降低你的入门难度,</p><p>而一些,你只需要输入**<code>import everything</code>**就可以实现</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/OIP.eTnkGiSxg4Ri-FmUNTGIgwHaEh.jpeg" alt="OIP.eTnkGiSxg4Ri-FmUNTGIgwHaEh"></p><p>我们先来看下python自带的一些包</p><p>python内置了一些很有用的模块</p><p>几个例子,<code>os, sys,time</code>等</p><p>我们看下使用</p><p>以<a href="https://www.runoob.com/python/os-file-methods.html">os</a>为例</p><p>os是<code>operating system</code>的缩写,他是python与系统进行交互的接口</p><p>我们来看几个常见的功能</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br><span class="line">54</span><br><span class="line">55</span><br><span class="line">56</span><br><span class="line">57</span><br><span class="line">58</span><br><span class="line">59</span><br><span class="line">60</span><br><span class="line">61</span><br><span class="line">62</span><br><span class="line">63</span><br><span class="line">64</span><br><span class="line">65</span><br><span class="line">66</span><br><span class="line">67</span><br><span class="line">68</span><br><span class="line">69</span><br><span class="line">70</span><br><span class="line">71</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 首先import</span></span><br><span class="line">In [<span class="number">1</span>]: <span class="keyword">import</span> os</span><br><span class="line"><span class="comment">#获取当前路径</span></span><br><span class="line">In [<span class="number">2</span>]: os.getcwd()</span><br><span class="line">Out[<span class="number">2</span>]: <span class="string">'/Users/user'</span></span><br><span class="line"><span class="comment">#显示当前路径下的目录和文件列表</span></span><br><span class="line">In [<span class="number">3</span>]: os.listdir()</span><br><span class="line">Out[<span class="number">3</span>]:</span><br><span class="line">[<span class="string">'1S2d.pdb'</span>,</span><br><span class="line"> <span class="string">'knime'</span>]</span><br><span class="line"><span class="comment"># 更改工作目录</span></span><br><span class="line">In [<span class="number">5</span>]: os.chdir(<span class="string">'Public/'</span>)</span><br><span class="line"><span class="comment"># 如果你想看os的相关帮助的话</span></span><br><span class="line">In [<span class="number">8</span>]: <span class="built_in">help</span>(os)</span><br><span class="line">Help on module os:</span><br><span class="line"></span><br><span class="line">NAME</span><br><span class="line"> os - OS routines <span class="keyword">for</span> NT <span class="keyword">or</span> Posix depending on what system we<span class="string">'re on.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">MODULE REFERENCE</span></span><br><span class="line"><span class="string"> https://docs.python.org/3.8/library/os</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string"> The following documentation is automatically generated from the Python</span></span><br><span class="line"><span class="string"> source files. It may be incomplete, incorrect or include features that</span></span><br><span class="line"><span class="string"> are considered implementation detail and may vary between Python</span></span><br><span class="line"><span class="string"> implementations. When in doubt, consult the module reference at the</span></span><br><span class="line"><span class="string"> location listed above.</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">DESCRIPTION</span></span><br><span class="line"><span class="string"> This exports:</span></span><br><span class="line"><span class="string"> - all functions from posix or nt, e.g. unlink, stat, etc.</span></span><br><span class="line"><span class="string"> - os.path is either posixpath or ntpath</span></span><br><span class="line"><span class="string"> - os.name is either '</span>posix<span class="string">' or '</span>nt<span class="string">'</span></span><br><span class="line"><span class="string"> - os.curdir is a string representing the current directory (always '</span>.<span class="string">')</span></span><br><span class="line"><span class="string"> - os.pardir is a string representing the parent directory (always '</span>..<span class="string">')</span></span><br><span class="line"><span class="string"> - os.sep is the (or a most common) pathname separator ('</span>/<span class="string">' or '</span>\\<span class="string">')</span></span><br><span class="line"><span class="string"> - os.extsep is the extension separator (always '</span>.<span class="string">')</span></span><br><span class="line"><span class="string"> - os.altsep is the alternate pathname separator (None or '</span>/<span class="string">')</span></span><br><span class="line"><span class="string"># 或者只是想看下os这个模块中定义过的函数或者变量</span></span><br><span class="line"><span class="string">In [10]: dir(os)</span></span><br><span class="line"><span class="string">Out[10]:</span></span><br><span class="line"><span class="string">['</span>CLD_CONTINUED<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>CLD_DUMPED<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>CLD_EXITED<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>CLD_TRAPPED<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>DirEntry<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_CANTCREAT<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_CONFIG<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_DATAER<span class="string">R',</span></span><br><span class="line"><span class="string"> '</span>EX_IOER<span class="string">R',</span></span><br><span class="line"><span class="string"> '</span>EX_NOHOST<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_NOINPUT<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_NOPERM<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_NOUSE<span class="string">R',</span></span><br><span class="line"><span class="string"> '</span>EX_OK<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_OSER<span class="string">R',</span></span><br><span class="line"><span class="string"> '</span>EX_OSFILE<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_PROTOCOL<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_SOFTWARE<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_TEMPFAIL<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_UNAVAILABLE<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>EX_USAGE<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>F_LOCK<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>F_OK<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>F_TEST<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>F_TLOCK<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>F_ULOCK<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>MutableMapping<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>NGROUPS_MAX<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>O_ACCMODE<span class="string">',</span></span><br><span class="line"><span class="string"> '</span>O_APPEND<span class="string">']</span></span><br></pre></td></tr></table></figure>]]></content>
<summary type="html"><p>本来打算写类的,但是想了下,写一个类然后打包发布,对于使用者来说难度有点大</p>
<p>所以我们就简单介绍一下包的使用和安装,足够大家使用就好</p>
<p><strong>python的一大优势就是有很多的第三方包</strong></p>
<ul>
<li><p>蛋白</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
<entry>
<title>Python每日一谈|No.15.模块(包)的安装</title>
<link href="http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.15.%E6%A8%A1%E5%9D%97(%E5%8C%85)%E7%9A%84%E5%AE%89%E8%A3%85/"/>
<id>http://example.com/2021/03/20/python-every-day/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88%EF%BD%9CNo.15.%E6%A8%A1%E5%9D%97(%E5%8C%85)%E7%9A%84%E5%AE%89%E8%A3%85/</id>
<published>2021-03-20T11:51:05.130Z</published>
<updated>2021-03-20T11:51:05.130Z</updated>
<content type="html"><![CDATA[<p>上一谈中我们使用了Python自带的包进行使用来阐述</p><p>这一部分,我们来看看第三方python包,如何安装,如何使用</p><p>以BioPython为例,难度低,用途比较广</p><p>biopython网站:<a href="https://biopython.org/wiki/Documentation">https://biopython.org/wiki/Documentation</a></p><h3 id="biopython简介"><a href="#biopython简介" class="headerlink" title="biopython简介"></a>biopython简介</h3><p><a href="https://www.yiibai.com/biopython/biopython_introduction.html">Biopython是Python的最大,最受欢迎的生物信息学软件包。它包含许多用于常规生物信息学任务的不同子模块。它由Chapman和Chang开发,主要使用Python编写。它还包含C代码,以优化软件的复杂计算部分。它可以在Windows,Linux,Mac OS X等操作系统上运行。</a></p><h3 id="安装"><a href="#安装" class="headerlink" title="安装"></a>安装</h3><ol><li><p>pip</p><p>pip是python的包管理器</p><p><code>pip install biopython</code></p><p>你可以在这个网站上查询需要安装的python包:<a href="https://pypi.org/">https://pypi.org</a></p><p>如果你需要安装特定的biopython版本的话</p><p><code>pip install biopython==version</code></p></li><li><p>conda</p><p>conda是一个强大的开源的软件包管理系统和环境管理系统</p><p>你可以在这个网站上查询需要安装的python包</p><p><code>conda install biopython</code></p><p>如果需要安装特定的版本</p><p><code>conda install biopython=version</code></p></li><li><p>离线安装</p><p>以上两种都属于在线安装,也即为有网状态下</p><p>下面来看下离线状态下如何安装python的第三方包</p><p>首先,我们要找到软件的官网</p><p>然后下载其文件:<a href="http://biopython.org/DIST/biopython-1.78.zip">http://biopython.org/DIST/biopython-1.78.zip</a></p><p>下载完成后,解压</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">user:biopython-1.78/ $ ls [14:17:30]</span><br><span class="line">Bio DEPRECATED.rst NEWS.rst Tests</span><br><span class="line">BioSQL Doc PKG-INFO biopython.egg-info</span><br><span class="line">CONTRIB.rst LICENSE.rst README.rst setup.cfg</span><br><span class="line">CONTRIBUTING.rst MANIFEST.in Scripts setup.py</span><br></pre></td></tr></table></figure><p> 然后,我们直接运行<code>python setup.py install </code></p><p> 就可以进行安装</p></li></ol><h3 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h3><p>详细使用的话需要查看其原文档以及手册</p><p><a href="http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec3">http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec3</a></p><p>我们这里的使用以3D模块为例:<a href="http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec178">http://biopython.org/DIST/docs/tutorial/Tutorial.html#sec178</a></p><p>我们需要下载这个文件<code>1fat.cif</code>:<a href="http://files.rcsb.org/download/1FAT.cif">http://files.rcsb.org/download/1FAT.cif</a></p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 先导入</span></span><br><span class="line">In [<span class="number">4</span>]: <span class="keyword">import</span> Bio</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 查看版本</span></span><br><span class="line">In [<span class="number">5</span>]: print(Bio.__version__)</span><br><span class="line"><span class="number">1.78</span></span><br><span class="line">In [<span class="number">15</span>]: <span class="keyword">from</span> Bio.PDB.MMCIFParser <span class="keyword">import</span> MMCIFParser</span><br><span class="line"> ...: parser = MMCIFParser()</span><br><span class="line">In [<span class="number">16</span>]: structure = parser.get_structure(<span class="string">"1fat"</span>, <span class="string">"1fat.cif"</span>)</span><br><span class="line"> </span><br><span class="line"><span class="comment"># 我们使用biopython获取了1fat这个蛋白的结构信息</span></span><br><span class="line"><span class="comment"># 然后来进行一个简单的示例</span></span><br><span class="line">In [<span class="number">18</span>]: <span class="keyword">for</span> model <span class="keyword">in</span> structure:</span><br><span class="line"> ...: <span class="keyword">for</span> chain <span class="keyword">in</span> model:</span><br><span class="line"> ...: <span class="keyword">for</span> residue <span class="keyword">in</span> chain:</span><br><span class="line"> ...: <span class="keyword">for</span> atom <span class="keyword">in</span> residue:</span><br><span class="line"> ...: print(atom)</span><br><span class="line"> </span><br><span class="line">...</span><br><span class="line"><Atom O></span><br><span class="line"><Atom CB></span><br><span class="line"><Atom CG></span><br><span class="line"><Atom CD1></span><br><span class="line"><Atom CD2></span><br><span class="line"><Atom N></span><br><span class="line"><Atom CA></span><br><span class="line"><Atom C></span><br><span class="line"><Atom O></span><br><span class="line"><Atom N></span><br><span class="line"><Atom CA></span><br><span class="line"><Atom C></span><br><span class="line"><Atom O></span><br><span class="line"><Atom CB></span><br><span class="line"><Atom CG></span><br><span class="line"><Atom CD1></span><br><span class="line">...</span><br></pre></td></tr></table></figure><p>下面是biopython中对于结构的解析</p><p><img src="https://gitee.com/luskyqi/markdown-png/raw/master/uPic/smcra.png" alt="img"></p>]]></content>
<summary type="html"><p>上一谈中我们使用了Python自带的包进行使用来阐述</p>
<p>这一部分,我们来看看第三方python包,如何安装,如何使用</p>
<p>以BioPython为例,难度低,用途比较广</p>
<p>biopython网站:<a href="https://biopyt</summary>
<category term="Python每日一谈" scheme="http://example.com/categories/Python%E6%AF%8F%E6%97%A5%E4%B8%80%E8%B0%88/"/>
</entry>
</feed>