-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsearch.xml
More file actions
107 lines (51 loc) · 248 KB
/
search.xml
File metadata and controls
107 lines (51 loc) · 248 KB
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
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title>图标合集</title>
<link href="/2023/02/07/icon/"/>
<url>/2023/02/07/icon/</url>
<content type="html"><![CDATA[<h1 id="图标合集"><a href="#图标合集" class="headerlink" title="图标合集"></a>图标合集</h1><div class="tabs" id="icon"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#icon-1">笑脸</button></li><li class="tab"><button type="button" data-href="#icon-2">头像</button></li><li class="tab"><button type="button" data-href="#icon-3">饰品</button></li><li class="tab"><button type="button" data-href="#icon-4">蛋糕</button></li><li class="tab"><button type="button" data-href="#icon-5">车辆</button></li><li class="tab"><button type="button" data-href="#icon-6">爱心</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="icon-1"><p>😀😁😂🤣😃😄😅😆😉😊😋😎😍😘🥰😗😙😚☺🙂🤗🤩🤔<br>🤨😐😑😶🙄😏😣😥😮🤐😯😪😫🥱😴😌😛😜😝🤤😒😓😔😕<br>🙃🤑😲☹🙁😖😞😟😤😢😭😦😧😨😩🤯😬😰😱🥵🥶😳 🤪😵🥴😠😡🤬😷🤒🤕🤢🤮🤧😇🥳🥺🤡🤠🤥🤫🤭🧐<br>🤓😈👿👹👺💀☠👻👽👾🤖💩😺😸😹😻😼😽🙀😿😾🐱👤🐱🏍<br>🐱💻🐱🐉🐱👓🐱🚀🙈🙉🙊🐵🐶🐺🐱🦁🐯🦒🦊🦝🐮🐷🐗🐭🐹<br>🐰🐻🐨🐼🐸🦓🐴🦄🐔🐲🐽🐾🐒🦍🦧🦮🐕🦺🐩🐕🐈🐅🐆🐎🦌<br>🦏🦛🐂🐃🐄🐖🐏🐑🐐🐪🐫🦙🦘🦥🦨🦡🐘🐁🐀🦔🐇🐿🦎<br>🐊🐢🐍🐉🦕🦖🦦🦈🐬🐳🐋🐟🐠🐡🦐🦑🐙🦞🦀🐚🦆🐓🦃🦅🕊<br>🦢🦜🦩🦚🦉🐦🐧🐥🐤🐣🦇🦋🐌🐛🦟🦗🐜🐝🐞🦂🕷🕸🦠🧞<br>♀️🧞♂️🗣👤👥👁👀🦴🦷👅👄🧠🦾🦿👣🤺⛷🤼♂️🤼♀<br>👯♂️👯♀️💑👩❤️👩👨❤️👨💏👩❤️💋👩👨❤ ️<br>💋 👨👪👨👩👦👨👩👧👨👩👧👦👨👩👦👦👨👩👧👧👨👨👦👨👨👧👨<br>👨👧👦👨👨👦👦👨👨👧👧👩👩👦👩👩👧👩👩👧👦👩👩👦👦👩👩👧👧<br>👩👦👩👧👩👧👦👩👦👦👩👧👧👨👦👨👧👨👧👦👨👦👦👨👧👧👭<br>👩🏻🤝👩🏻👩🏼🤝👩🏻👩🏼🤝👩🏼👩🏽🤝👩🏻👩🏽🤝👩🏼👩🏽🤝👩🏽👩🏾🤝👩🏻👩🏾🤝👩🏼👩🏾🤝👩🏽👩🏾🤝👩🏾👩🏿🤝👩🏻<br>👩🏿🤝👩🏼👩🏿🤝👩🏽👩🏿🤝👩🏾👩🏿🤝👩🏿👫👩🏻🤝🧑🏻👩🏻🤝🧑🏼👩🏻🤝🧑🏽👩🏻🤝🧑🏾👩🏻🤝🧑🏿<br>👩🏼🤝🧑🏻👩🏼🤝🧑🏼👩🏼🤝🧑🏽👩🏼🤝🧑🏾👩🏼🤝🧑🏿👩🏽🤝🧑🏻👩🏽🤝🧑🏼👩🏽🤝🧑🏽 👩🏽🤝<br>🧑🏾👩🏽🤝🧑🏿👩🏾🤝🧑🏻👩🏾🤝🧑🏼👩🏾🤝🧑🏽👩🏾🤝🧑🏾👩🏾🤝🧑🏿👩🏿🤝🧑🏻 👩🏿 🤝🧑🏼👩🏿🤝🧑🏽👩🏿🤝🧑🏾<br>👩🏿🤝🧑🏿👬👨🏻🤝👨🏻👨🏼🤝👨🏻👨🏼🤝👨🏼👨🏽🤝👨🏼👨🏽🤝👨🏻 👨🏽🤝👨🏽👨🏾🤝👨🏻👨🏾🤝👨🏼👨🏾🤝👨🏽👨🏾🤝👨🏾👨🏿🤝👨🏻👨🏿🤝👨🏼👨🏿🤝👨🏽👨🏿🤝👨🏾👨🏿🤝👨🏿</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="icon-2"><p>👩👨🧑👧👦🧒👶👵👴🧓👩🦰👨🦰👩🦱👨🦱👩🦲👨🦲👨🦳👱♀️<br>👱♂️👸🤴👳♀️👳♂️👲🧔👼🤶🎅👮♀️👮♂️🕵️♀️🕵️♂️💂♀️<br>💂♂️👷♀️👷♂️👩⚕️👨⚕️👩🎓👨🎓👩🏫👨🏫👩⚖️👨⚖️<br>👩🌾👨🌾👩🍳👨🍳👩🔧👨🔧👩🏭👨🏭👩💼👨💼👩🔬👨🔬👩💻👨💻👩🎤👨🎤👩<br>🎨👨🎨👩✈️👨✈️👩🚀👨🚀👩🚒👨🚒🧕👰🤵🤱🤰🦸♀️🦸♂️🦹♀️🦹♂️<br>🧙♀️🧙♂️🧚♀️🧚♂️🧛♀️🧛♂️🧜♀️🧜♂️🧝♀️🧝♂️🧟♀️🧟♂️🙍♀️<br>🙍♂️🙎♀️🙎♂️🙅♀️🙅♂️🙆♀️🙆♂️🧏♀️🧏♂️💁♀️<br>💁♂️🙋♀️🙋♂️🙇♀️🙇♂️🤦♀️🤦♂️🤷♀️🤷♂️<br>💆♀️💆♂️💇♀️💇♂️🧖♀️🧖♂️🤹♀️🤹♂️👩🦽👨🦽👩🦼<br>👨🦼👩🦯👨🦯🧎♀️🧎♂️🧍♀️🧍♂️🚶♀️🚶♂️🏃♀️🏃♂️💃🕺<br>🧗♀️🧗♂️🧘♀️🧘♂️🛀🛌🕴🏇🏂🏌️♀️🏌️♂️🏄♀️🏄♂️🚣♀️<br>🚣♂️🏊♀️🏊♂️🤽♀️🤽♂️🤾♀️🤾♂️⛹️♀️⛹️♂️<br>🏋️♀️🏋️♂️🚴♀️🚴♂️🚵♀️🚵♂️🤸♀️🤸♂️🤳💪🦵🦶<br>👂🦻👃🤏👈👉☝👆✌✌🤞🖖🤘🤙🖐✋👌👍👎✊👊🤛🤜🤚👋✍🤟👏👐🙌🤲🙏🤝💅</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="icon-3"><p>🎈🎆🎇🧨✨🎉🎊🎃🎄🎋🎍🎎🎏🎐🎑🧧🎀🎁🎗🎟🎫🎠🎡🎢🎪🎭🖼🎨<br>🧵🧶🛒👓🕶🦺🥽🥼🧥👔👕👖🩳🧣🧤🧦👗🥻👘👚👜👑⚾⚽🏓🏉<br>🏈🥅🥏🪁🎯🥇🥈🥉🏅🎖🏆🎰🕹🎮🪀🎴📢♥🔔♣♠🎸🎺🎷🎶🎵🔑🔐🔏🔓<br>⚒🛠🧪⚗🩸🧲🔫🖲🗿🔋💽🔍🔎📼📔📓📒📃📜📄📑📰📙📚📩📤📥📦📫<br>📪📬📭📁📂🗂🖌✒🗒📅📆🗓📎⌛⏳⌚⏰⏱⏲🗃✂📐🗑📍📌📋📊📉📈📇</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="icon-4"><p>🍕🍔🍟🌭🧂🍿🥓🥚🍳🧇🥞🧈🍞🥐🥨🥯🥙🥪🌮🌯🥫🍖🍗🥩🍠 🥠<br>🥡🍱🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🍧🍦🍨🍩🍪🎂🍰🧁🍫🍬🍭<br>🍡🍮🍯🍼🥛🧃☕🍵🧉🍶🍾🍷🍸🍹🍺🍻🥂🥃🧊🥤🥢🍴🥄🏺🥝🥥🍇🍈🍉<br>🍊🍌🍋🍍🥭🍎🍏🍐🍑🍒🍓🍅🍆🌽🌶🍄🥑🥒🥬🥦🥔🧄🧅🥕🌰🥜💐🌸🏵<br>🌹🌺🌻🌼🌷🥀☘🌱🌲🌳🌴🌵🌾🌿🍀🍁🍂🍃</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="icon-5"><p>🚗🚓🚕🛺🚙🚌🚎🚒🚚🚛🚜🚘🚔🚖🚍🦽🦼🛹🚲🛴🛵🏍🚄🚅🚈🚝🚞<br>🚃🚋🚆🛩🚉🪂🚊✈🚇🛫🚟🛬🚠💺🚡🚁🚀🚂🛸🛰⛵🚤🛥⛴🛳🚢⚓🌎🌏<br>🛤🏕🗺🏞🧭🛣🏔🏖⛰🏜🌋🏝🗻🏚🏙🏘🏗🏛🕋🕌🛕🕍⛩⛪去🏰🏯🗼🌉<br>🛁🌝🌤⛈⛅☁🌩🌨🌧🌦🌥🌜🌞⭐🌟🌈🌀🌬🌡☄🌠☔🌊⛱⚡❄☃⛄🔥</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="icon-6"><p>❤🧡💛💚💙💜🤎🖤🤍💔❣💕💞💓💗💖💘💝💟💌💥💤💦💨💫🕳💯🔅🔆⚜<br>〽❓❔❗❕〰➰✔💲💱➕➖✖➗💭🗯💬🗨👁🗨🕐🕑🕒🕧🕦🕥🕤🕝🕟🕠🕡🕢</p><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><div class="tip warning faa-horizontal animated-hover"><p>本网站只是搬运工,资源均来自互联网,如有侵权请联系删除,站长不会以此获取任何利益!</p></div> ]]></content>
<categories>
<category> 黑科技🤣 </category>
</categories>
<tags>
<tag> resource </tag>
</tags>
</entry>
<entry>
<title>资源合集</title>
<link href="/2023/02/07/resource/"/>
<url>/2023/02/07/resource/</url>
<content type="html"><![CDATA[<div class="tabs" id="test4"><ul class="nav-tabs"><li class="tab active"><button type="button" data-href="#test4-1">公考</button></li><li class="tab"><button type="button" data-href="#test4-2">考研</button></li><li class="tab"><button type="button" data-href="#test4-3">Chat-Gpt🤖️ (20231225)</button></li><li class="tab"><button type="button" data-href="#test4-4">☭HPPU️☭</button></li></ul><div class="tab-contents"><div class="tab-item-content active" id="test4-1"><div class="table-container"><table><thead><tr><th>名称</th><th>资源</th></tr></thead><tbody><tr><td>百度网盘群号(国考/联考(已更新))</td><td>568836385</td></tr></tbody></table></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-2"><div class="table-container"><table><thead><tr><th>名称</th><th>资源</th></tr></thead><tbody><tr><td>金榜题名</td><td><a href="http://qzbltushu.ysepan.com/">http://qzbltushu.ysepan.com/</a></td></tr></tbody></table></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-3"><div class="table-container"><table><thead><tr><th>名称</th><th>资源</th></tr></thead><tbody><tr><td>chat-Gpt3</td><td><a href="https://chat18.aichatos.xyz/">https://chat18.aichatos.xyz/</a></td></tr><tr><td>国内免费镜像站点·长期更新</td><td><a href="https://chat.tomyres.com/#/gpt">https://chat.tomyres.com/#/gpt</a></td></tr><tr><td>在问</td><td><a href="https://www.zaiwen.top/#/">https://www.zaiwen.top/#/</a></td></tr></tbody></table></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div><div class="tab-item-content" id="test4-4"><div class="table-container"><table><thead><tr><th>名称</th><th>资源</th></tr></thead><tbody><tr><td>文本分析小工具</td><td><a href="https://weiboanalysis.streamlit.app/">https://weiboanalysis.streamlit.app/</a></td></tr><tr><td>公式识别器</td><td><a href="https://p2t.breezedeus.com/">https://p2t.breezedeus.com/</a></td></tr><tr><td>公式识别器2</td><td><a href="https://www.latexlive.com/home">https://www.latexlive.com/home</a></td></tr></tbody></table></div><button type="button" class="tab-to-top" aria-label="scroll to top"><i class="fas fa-arrow-up"></i></button></div></div></div><div class="tip warning faa-horizontal animated-hover"><p>本网站只是搬运工,资源均来自互联网,如有侵权请联系删除,站长不会以此获取任何利益!</p></div> ]]></content>
<categories>
<category> 黑科技🤣 </category>
</categories>
<tags>
<tag> resource </tag>
</tags>
</entry>
<entry>
<title>python基础练习</title>
<link href="/2023/02/07/python%E7%BB%83%E4%B9%A0/"/>
<url>/2023/02/07/python%E7%BB%83%E4%B9%A0/</url>
<content type="html"><![CDATA[<h1 id="数据类型篇"><a href="#数据类型篇" class="headerlink" title="数据类型篇"></a>数据类型篇</h1><p> 本篇的练习题旨在考察你对基本数据类型的理解熟悉程度,适合刚接触python的初学者用来巩固对基础知识的理解 </p><h2 id="基本数据类型"><a href="#基本数据类型" class="headerlink" title="基本数据类型"></a>基本数据类型</h2><h3 id="逻辑推理练习(类型转换)"><a href="#逻辑推理练习(类型转换)" class="headerlink" title="逻辑推理练习(类型转换)"></a>逻辑推理练习(类型转换)</h3><p>不运行程序,说出下面程序的执行结果</p><figure class="highlight text"><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">1. 4.0 == 4</span><br><span class="line">2. "4.0" == 4</span><br><span class="line">3. bool("1")</span><br><span class="line">4. bool("0")</span><br><span class="line">5. str(32)</span><br><span class="line">6. int(6.26)</span><br><span class="line">7. float(32)</span><br><span class="line">8. float("3.21")</span><br><span class="line">9. int("434")</span><br><span class="line">10. int("3.42")</span><br><span class="line">11. bool(-1)</span><br><span class="line">12. bool("")</span><br><span class="line">13. bool(0)</span><br><span class="line">14. "wrqq" > "acd"</span><br><span class="line">15. "ttt" == "ttt "</span><br><span class="line">16. "sd"*3</span><br><span class="line">17. "wer" + "2322"</span><br></pre></td></tr></table></figure><p>答案如下</p><figure class="highlight text"><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">1. True</span><br><span class="line">2. False</span><br><span class="line">3. True</span><br><span class="line">4. True</span><br><span class="line">5. '32'</span><br><span class="line">6. 6</span><br><span class="line">7. 32.0</span><br><span class="line">8. 3.21</span><br><span class="line">9. 434</span><br><span class="line">10. 会报错</span><br><span class="line">11. True</span><br><span class="line">12. False</span><br><span class="line">13. False</span><br><span class="line">14. True</span><br><span class="line">15. False</span><br><span class="line">16. "sdsdsd"</span><br><span class="line">17. 'wer2322'</span><br></pre></td></tr></table></figure><p>关于这些答案,要做到知其然且知其所以然,编程需要精准的知道每一个细节,下面对其中一些可能让你感到困惑的知识点进行讲解</p><h4 id="bool函数转换规则"><a href="#bool函数转换规则" class="headerlink" title="bool函数转换规则"></a>bool函数转换规则</h4><p>bool函数进行转换时,其结果取决于传入参数与True和False的等价关系,只需记住一点即可</p><p><strong>0 , 空字符串, None在条件判断语句中等价于False, 其他数值都等价于True</strong></p><p>bool函数在做数据类型转换时遵循该原则</p><h4 id="int-“3-42”-为什么会报错"><a href="#int-“3-42”-为什么会报错" class="headerlink" title="int(“3.42”) 为什么会报错"></a>int(“3.42”) 为什么会报错</h4><p>字符串”3.42”可以转成float类型数据3.42, 3.42可以转成int类型数据3,但是字符串”3.42”却不可以直接使用int函数转成3,讲实话,我也觉得这个函数有些不灵活,或许是语言的发明者有自己的考虑吧,咱们对这种问题,不必深究,先做到知道它是什么,将来再去研究为什么</p><h4 id="字符串大小比较规则"><a href="#字符串大小比较规则" class="headerlink" title="字符串大小比较规则"></a>字符串大小比较规则</h4><p>两个字符串在比较大小时,比的不是长度,而是内容</p><p>字符串左对齐后,逐个字符依次比较,直到可以分出胜负</p><h4 id="“sd”-3"><a href="#“sd”-3" class="headerlink" title="“sd”*3"></a>“sd”*3</h4><p>“sd”*3 的意思是sd重复3次,生成一个新的字符串</p><h3 id="数据类型考察"><a href="#数据类型考察" class="headerlink" title="数据类型考察"></a>数据类型考察</h3><p>请说出下面表达式结果的类型</p><figure class="highlight text"><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">1. "True"</span><br><span class="line">2. "Flase"</span><br><span class="line">3. 4 >= 5</span><br><span class="line">4. 5 </span><br><span class="line">5. 5.0</span><br><span class="line">6. True</span><br></pre></td></tr></table></figure><p>非常简单的送分题</p><figure class="highlight text"><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">1. str</span><br><span class="line">2. str</span><br><span class="line">3. bool</span><br><span class="line">4. int</span><br><span class="line">5. float</span><br><span class="line">6. bool</span><br></pre></td></tr></table></figure><p>唯一需要解释的是4 >= 5,4比5小,怎么可能大于等于5呢,这是错误的,既然是错的,那么就等于False,False的类型是bool</p><h3 id="交互式解释器练习"><a href="#交互式解释器练习" class="headerlink" title="交互式解释器练习"></a>交互式解释器练习</h3><p>请在交互式解释器里回答下面的题目</p><figure class="highlight text"><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">1. 3的5次方</span><br><span class="line">2. 7对2求模</span><br><span class="line">3. 9除5,要求有小数部分</span><br><span class="line">4. 9除5,要求没有小数部分</span><br><span class="line">5. 用程序计算根号16,也就是16的2分之一次方</span><br></pre></td></tr></table></figure><p>答案如下</p><figure class="highlight text"><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">1. 3**5</span><br><span class="line">2. 7%2</span><br><span class="line">3. 9/5</span><br><span class="line">4. 9//5</span><br><span class="line">5. import math</span><br><span class="line"> math.sqrt(16)</span><br></pre></td></tr></table></figure><h4 id="知识点讲解"><a href="#知识点讲解" class="headerlink" title="知识点讲解"></a>知识点讲解</h4><ol><li>幂运算用两个<em>, 2的2次方表示为2*</em>2</li><li>求模运算用%, 其实就是求余数,不知道余数的打电话给小学老师</li><li>除法中,希望结果有小数部分时用/, 希望只保留整数部分时用 // ,没啥可解释的,请记住他们的区别,懒得记,就别学编程,编程不适合懒惰的人</li><li>开根号,要用到math模块的sqrt方法,这个题目需要你自己去百度或是谷歌,第一次明确的建议你,一定要好好利用搜索引擎,不会用搜索引擎的程序员,永远是菜鸟</li></ol><h3 id="逻辑推理练习(字符串)"><a href="#逻辑推理练习(字符串)" class="headerlink" title="逻辑推理练习(字符串)"></a>逻辑推理练习(字符串)</h3><p>不用代码,口述回答下面代码的执行结果<br>string = “Python is good”</p><ol><li>string[1:20]</li><li>string[20]</li><li>string[3:-4]</li><li>string[-10:-3]</li><li>string.lower()</li><li>string.replace(“o”, “0”)</li><li>string.startswith(‘python’)</li><li>string.split()</li><li>len(string)</li><li>string[30]</li><li>string.replace(“ “, ‘’)</li></ol><p>答案如下</p><figure class="highlight text"><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">1. 'ython is good'</span><br><span class="line">2. 报错</span><br><span class="line">3. 'hon is '</span><br><span class="line">4. 'on is g'</span><br><span class="line">5. 'python is good'</span><br><span class="line">6. 'Pyth0n is g00d'</span><br><span class="line">7. False</span><br><span class="line">8. ['Python', 'is', 'good']</span><br><span class="line">9. 14</span><br><span class="line">10. 报错</span><br><span class="line">11. 'Pythonisgood'</span><br></pre></td></tr></table></figure><p>第2题和第10题都报错,是因为超出了索引范围,字符串长度为14,你去20和30的位置取值,当然会报错</p><p>关于切片操作,只需要知道从哪里开始到哪里结束就一定能推导出答案,以string[3:-4]为例,3是开始的位置,-4是结束的位置,但这个范围是左闭右开的,从3开始没错,但不会到-4,而是到-5,更前面的一个位置,python支持负数索引,或者说是反向索引,从右向左从-1开始逐渐减小。</p><p>第一题中,做切片的时候是从1开始,到20结束,即便是右开,直到19,也仍然超出了索引范围,为什么不报错呢,这就是语言设计者自己的想法了,切片时,不论是开始位置还是结束位置,超出索引范围都不会报错,我猜,大概是由于切片是一个范围操作,这个范围内有值就切出来,没值返回空字符串就好了。</p><h2 id="列表与元组练习题"><a href="#列表与元组练习题" class="headerlink" title="列表与元组练习题"></a>列表与元组练习题</h2><h3 id="列表基础考察"><a href="#列表基础考察" class="headerlink" title="列表基础考察"></a>列表基础考察</h3><p>已知一个列表<br>lst = [1,2,3,4,5]</p><ol><li>求列表的长度</li><li>判断6 是否在列表中</li><li>lst + [6, 7, 8] 的结果是什么?</li><li>lst*2 的结果是什么</li><li>列表里元素的最大值是多少</li><li>列表里元素的最小值是多少</li><li>列表里所有元素的和是多少</li><li>在索引1的后面新增一个的元素10</li><li>在列表的末尾新增一个元素20</li></ol><p>答案如下</p><figure class="highlight text"><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">1. len(lst)</span><br><span class="line">2. 6 in lst</span><br><span class="line">3. [1,2,3,4,5,6,7,8]</span><br><span class="line">4. [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]</span><br><span class="line">5. max(lst)</span><br><span class="line">6. min(lst)</span><br><span class="line">7. sum(lst)</span><br><span class="line">8. lst.insert(1, 10)</span><br><span class="line">9. lst.append(20)</span><br></pre></td></tr></table></figure><p>以上都是对列表基础操作,所用到的每一个函数,列表的每一个方法,都是需要你熟记于心的</p><h3 id="修改列表"><a href="#修改列表" class="headerlink" title="修改列表"></a>修改列表</h3><p>lst = [1, [4, 6], True]<br>请将列表里所有数字修改成原来的两倍</p><p>答案如下</p><figure class="highlight text"><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">lst[0] = 2</span><br><span class="line">lst[1][0] = 4</span><br><span class="line">lst[1][1] = 12</span><br></pre></td></tr></table></figure><p>你以为存在一个函数,其功能便是将列表里所有的数据都变成原来的两倍,这样才显得变成语言是一个非常神奇的东西,但是很遗憾的告诉你,那些神奇的东西都是程序员自己实现的。</p><p>想要修改列表里的数据,必须通过索引对其重新赋值,上面的方法很low,你也可以写一个函数来实现这个功能,我们假设要处理的列表里只int,float,bool,和list数据,不管嵌套基层list,这个函数都应该能正确处理,下面是一段示例代码</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 class="keyword">def</span> <span class="title function_">double_list</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> index, item <span class="keyword">in</span> <span class="built_in">enumerate</span>(lst):</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">isinstance</span>(item, <span class="built_in">bool</span>):</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">isinstance</span>(item, (<span class="built_in">int</span>, <span class="built_in">float</span>)):</span><br><span class="line"> lst[index] *= <span class="number">2</span></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">isinstance</span>(item, <span class="built_in">list</span>):</span><br><span class="line"> double_list(item)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">1</span>, [<span class="number">4</span>, <span class="number">6</span>], <span class="literal">True</span>]</span><br><span class="line"> double_list(lst)</span><br><span class="line"> <span class="built_in">print</span>(lst)</span><br></pre></td></tr></table></figure><h3 id="元组概念考察"><a href="#元组概念考察" class="headerlink" title="元组概念考察"></a>元组概念考察</h3><p>写出下面代码的执行结果和最终结果的类型</p><ol><li>(1, 2)*2</li><li>(1, )*2</li><li>(1)*2</li></ol><p>答案如下</p><figure class="highlight text"><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">1. (1, 2, 1, 2)</span><br><span class="line">2. (1, 1)</span><br><span class="line">3. 2</span><br></pre></td></tr></table></figure><p>第一题应该没有异议,关键是第2题和第3题,元组里只有一个数据时,必须有逗号,如果没有逗号,就变成了第3题的形式,第3题本质上是1*2,那对小括号就如同我们小学学过的小括号一样,只是为了体现运算优先级而已。</p><p>当元组只有一个数据时,如果不省略了逗号,那么小括号的作用就不再是表示元组,而是表示运算优先级</p><h3 id="合并列表"><a href="#合并列表" class="headerlink" title="合并列表"></a>合并列表</h3><p>lst = [1,2,3]<br>lst2 = [4,5,6]<br>不使用 + 号运算符,将lst2合并到lst的末尾,并思考,这个过程中,是否产生了新的列表</p><p>答案</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">lst.extend(lst2)</span><br></pre></td></tr></table></figure><p>这个过程中不会产生新的列表,最直观的检验方式就是print(id(lst)),合并前后,lst的内存地址都没有发生变化,只是列表里的内容发生了变化</p><h3 id="合并字符串"><a href="#合并字符串" class="headerlink" title="合并字符串"></a>合并字符串</h3><p>str1 = “1,2,3”<br>str2 = “4,5,6”<br>请将str2合并到str1的末尾,并思考,这个过程中,是否产生了新的字符串</p><p>答案</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">str1 += str2</span><br></pre></td></tr></table></figure><p>这个过程中,产生的新的字符串,字符串是不可变对象,从字面上理解,似乎str1的内容发生变化了,但本质上是产生了新的字符串并赋值给str1, print(str1), 合并前后的内存地址是不一样的</p><h3 id="统计练习"><a href="#统计练习" class="headerlink" title="统计练习"></a>统计练习</h3><p>列表lst 内容如下</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">lst = [<span class="number">2</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 class="number">2</span>, <span class="number">9</span>, <span class="number">9</span>]</span><br></pre></td></tr></table></figure><p>请写程序完成下列题目</p><ol><li>找出列表里的最大值</li><li>找出列表里的最小值</li><li>找出列表里最大值的个数</li><li>计算列表里所有元素的和</li><li>计算列表里元素的平均值</li><li>计算列表的长度</li><li>找出元素6在列表中的索引</li></ol><p>答案</p><figure class="highlight text"><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">1. max(lst)</span><br><span class="line">2. min(lst)</span><br><span class="line">3. lst.count(max(lst))</span><br><span class="line">4. sum(lst)</span><br><span class="line">5. sum(lst)/float(len(lst))</span><br><span class="line">6. len(lst)</span><br><span class="line">7. lst.index(6)</span><br></pre></td></tr></table></figure><p>这道题考察的是你对内置函数的理解和运用</p><p>下面的题目不允许写代码,仅凭思考来回答</p><ol><li>lst[2:4] 的值是什么</li><li>lst[1: -3]的值是什么</li><li>lst[-5]的值是什么</li><li>lst[:-4] 的值是什么</li><li>lst[-4:] 的值是什么</li></ol><p>这个题目主要考察你对列表切片操作的理解</p><figure class="highlight text"><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">1. [6, 7]</span><br><span class="line">2. [5, 6, 7, 8, 9]</span><br><span class="line">3. 8</span><br><span class="line">4. [2, 5, 6, 7, 8]</span><br><span class="line">5. [9, 2, 9, 9]</span><br></pre></td></tr></table></figure><p>列表的切片操作,最关键的一点在于左闭右开,结束位置的数据不会列入结果中</p><h3 id="列表操作练习"><a href="#列表操作练习" class="headerlink" title="列表操作练习"></a>列表操作练习</h3><p>列表lst 内容如下</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">lst = [<span class="number">2</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 class="number">2</span>, <span class="number">9</span>, <span class="number">9</span>]</span><br></pre></td></tr></table></figure><p>请写程序完成下列操作</p><ol><li>在列表的末尾增加元素15</li><li>在列表的中间位置插入元素20</li><li>将列表[2, 5, 6]合并到lst中</li><li>移除列表中索引为3的元素</li><li>翻转列表里的所有元素</li><li>对列表里的元素进行排序,从小到大一次,从大到小一次</li></ol><p>答案</p><figure class="highlight text"><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">1. lst.append(15)</span><br><span class="line">2. lst.insert(len(lst)//2, 20)</span><br><span class="line">3. lst.extend([2, 5, 6])</span><br><span class="line">4. lst.remove(lst[3])</span><br><span class="line">5. lst = lst[::-1]</span><br><span class="line">6. lst.sort() lst.sort(reverse=True)</span><br></pre></td></tr></table></figure><h3 id="复杂列表练习"><a href="#复杂列表练习" class="headerlink" title="复杂列表练习"></a>复杂列表练习</h3><p>列表lst 内容如下</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">lst = [<span class="number">1</span>, <span class="number">4</span>, <span class="number">5</span>, [<span class="number">1</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, [<span class="number">8</span>, <span class="number">9</span>, <span class="number">10</span>, <span class="number">12</span>]]]</span><br></pre></td></tr></table></figure><p>不写任何代码,仅凭思考来回答下列问题</p><ol><li>列表lst的长度是多少</li><li>列表lst中有几个元素</li><li>lst[1] 的数据类型是什么</li><li>lst[3]的数据类型是什么</li><li>lst [3] [4] 的值是什么</li><li>如果才能访问到 9 这个值</li><li>执行lst[3] [4].append([5, 6])后,列表lst的内容是什么,手写出来</li><li>lst[-1] [-1] [-2]的值是什么</li><li>lst[-2]的值是什么</li><li>len(lst[-1]) 的值是什么</li><li>len(lst [-1] [-1])的值是什么</li><li>lst [-1] [1:3] 的值是什么</li><li>lst [-1] [-1] [1:-2]的值是什么</li></ol><p>第1题和第2题其实是一个意思,原本统计列表里数据个数不是什么难事,可一旦出现了嵌套列表的情况,有人就分不清了,列表里的数据是以逗号分隔的,lst[3] 是一个列表,其余都是int类型数据,因此lst的长度是4</p><p>第3题,lst[1] = 4,是int类型数据<br>第4题,lst[3] 的数据类型是列表<br>第5题,lst[3]的值是[1, 3, 5, 6, [8, 9, 10, 12]],仍然是一个列表,其索引为4的数据是[8, 9, 10, 12],是列表<br>第6题,lst[3] [4] [1]<br>第7题,[1, 4, 5, [1, 3, 5, 6, [8, 9, 10, 12, [5, 6]]]],参考5,6两个题目的解答<br>第8题,lst[-1]的值是[1, 3, 5, 6, [8, 9, 10, 12]], 再次取索引为-1的数据为[8, 9, 10, 12],取索引为-2的数据为10<br>第9题,5<br>第10题,5<br>第11题,4<br>第12题, [3, 5], lst[-1]的值是[1, 3, 5, 6, [8, 9, 10, 12]]<br>第13题,[9], lst[-1] [-1]的值是[8, 9, 10, 12],切片起始位置索引是1,值为9,结束位置是-2,值为10,由于左闭右开,最终结果是[9]</p><h2 id="字典练习题"><a href="#字典练习题" class="headerlink" title="字典练习题"></a>字典练习题</h2><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></pre></td><td class="code"><pre><span class="line">dic = {</span><br><span class="line"> <span class="string">'python'</span>: <span class="number">95</span>,</span><br><span class="line"> <span class="string">'java'</span>: <span class="number">99</span>,</span><br><span class="line"> <span class="string">'c'</span>: <span class="number">100</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>用程序解答下面的题目</p><ol><li>字典的长度是多少</li><li>请修改’java’ 这个key对应的value值为98</li><li>删除 c 这个key</li><li>增加一个key-value对,key值为 php, value是90</li><li>获取所有的key值,存储在列表里</li><li>获取所有的value值,存储在列表里</li><li>判断 javascript 是否在字典中</li><li>获得字典里所有value 的和</li><li>获取字典里最大的value</li><li>获取字典里最小的value</li><li>字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中</li></ol><p>第1题,len(dic),结果为3<br>第2题,dic[‘java’] = 98,对字典里value的修改,必须通过key才可以<br>第3题,del dic[‘c’]<br>第4题,dic[‘php’] = 90<br>第5题,lst = list(dic.keys())<br>第6题,lst = list(dic.values())<br>第7题,’javascript’ in dic<br>第8题,sum(dic.values())<br>第9题,max(dic.values())<br>第10题,min(dic.values())<br>第11题,dic.update(dic1)</p><h3 id="字典应用(买水果)"><a href="#字典应用(买水果)" class="headerlink" title="字典应用(买水果)"></a>字典应用(买水果)</h3><p>小明去超市购买水果,账单如下</p><figure class="highlight text"><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">苹果 32.8</span><br><span class="line">香蕉 22</span><br><span class="line">葡萄 15.5</span><br></pre></td></tr></table></figure><p>请将上面的数据存储到字典里,可以根据水果名称查询购买这个水果的费用</p><p>很简单哦,用水果名称做key,金额做value,创建一个字典</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></pre></td><td class="code"><pre><span class="line">info = {</span><br><span class="line"> <span class="string">'苹果'</span>:<span class="number">32.8</span>,</span><br><span class="line"> <span class="string">'香蕉'</span>: <span class="number">22</span>,</span><br><span class="line"> <span class="string">'葡萄'</span>: <span class="number">15.5</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><h3 id="字典应用(买水果2)"><a href="#字典应用(买水果2)" class="headerlink" title="字典应用(买水果2)"></a>字典应用(买水果2)</h3><p>小明,小刚去超市里购买水果</p><p>小明购买了苹果,草莓,香蕉,一共花了89块钱,,小刚购买了葡萄,橘子,樱桃,一共花了87块钱</p><p>请从上面的描述中提取数据,存储到字典中,可以根据姓名获取这个人购买的水果种类和总费用。</p><p>以姓名做key,value仍然是字典</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">info = {</span><br><span class="line"> <span class="string">'小明'</span>: {</span><br><span class="line"> <span class="string">'fruits'</span>: [<span class="string">'苹果'</span>, <span class="string">'草莓'</span>, <span class="string">'香蕉'</span>],</span><br><span class="line"> <span class="string">'money'</span>: <span class="number">89</span></span><br><span class="line"> },</span><br><span class="line"> <span class="string">'小刚'</span>: {</span><br><span class="line"> <span class="string">'fruits'</span>: [<span class="string">'葡萄'</span>, <span class="string">'橘子'</span>, <span class="string">'樱桃'</span>],</span><br><span class="line"> <span class="string">'money'</span>: <span class="number">87</span></span><br><span class="line"> }</span><br><span class="line">}</span><br></pre></td></tr></table></figure><h2 id="集合练习题"><a href="#集合练习题" class="headerlink" title="集合练习题"></a>集合练习题</h2><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">lst1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="number">2</span>]</span><br><span class="line">lst2 = [<span class="number">2</span>, <span class="number">5</span>, <span class="number">7</span>, <span class="number">9</span>]</span><br></pre></td></tr></table></figure><ul><li>哪些整数既在lst1中,也在lst2中</li><li>哪些整数在lst1中,不在lst2中</li><li>两个列表一共有哪些整数</li></ul><p>虽然题目一直在问两个列表,但用列表解答这3个题目效率很低,你应该用集合</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">lst1 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">3</span>, <span class="number">2</span>]</span><br><span class="line">lst2 = [<span class="number">2</span>, <span class="number">5</span>, <span class="number">7</span>, <span class="number">9</span>]</span><br><span class="line"></span><br><span class="line">set1 = <span class="built_in">set</span>(lst1)</span><br><span class="line">set2 = <span class="built_in">set</span>(lst2)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 哪些整数既在lst1中,也在lst2中</span></span><br><span class="line"><span class="built_in">print</span>(set1.intersection(set2))</span><br><span class="line"></span><br><span class="line"><span class="comment"># 哪些整数在lst1中,不在lst2中</span></span><br><span class="line"><span class="built_in">print</span>(set1.difference(set2))</span><br><span class="line"></span><br><span class="line"><span class="comment"># 两个列表一共有哪些整数</span></span><br><span class="line"><span class="built_in">print</span>(set1.union(set2))</span><br></pre></td></tr></table></figure><h1 id="基础语法篇"><a href="#基础语法篇" class="headerlink" title="基础语法篇"></a>基础语法篇</h1><p>基础语法篇的练习题,不涉及复杂的逻辑推理,旨在检查你对基础语法的掌握情况</p><h2 id="if-条件语句"><a href="#if-条件语句" class="headerlink" title="if 条件语句"></a>if 条件语句</h2><h3 id="单个条件分支"><a href="#单个条件分支" class="headerlink" title="单个条件分支"></a>单个条件分支</h3><p>使用input函数接收用户的输入,如果用户输入的整数是偶数,则使用print函数输出”你输入的整数是:{value}, 它是偶数”, {value}部分要替换成用户的输入。</p><p>完成这个练习题需要你掌握下面4个知识点</p><ol><li>input函数的作用</li><li>字符串转int</li><li>取模运算</li><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></pre></td><td class="code"><pre><span class="line">value = <span class="built_in">input</span>(<span class="string">"请输入一个整数:"</span>)</span><br><span class="line">i_value = <span class="built_in">int</span>(value)</span><br><span class="line"><span class="keyword">if</span> i_value % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"你输入的整数是:{value}, 它是偶数"</span>.<span class="built_in">format</span>(value=value))</span><br></pre></td></tr></table></figure><h3 id="if-…-else-…"><a href="#if-…-else-…" class="headerlink" title="if … else …"></a>if … else …</h3><p>使用input函数接收用户的输入,如果用户输入的整数是偶数,则使用print函数输出”你输入的整数是:{value}, 它是偶数”,如果是奇数,则使用print函数输出”你输入的整数是:{value}, 它是奇数”</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">value = <span class="built_in">input</span>(<span class="string">"请输入一个整数:"</span>)</span><br><span class="line">i_value = <span class="built_in">int</span>(value)</span><br><span class="line"><span class="keyword">if</span> i_value % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"你输入的整数是:{value}, 它是偶数"</span>.<span class="built_in">format</span>(value=value))</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"你输入的整数是:{value}, 它是奇数"</span>.<span class="built_in">format</span>(value=value))</span><br></pre></td></tr></table></figure><h3 id="2-1-3-多条件分支"><a href="#2-1-3-多条件分支" class="headerlink" title="2.1.3 多条件分支"></a>2.1.3 多条件分支</h3><p>使用input函数接收用户的输入数据,如果用户输入python,则输出90, 如果用户输入java,输出95,如果用户输入php,输出85,其他输入,程序输出0</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">value = <span class="built_in">input</span>(<span class="string">"请输入一个整数:"</span>)</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> value == <span class="string">'python'</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="number">90</span>)</span><br><span class="line"><span class="keyword">elif</span> value == <span class="string">'java'</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="number">95</span>)</span><br><span class="line"><span class="keyword">elif</span> value == <span class="string">'php'</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="number">85</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="number">0</span>)</span><br></pre></td></tr></table></figure><h3 id="2-1-4-复杂条件判断"><a href="#2-1-4-复杂条件判断" class="headerlink" title="2.1.4 复杂条件判断"></a>2.1.4 复杂条件判断</h3><p>使用input函数接收用户的输入,如果输入的数据不可以转换成int类型数据,则输出”无法使用int函数转换”,如果可以,则将用户的输入转成int类型数据并继续判断。</p><p>如果输入数据是奇数,则将其乘以2并输出,如果是偶数,则判断是否能被4整除,如果可以则输出被4整除后的值,若不能被4整数,则判断是否大于20,如果大于20则输出与20的差值,如果小于等于20,则直接输出该值</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></pre></td><td class="code"><pre><span class="line">value = <span class="built_in">input</span>(<span class="string">"请输入一个整数:"</span>)</span><br><span class="line"><span class="keyword">if</span> <span class="keyword">not</span> value.isdigit():</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">'无法使用int函数转换'</span>)</span><br><span class="line"><span class="keyword">else</span>:</span><br><span class="line"> i_value = <span class="built_in">int</span>(value)</span><br><span class="line"> <span class="keyword">if</span> i_value % <span class="number">2</span> == <span class="number">1</span>:</span><br><span class="line"> <span class="built_in">print</span>(i_value*<span class="number">2</span>)</span><br><span class="line"> <span class="keyword">elif</span> i_value % <span class="number">4</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(i_value / <span class="number">4</span>)</span><br><span class="line"> <span class="keyword">elif</span> i_value > <span class="number">20</span>:</span><br><span class="line"> <span class="built_in">print</span>(i_value - <span class="number">20</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(i_value)</span><br></pre></td></tr></table></figure><h2 id="for循环"><a href="#for循环" class="headerlink" title="for循环"></a>for循环</h2><h3 id="range函数基本使用"><a href="#range函数基本使用" class="headerlink" title="range函数基本使用"></a>range函数基本使用</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></pre></td><td class="code"><pre><span class="line"><span class="built_in">range</span>(<span class="number">3</span>, <span class="number">20</span>, <span class="number">4</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">10</span>, -<span class="number">3</span>, -<span class="number">4</span>)</span><br><span class="line"><span class="built_in">range</span>(<span class="number">10</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">12</span>)</span><br></pre></td></tr></table></figure><p>不使用程序,说出上面4个range产生的整数序列</p><h3 id="利用range函数遍历列表"><a href="#利用range函数遍历列表" class="headerlink" title="利用range函数遍历列表"></a>利用range函数遍历列表</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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">1</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="number">7</span>, <span class="number">9</span>]</span><br><span class="line"><span class="keyword">for</span> index <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(lst)):</span><br><span class="line"> <span class="built_in">print</span>(lst[index])</span><br></pre></td></tr></table></figure><ol><li>参照上面的代码,从后向前遍历</li><li>遍历输出列表里的所有偶数</li><li>遍历列表,输出大于3的奇数</li></ol><h3 id="使用for循环遍历字典"><a href="#使用for循环遍历字典" class="headerlink" title="使用for循环遍历字典"></a>使用for循环遍历字典</h3><p>遍历字典有两种方法<br>方法1</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">dic = {</span><br><span class="line"> <span class="string">'python'</span>: <span class="number">90</span>,</span><br><span class="line"> <span class="string">'java'</span>: <span class="number">95</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> key <span class="keyword">in</span> dic:</span><br><span class="line"> <span class="built_in">print</span>(key, dic[key])</span><br></pre></td></tr></table></figure><p>方法2</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">dic = {</span><br><span class="line"> <span class="string">'python'</span>: <span class="number">90</span>,</span><br><span class="line"> <span class="string">'java'</span>: <span class="number">95</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> key, value <span class="keyword">in</span> dic.items():</span><br><span class="line"> <span class="built_in">print</span>(key, value)</span><br></pre></td></tr></table></figure><h3 id="continue练习"><a href="#continue练习" class="headerlink" title="continue练习"></a>continue练习</h3><h3 id="break练习"><a href="#break练习" class="headerlink" title="break练习"></a>break练习</h3><p>从列表 lst = [1, 3, 5, 2, 7, 9, 10] 中寻找1个偶数并输出,代码如下</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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">1</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">2</span>, <span class="number">7</span>, <span class="number">9</span>, <span class="number">10</span>]</span><br><span class="line"><span class="keyword">for</span> item <span class="keyword">in</span> lst:</span><br><span class="line"> <span class="keyword">if</span> item % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(item)</span><br><span class="line"> <span class="keyword">break</span></span><br></pre></td></tr></table></figure><p>题目要求寻找一个偶数,当找到这个偶数后,循环就可以终止了,使用break可以终止本次循环,你可以去掉代码中的break,再次执行代码,观察代码的执行效果</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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">3</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="number">9</span> , <span class="number">2</span>]</span><br><span class="line"></span><br><span class="line">max_value = lst[<span class="number">0</span>]</span><br><span class="line"><span class="keyword">for</span> item <span class="keyword">in</span> lst:</span><br><span class="line"> <span class="keyword">if</span> item > max_value:</span><br><span class="line"> max_value = item</span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(max_value)</span><br></pre></td></tr></table></figure><ol><li>参照上面的代码,写代码寻找列表的最小值</li><li>写代码寻找列表里的最小偶数</li><li>写代码寻找列表里的最大奇数</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></pre></td><td class="code"><pre><span class="line">lst1 = [<span class="number">3</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="number">8</span>, <span class="number">1</span>, <span class="number">9</span> , <span class="number">2</span>]</span><br><span class="line">lst2 = [<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">4</span>, <span class="number">8</span>, <span class="number">7</span>]</span><br><span class="line"></span><br><span class="line"><span class="keyword">for</span> item1 <span class="keyword">in</span> lst1:</span><br><span class="line"> <span class="keyword">for</span> item2 <span class="keyword">in</span> lst2:</span><br><span class="line"> <span class="keyword">if</span> item1 + item2 == <span class="number">10</span>:</span><br><span class="line"> <span class="built_in">print</span>((item1, item2))</span><br></pre></td></tr></table></figure><p>上面的代码利用嵌套循环,从两个列表里各取1个数,如果这两个数的和等于10,则以元组的方式输出这两个数</p><ol><li>参照上面的代码,寻找两个数的差的绝对值等于2的组合</li><li>两个列表里各取出一个值,item1和item2, 请计算item1*item2的最大值</li></ol><h2 id="while循环"><a href="#while循环" class="headerlink" title="while循环"></a>while循环</h2><h3 id="奇偶数判断"><a href="#奇偶数判断" class="headerlink" title="奇偶数判断"></a>奇偶数判断</h3><p>使用input函数接收用户输入的整数,如果是偶数,则使用print函数输出”你输入的是一个偶数”,反之输出”你输入的是一个奇数”,用户可以输入多次,直到输入quit时程序退出</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">while</span> <span class="literal">True</span>:</span><br><span class="line"> input_str = <span class="built_in">input</span>(<span class="string">"请输入一个正整数,想退出程序请输入 quit:"</span>)</span><br><span class="line"> <span class="keyword">if</span> input_str == <span class="string">"quit"</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> number = <span class="built_in">int</span>(input_str)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> number % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"你输入的是一个偶数"</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"你输入的是一个奇数"</span>)</span><br></pre></td></tr></table></figure><h3 id="for循环与while循环嵌套"><a href="#for循环与while循环嵌套" class="headerlink" title="for循环与while循环嵌套"></a>for循环与while循环嵌套</h3><p>已知 lst = [2, 3, 4]<br>依次要求用户输入2,3,4 的整数倍,先让用户输入2的倍数,如果用户输入的正确,输出“输入正确”,否则输出 “输入错误”,如果用户输入quit,则停止当前的输入,让用户输入3的倍数,输入3的倍数的过程中,如果用户输入quit,则让用户输入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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]</span><br><span class="line"><span class="keyword">for</span> item <span class="keyword">in</span> lst:</span><br><span class="line"> <span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line"> input_str = <span class="built_in">input</span>(<span class="string">"请输入{number}的倍数,想停止输入时,输入quit:"</span>.<span class="built_in">format</span>(number=item))</span><br><span class="line"> <span class="keyword">if</span> input_str == <span class="string">'quit'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> number = <span class="built_in">int</span>(input_str)</span><br><span class="line"> <span class="keyword">if</span> number % item == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入正确"</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入错误"</span>)</span><br></pre></td></tr></table></figure><h3 id="continue的好处"><a href="#continue的好处" class="headerlink" title="continue的好处"></a>continue的好处</h3><p>break是跳出循环体,continue是跳过continue语句后面的代码块,循环并不停止</p><p>题目要求:<br>使用input函数接受用户的输入,如果用户输入的数值小于等于10,则判断是奇数还是偶数,如果数值大于10,则输出“输入大于10,不判断奇偶”,用户输入quit,结束程序</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"><span class="keyword">while</span> <span class="literal">True</span>:</span><br><span class="line"> input_str = <span class="built_in">input</span>(<span class="string">"请输入一个正整数,如果想停止程序,输入quit:"</span>)</span><br><span class="line"> <span class="keyword">if</span> input_str == <span class="string">'quit'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> number = <span class="built_in">int</span>(input_str)</span><br><span class="line"> <span class="keyword">if</span> number > <span class="number">10</span>:</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> number % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入为偶数"</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入为奇数"</span>)</span><br></pre></td></tr></table></figure><p>当number大于10 的时候,后面的那4行代码就不会被执行,直接进入到下一次循环。</p><p>上面的代码,也可以不使用continue</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">while</span> <span class="literal">True</span>:</span><br><span class="line"> input_str = <span class="built_in">input</span>(<span class="string">"请输入一个正整数,如果想停止程序,输入quit:"</span>)</span><br><span class="line"> <span class="keyword">if</span> input_str == <span class="string">'quit'</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> number = <span class="built_in">int</span>(input_str)</span><br><span class="line"> <span class="keyword">if</span> number < <span class="number">10</span>:</span><br><span class="line"> <span class="keyword">if</span> number % <span class="number">2</span> == <span class="number">0</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入为偶数"</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="built_in">print</span>(<span class="string">"输入为奇数"</span>)</span><br></pre></td></tr></table></figure><p>两段代码,实现了一样的功能,但对比一下不难发现,使用了不使用continue,代码的嵌套层次更深,如果嵌套多了,会让代码变得难以阅读,难以管理</p><p>但使用continue,就可以减少代码层次,代码的理解和管理都更容易,大于10的时候,continue跳过后面的代码,在逻辑思考时,这种一刀两断的方法让思路更清晰。</p><h1 id="内置函数篇"><a href="#内置函数篇" class="headerlink" title="内置函数篇"></a>内置函数篇</h1><p>本篇的练习题不是考察你如何使用python的内置函数,而是通过实现与内置函数相同功能的函数来达到锻炼提升编码能力的目的</p><h2 id="abs"><a href="#abs" class="headerlink" title="abs"></a>abs</h2><h3 id="题目要求"><a href="#题目要求" class="headerlink" title="题目要求"></a>题目要求</h3><p>abs函数返回数字的绝对值,请实现下面的函数,模仿abs函数的功能,返回数字的绝对值</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">def</span> <span class="title function_">my_abs</span>(<span class="params">number</span>):</span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析"><a href="#思路分析" class="headerlink" title="思路分析"></a>思路分析</h3><p>处于程序健壮性考虑,要对传入的number参数进行检查,判断其类型是否为数字类型,float和int是比较常用的数据类型,复数类型基本接触不到,因此不考虑。</p><p>判断变量类型,可以使用isinstance函数,该函数的第一个参数是需要检查类型的对象,第二个参数可以是数据类型,也可以是一个元组,元组里是多个数据类型,只要满足其中一个就返回True</p><p>如果number的数值小于0,乘以-1就得到了绝对值</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_abs</span>(<span class="params">number</span>):</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(number, (<span class="built_in">float</span>, <span class="built_in">int</span>)):</span><br><span class="line"> <span class="keyword">return</span> number</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> number < <span class="number">0</span>:</span><br><span class="line"> number *= -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> number</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_abs(-<span class="number">3</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_abs(-<span class="number">3.9</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_abs(<span class="number">54.3</span>))</span><br></pre></td></tr></table></figure><h2 id="sum"><a href="#sum" class="headerlink" title="sum"></a>sum</h2><h3 id="题目要求-1"><a href="#题目要求-1" class="headerlink" title="题目要求"></a>题目要求</h3><p>sum函数可以获取列表所有数据的总和,模仿这个功能实现下面的函数,</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="keyword">def</span> <span class="title function_">my_sum</span>(<span class="params">lst</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"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-1"><a href="#思路分析-1" class="headerlink" title="思路分析"></a>思路分析</h3><ul><li>对传入的参数lst,要进行类型检查</li><li>遍历列表,遇到数字类型的数据就进行加和操作</li></ul><h3 id="示例代码-1"><a href="#示例代码-1" 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="keyword">def</span> <span class="title function_">my_sum</span>(<span class="params">lst</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"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> sum_res = <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(lst, <span class="built_in">list</span>):</span><br><span class="line"> <span class="keyword">return</span> sum_res</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> lst:</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">isinstance</span>(item, (<span class="built_in">float</span>, <span class="built_in">int</span>)):</span><br><span class="line"> sum_res += item</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> sum_res</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">3</span>, <span class="number">4</span>, <span class="string">'43'</span>, <span class="number">5.4</span>]</span><br><span class="line"> <span class="built_in">print</span>(my_sum(lst))</span><br></pre></td></tr></table></figure><h2 id="max"><a href="#max" class="headerlink" title="max"></a>max</h2><p>max函数返回序列中的最大值,传入的参数可以是列表,也可以是元组,实现下面的函数,实现同样的功能,如果序列里有非数字类型的数据,可以忽略,如果序列是空的,可以直接返回None</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">def</span> <span class="title function_">my_max</span>(<span class="params">seq</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"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-2"><a href="#思路分析-2" class="headerlink" title="思路分析"></a>思路分析</h3><p>对传入的参数seq要进行类型检查,如果既不是列表,也不是元组,那么就返回None</p><p>如果序列是空的,也可以直接返回None</p><p>遍历序列里的元素,如果数据的类型不属于数字类型,那么就忽略该数据</p><h3 id="示例代码-2"><a href="#示例代码-2" class="headerlink" title="示例代码"></a>示例代码</h3><figure class="highlight text"><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></pre></td><td class="code"><pre><span class="line">def my_max(seq):</span><br><span class="line"> """</span><br><span class="line"> 返回序列里的最大值</span><br><span class="line"> :param lst:</span><br><span class="line"> :return:</span><br><span class="line"> """</span><br><span class="line"> max_value = None</span><br><span class="line"> if not isinstance(seq, (list, tuple)):</span><br><span class="line"> return max_value</span><br><span class="line"></span><br><span class="line"> if len(seq) == 0:</span><br><span class="line"> return max_value</span><br><span class="line"></span><br><span class="line"> max_value = seq[0]</span><br><span class="line"> for item in seq:</span><br><span class="line"> if not isinstance(item, (float, int)):</span><br><span class="line"> continue</span><br><span class="line"> if item > max_value:</span><br><span class="line"> max_value = item</span><br><span class="line"></span><br><span class="line"> return max_value</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">if __name__ == '__main__':</span><br><span class="line"> lst = [3, 4, '43', 5.4]</span><br><span class="line"> print(my_max(lst))</span><br></pre></td></tr></table></figure><h2 id="min"><a href="#min" class="headerlink" title="min"></a>min</h2><p>min函数返回序列中的最小值,传入的参数可以是列表,也可以是元组,实现下面的函数,实现同样的功能,如果序列里有非数字类型的数据,可以忽略</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">def</span> <span class="title function_">my_min</span>(<span class="params">seq</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"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-3"><a href="#思路分析-3" class="headerlink" title="思路分析"></a>思路分析</h3><p>整体思路与3.3的my_max函数相同</p><h3 id="示例代码-3"><a href="#示例代码-3" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_min</span>(<span class="params">seq</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"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> min_value = <span class="literal">None</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(seq, (<span class="built_in">list</span>, <span class="built_in">tuple</span>)):</span><br><span class="line"> <span class="keyword">return</span> min_value</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(seq) == <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">return</span> min_value</span><br><span class="line"></span><br><span class="line"> min_value = seq[<span class="number">0</span>]</span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> seq:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(item, (<span class="built_in">float</span>, <span class="built_in">int</span>)):</span><br><span class="line"> <span class="keyword">continue</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> item < min_value:</span><br><span class="line"> min_value = item</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> min_value</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">3</span>, <span class="number">4</span>, <span class="string">'43'</span>, <span class="number">5.4</span>]</span><br><span class="line"> <span class="built_in">print</span>(my_min(lst))</span><br></pre></td></tr></table></figure><h2 id="int"><a href="#int" class="headerlink" title="int"></a>int</h2><p>内置函数int,可以将float,全是数字的字符串转成int类型的数据,为了降低难度,这个练习题只要求你实现其中一种功能,将全是由数字组成的字符串转成int类型数据,例如将字符串”432” 转成整数432,函数定义如下</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">def</span> <span class="title function_">my_int</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string转成int类型数据</span></span><br><span class="line"><span class="string"> 不考虑string的类型,默认就是符合要求的字符串</span></span><br><span class="line"><span class="string"> 传入字符串"432" 返回整数432</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-4"><a href="#思路分析-4" class="headerlink" title="思路分析"></a>思路分析</h3><p>题目的要求非常明确,只将”432”这种全是由数字组成的字符串转成int类型数据,这样就没什么难度了</p><p>遍历字符串,每个将字符串里的每个字符转成int类型的数值,这个过程可以使用字典来完成,建立一个字典,字符串的数字做key,int类型的数字做value,例如下面的字典</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">str_int_dic = {</span><br><span class="line"> <span class="string">'0'</span>: <span class="number">0</span>,</span><br><span class="line"> <span class="string">'1'</span>: <span class="number">1</span>,</span><br><span class="line"> <span class="string">'2'</span>: <span class="number">2</span>,</span><br><span class="line"> <span class="string">'3'</span>: <span class="number">3</span>,</span><br><span class="line"> <span class="string">'4'</span>: <span class="number">4</span>,</span><br><span class="line"> <span class="string">'5'</span>: <span class="number">5</span>,</span><br><span class="line"> <span class="string">'6'</span>: <span class="number">6</span>,</span><br><span class="line"> <span class="string">'7'</span>: <span class="number">7</span>,</span><br><span class="line"> <span class="string">'8'</span>: <span class="number">8</span>,</span><br><span class="line"> <span class="string">'9'</span>: <span class="number">9</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>得到数字后,还得考虑这个数字是哪一位的,是千位还是百位,这里可以使用一个技巧,遍历的过程是从左向右进行的,设置一个变量保存转换后的int数据,初始值赋为0,每一次循环后,都用这个变量乘10再加上所遍历到数值,这样就巧妙的解决了位数问题。</p><h3 id="示例代码-4"><a href="#示例代码-4" 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></pre></td><td class="code"><pre><span class="line">str_int_dic = {</span><br><span class="line"> <span class="string">'0'</span>: <span class="number">0</span>,</span><br><span class="line"> <span class="string">'1'</span>: <span class="number">1</span>,</span><br><span class="line"> <span class="string">'2'</span>: <span class="number">2</span>,</span><br><span class="line"> <span class="string">'3'</span>: <span class="number">3</span>,</span><br><span class="line"> <span class="string">'4'</span>: <span class="number">4</span>,</span><br><span class="line"> <span class="string">'5'</span>: <span class="number">5</span>,</span><br><span class="line"> <span class="string">'6'</span>: <span class="number">6</span>,</span><br><span class="line"> <span class="string">'7'</span>: <span class="number">7</span>,</span><br><span class="line"> <span class="string">'8'</span>: <span class="number">8</span>,</span><br><span class="line"> <span class="string">'9'</span>: <span class="number">9</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_int</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string转成int类型数据</span></span><br><span class="line"><span class="string"> 不考虑string的类型,默认就是符合要求的字符串</span></span><br><span class="line"><span class="string"> 传入字符串"432" 返回整数432</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> res = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> string:</span><br><span class="line"> int_value = str_int_dic[item]</span><br><span class="line"> res = res*<span class="number">10</span> + int_value</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> res</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_int(<span class="string">'432'</span>))</span><br></pre></td></tr></table></figure><h2 id="str"><a href="#str" class="headerlink" title="str"></a>str</h2><h3 id="题目要求-2"><a href="#题目要求-2" class="headerlink" title="题目要求"></a>题目要求</h3><p>内置函数str的功能非常强大,想要模仿实现一个相同功能的函数是非常困难的,因此本练习题只要求你将int类型的数据转换成字符串,实现下面的函数</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">def</span> <span class="title function_">my_str</span>(<span class="params">int_value</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将int_value转换成字符串</span></span><br><span class="line"><span class="string"> :param int_value:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-5"><a href="#思路分析-5" class="headerlink" title="思路分析"></a>思路分析</h3><p>int类型的数据,不能像字符串那样使用for循环进行遍历,但可以结合 / 和 % 操作符从个位向高位进行遍历,获取到某一位的数字之后,将其转换成字符串,append到一个列表中。</p><p>遍历结束之后,翻转列表,用空字符串join这个列表,即可得到转换后的字符串。</p><p>单个数字,如何转成字符串呢?可以使用3.6中类似的方法,创建一个字典,数字为key,字符串数字为value</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">int_str_dict = {</span><br><span class="line"> <span class="number">0</span>: <span class="string">'0'</span>,</span><br><span class="line"> <span class="number">1</span>: <span class="string">'1'</span>,</span><br><span class="line"> <span class="number">2</span>: <span class="string">'2'</span>,</span><br><span class="line"> <span class="number">3</span>: <span class="string">'3'</span>,</span><br><span class="line"> <span class="number">4</span>: <span class="string">'4'</span>,</span><br><span class="line"> <span class="number">5</span>: <span class="string">'5'</span>,</span><br><span class="line"> <span class="number">6</span>: <span class="string">'6'</span>,</span><br><span class="line"> <span class="number">7</span>: <span class="string">'7'</span>,</span><br><span class="line"> <span class="number">8</span>: <span class="string">'8'</span>,</span><br><span class="line"> <span class="number">9</span>: <span class="string">'9'</span>,</span><br><span class="line">}</span><br></pre></td></tr></table></figure><p>获得某一位数字后,通过字典获得对应的字符串,此外,还可以通过ascii码表来获得与之对应的数字字符。以3为例,chr(3+48)即可得到字符串’3’,其原理,字符串3的ascii码表十进制数值为51,恰好比3大48,其他数值,也同样如此。</p><p>大致的思路已经清晰了,接下来是一些细节问题</p><ul><li>如果传入的参数是0,那么直接返回字符串’0’</li><li>如果传入的参数是负数,需要标识记录,最后在列表里append一个’-‘ 字符串。</li><li>lst = [1, 2, 3],想要翻转,lst = lst[::-1]</li></ul><h3 id="示例代码-5"><a href="#示例代码-5" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_str</span>(<span class="params">int_value</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将int_value转换成字符串</span></span><br><span class="line"><span class="string"> :param int_value:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> int_value == <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">return</span> <span class="string">'0'</span></span><br><span class="line"></span><br><span class="line"> lst = []</span><br><span class="line"> is_positive = <span class="literal">True</span></span><br><span class="line"> <span class="keyword">if</span> int_value < <span class="number">0</span>:</span><br><span class="line"> is_positive = <span class="literal">False</span></span><br><span class="line"> int_value = <span class="built_in">abs</span>(int_value)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> int_value:</span><br><span class="line"> number = int_value%<span class="number">10</span></span><br><span class="line"> int_value //= <span class="number">10</span></span><br><span class="line"> str_number = <span class="built_in">chr</span>(number+<span class="number">48</span>)</span><br><span class="line"> lst.append(str_number)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> is_positive:</span><br><span class="line"> lst.append(<span class="string">'-'</span>)</span><br><span class="line"></span><br><span class="line"> lst = lst[::-<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span>.join(lst)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_str(<span class="number">0</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_str(<span class="number">123</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_str(-<span class="number">123</span>))</span><br></pre></td></tr></table></figure><h2 id="float"><a href="#float" class="headerlink" title="float"></a>float</h2><h3 id="题目要求-3"><a href="#题目要求-3" class="headerlink" title="题目要求"></a>题目要求</h3><p>为了降低难度,本题目只要求你将字符串转换成float类型的数据,且字符串都是符合”xx.xx“格式的字符串,例如”34.22”</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">def</span> <span class="title function_">my_float</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string转换成float类型数据</span></span><br><span class="line"><span class="string"> :param string: </span></span><br><span class="line"><span class="string"> :return: </span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="题目分析"><a href="#题目分析" class="headerlink" title="题目分析"></a>题目分析</h3><p>使用split函数,以”.”做分隔符,可以将字符串分割为两部分,整数部分和小数部分,这两个部分可以分别用3.5 中的my_int 函数进行处理,以”34.22”为例,分别得到整数34 和22,对于22,不停的乘以0.1,知道它的数值小于1,就得到了小数部分</p><h3 id="示例代码-6"><a href="#示例代码-6" 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></pre></td><td class="code"><pre><span class="line">str_int_dic = {</span><br><span class="line"> <span class="string">'0'</span>: <span class="number">0</span>,</span><br><span class="line"> <span class="string">'1'</span>: <span class="number">1</span>,</span><br><span class="line"> <span class="string">'2'</span>: <span class="number">2</span>,</span><br><span class="line"> <span class="string">'3'</span>: <span class="number">3</span>,</span><br><span class="line"> <span class="string">'4'</span>: <span class="number">4</span>,</span><br><span class="line"> <span class="string">'5'</span>: <span class="number">5</span>,</span><br><span class="line"> <span class="string">'6'</span>: <span class="number">6</span>,</span><br><span class="line"> <span class="string">'7'</span>: <span class="number">7</span>,</span><br><span class="line"> <span class="string">'8'</span>: <span class="number">8</span>,</span><br><span class="line"> <span class="string">'9'</span>: <span class="number">9</span></span><br><span class="line">}</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_int</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string转成int类型数据</span></span><br><span class="line"><span class="string"> 不考虑string的类型,默认就是符合要求的字符串</span></span><br><span class="line"><span class="string"> 传入字符串"432" 返回整数432</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> res = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> string:</span><br><span class="line"> int_value = str_int_dic[item]</span><br><span class="line"> res = res*<span class="number">10</span> + int_value</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> res</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_float</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string转换成float类型数据</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> arrs = string.split(<span class="string">'.'</span>)</span><br><span class="line"> int_value = my_int(arrs[<span class="number">0</span>])</span><br><span class="line"> float_value = my_int(arrs[<span class="number">1</span>])</span><br><span class="line"> <span class="keyword">while</span> float_value > <span class="number">1</span>:</span><br><span class="line"> float_value *= <span class="number">0.1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> int_value + float_value</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_float(<span class="string">"34.22"</span>))</span><br></pre></td></tr></table></figure><h2 id="len"><a href="#len" class="headerlink" title="len"></a>len</h2><h3 id="题目要求-4"><a href="#题目要求-4" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_len</span>(<span class="params">obj</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 获得obj对象的长度</span></span><br><span class="line"><span class="string"> :param obj:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-6"><a href="#思路分析-6" class="headerlink" title="思路分析"></a>思路分析</h3><p>使用for循环遍历对象,循环的次数就是这个对象的长度,只需要一个变量来保存循环的次数就可以了。</p><p>对obj参数的检查,可以使用isinstance判断是否为列表,元组,字典,集合,字符串中的某一个,更为简便的做法,这些对象都是可迭代对象,isinstance(obj, Iterable) 可以判断obj是否为可迭代对象</p><h3 id="示例代码-7"><a href="#示例代码-7" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">from</span> collections <span class="keyword">import</span> Iterable</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_len</span>(<span class="params">obj</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 获得obj对象的长度</span></span><br><span class="line"><span class="string"> :param obj:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> <span class="built_in">isinstance</span>(obj, Iterable):</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"> length = <span class="number">0</span></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> obj:</span><br><span class="line"> length += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> length</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_len(<span class="string">'232'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_len([<span class="number">3</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="number">1</span>]))</span><br><span class="line"> <span class="built_in">print</span>(my_len({<span class="string">'a'</span>: <span class="number">4</span>, <span class="string">'b'</span>: <span class="number">4</span>}))</span><br><span class="line"> <span class="built_in">print</span>(my_len((<span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">6</span>, <span class="number">3</span>)))</span><br><span class="line"> <span class="built_in">print</span>(my_len(<span class="built_in">set</span>([<span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">6</span>, <span class="number">3</span>])))</span><br></pre></td></tr></table></figure><h2 id="enumerate"><a href="#enumerate" class="headerlink" title="enumerate"></a>enumerate</h2><h3 id="题目要求-5"><a href="#题目要求-5" class="headerlink" title="题目要求"></a>题目要求</h3><p>enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,下面是使用示例</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">lst = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]</span><br><span class="line"><span class="keyword">for</span> index, item <span class="keyword">in</span> <span class="built_in">enumerate</span>(lst):</span><br><span class="line"> <span class="built_in">print</span>(index, item)</span><br></pre></td></tr></table></figure><p>程序输出</p><figure class="highlight text"><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">0 a</span><br><span class="line">1 b</span><br><span class="line">2 c</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_enumerate</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 实现和enumerate 类似的功能</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-7"><a href="#思路分析-7" class="headerlink" title="思路分析"></a>思路分析</h3><p>想要实现这个函数,只需两行代码就可以了,不过,这需要你对生成器有一定的理解和认识。<br>一个函数里如果出现了yield关键字,那么这个函数就是生成器函数,该函数返回的是一个生成器。</p><p>yield有着和return相似的功能,都会将数据返回给调用者,不同之处在于,return执行后,函数结束了,而yield执行后,会保留当前的状态,等到下一次执行时,恢复之前的状态,继续执行。</p><p>在函数内部,使用for循环通过索引<br>遍历lst, 使用yield返回索引和索引位置上的元素。</p><h3 id="示例代码-8"><a href="#示例代码-8" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_enumerate</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 实现和enumerate 类似的功能</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><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>(<span class="built_in">len</span>(lst)):</span><br><span class="line"> <span class="keyword">yield</span> i, lst[i]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">lst = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]</span><br><span class="line"><span class="keyword">for</span> index, item <span class="keyword">in</span> my_enumerate(lst):</span><br><span class="line"> <span class="built_in">print</span>(index, item)</span><br></pre></td></tr></table></figure><h2 id="all"><a href="#all" class="headerlink" title="all"></a>all</h2><h3 id="题目要求-6"><a href="#题目要求-6" class="headerlink" title="题目要求"></a>题目要求</h3><p>all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 True,示例代码如下</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">lst = [<span class="literal">True</span>, <span class="literal">False</span>, <span class="literal">True</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">all</span>(lst))</span><br></pre></td></tr></table></figure><p>最终输出结果是False,实现下面的函数,完成类似的功能</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">def</span> <span class="title function_">my_all</span>(<span class="params">seq</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 如果列表里所有的元素都是True,则函数返回True,反之,返回False</span></span><br><span class="line"><span class="string"> :param seq: 列表</span></span><br><span class="line"><span class="string"> :return: </span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><p>为了简化难度,参数seq默认只传列表</p><h3 id="思路分析-8"><a href="#思路分析-8" class="headerlink" title="思路分析"></a>思路分析</h3><p>老规矩,使用for循环遍历列表,当前遍历到的元素如果是False,直接返回False</p><h3 id="示例代码-9"><a href="#示例代码-9" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_all</span>(<span class="params">seq</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 如果列表里所有的元素都是True,则函数返回True,反之,返回False</span></span><br><span class="line"><span class="string"> :param seq: 列表</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> seq:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> item:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_all([<span class="literal">True</span>, <span class="literal">False</span>, <span class="literal">True</span>]))</span><br></pre></td></tr></table></figure><h2 id="any"><a href="#any" class="headerlink" title="any"></a>any</h2><h3 id="题目要求-7"><a href="#题目要求-7" class="headerlink" title="题目要求"></a>题目要求</h3><p>any函数用于判断给定的可迭代参数 iterable 中的所有元素是否至少有一个为True<br>示例代码</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">lst = [<span class="literal">True</span>, <span class="literal">False</span>, <span class="literal">False</span>]</span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">any</span>(lst))</span><br></pre></td></tr></table></figure><p>输出结果为True<br>实现下面的函数,完成类似的功能,默认传入的参数是列表</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">def</span> <span class="title function_">my_any</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 列表lst中有一个True,则函数返回True</span></span><br><span class="line"><span class="string"> :param lst: </span></span><br><span class="line"><span class="string"> :return: </span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-9"><a href="#思路分析-9" class="headerlink" title="思路分析"></a>思路分析</h3><p>老规矩,遍历列表,当前遍历到的元素如果为True,则函数返回True</p><h3 id="示例代码-10"><a href="#示例代码-10" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_any</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 列表lst中有一个True,则函数返回True</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> lst:</span><br><span class="line"> <span class="keyword">if</span> item:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_any([<span class="literal">True</span>, <span class="literal">False</span>, <span class="literal">False</span>]))</span><br></pre></td></tr></table></figure><h2 id="bin"><a href="#bin" class="headerlink" title="bin"></a>bin</h2><p>函数bin可以获得整数的二进制形式,示例代码如下</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"><span class="built_in">print</span>(<span class="built_in">bin</span>(<span class="number">10</span>))</span><br></pre></td></tr></table></figure><p>程序输出结果为0b1010。</p><p>实现下面的函数,完成相同的功能,为了降低难度,你的算法只需要考虑正整数,而且二进制前面不需要加0b</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">def</span> <span class="title function_">my_bin</span>(<span class="params">value</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 返回正整数value的二进制形式</span></span><br><span class="line"><span class="string"> :param value:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-10"><a href="#思路分析-10" class="headerlink" title="思路分析"></a>思路分析</h3><p>在算法面试中,有一道题目经常被使用,它要求应聘者计算一个整数的二进制中1的个数。解决的思路是判断二进制最后一位是否为1,如果为1,则计数器加1,判断完成后,整数向右位移一位(使用位运算符 >>) ,继续判断二进制的最后一位是否为1.</p><p>本练习题可以采用相同的思路</p><h3 id="示例代码-11"><a href="#示例代码-11" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_bin</span>(<span class="params">value</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 返回正整数value的二进制形式</span></span><br><span class="line"><span class="string"> :param value:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> lst = []</span><br><span class="line"> <span class="keyword">while</span> value:</span><br><span class="line"> <span class="keyword">if</span> value % <span class="number">2</span> == <span class="number">1</span>:</span><br><span class="line"> lst.append(<span class="string">'1'</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> lst.append(<span class="string">'0'</span>)</span><br><span class="line"></span><br><span class="line"> value = value >><span class="number">1</span></span><br><span class="line"></span><br><span class="line"> lst = lst[::-<span class="number">1</span>]</span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span>.join(lst)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(<span class="built_in">bin</span>(<span class="number">10</span>))</span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_bin(<span class="number">3</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_bin(<span class="number">8</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_bin(<span class="number">10</span>))</span><br></pre></td></tr></table></figure><h1 id="字符串方法"><a href="#字符串方法" class="headerlink" title="字符串方法"></a>字符串方法</h1><h2 id="find"><a href="#find" class="headerlink" title="find"></a>find</h2><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_find</span>(<span class="params">source, target, start=<span class="number">0</span></span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 返回字符串source中 子串target开始的位置, 从start索引开始搜索</span></span><br><span class="line"><span class="string"> 如果可以找到多个,返回第一个</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param target:</span></span><br><span class="line"><span class="string"> :param start:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> target:</span><br><span class="line"> <span class="keyword">return</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="keyword">if</span> start < <span class="number">0</span> <span class="keyword">or</span> start >= <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(target) > <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> index <span class="keyword">in</span> <span class="built_in">range</span>(start, <span class="built_in">len</span>(source) - <span class="built_in">len</span>(target)+<span class="number">1</span>):</span><br><span class="line"> t_index = <span class="number">0</span></span><br><span class="line"> <span class="keyword">while</span> t_index < <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">if</span> target[t_index] == source[t_index+index]:</span><br><span class="line"> t_index += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> t_index == <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">return</span> index</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'this'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'this'</span>, start=<span class="number">1</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'book'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'k'</span>, start=<span class="number">10</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'book'</span>, start=<span class="number">10</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_find(<span class="string">'this is a book'</span>, <span class="string">'a'</span>, start=<span class="number">3</span>))</span><br></pre></td></tr></table></figure><h2 id="replace"><a href="#replace" class="headerlink" title="replace"></a>replace</h2><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_replace</span>(<span class="params">source, oldsub, newsub</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串里所有的oldsub子串替换成newsub</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param old:</span></span><br><span class="line"><span class="string"> :param new:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> oldsub:</span><br><span class="line"> <span class="keyword">return</span> source</span><br><span class="line"></span><br><span class="line"> new_string = <span class="string">""</span></span><br><span class="line"> start_index = <span class="number">0</span></span><br><span class="line"> index = my_find(source, oldsub, start=start_index)</span><br><span class="line"> <span class="keyword">while</span> index != -<span class="number">1</span>:</span><br><span class="line"> new_string += source[start_index:index] + newsub</span><br><span class="line"> start_index = index+<span class="built_in">len</span>(oldsub)</span><br><span class="line"> index = my_find(source, oldsub, start=start_index)</span><br><span class="line"></span><br><span class="line"> new_string += source[start_index:]</span><br><span class="line"> <span class="keyword">return</span> new_string</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_find</span>(<span class="params">source, target, start=<span class="number">0</span></span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 返回字符串source中 子串target开始的位置, 从start索引开始搜索</span></span><br><span class="line"><span class="string"> 如果可以找到多个,返回第一个</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param target:</span></span><br><span class="line"><span class="string"> :param start:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> target:</span><br><span class="line"> <span class="keyword">return</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="keyword">if</span> start < <span class="number">0</span> <span class="keyword">or</span> start >= <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(target) > <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> index <span class="keyword">in</span> <span class="built_in">range</span>(start, <span class="built_in">len</span>(source) - <span class="built_in">len</span>(target)+<span class="number">1</span>):</span><br><span class="line"> t_index = <span class="number">0</span></span><br><span class="line"> <span class="keyword">while</span> t_index < <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">if</span> target[t_index] == source[t_index+index]:</span><br><span class="line"> t_index += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> t_index == <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">return</span> index</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_replace(<span class="string">'this is a book'</span>, <span class="string">'this'</span>, <span class="string">'it'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_replace(<span class="string">'this is a this book'</span>, <span class="string">'this'</span>, <span class="string">'it'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_replace(<span class="string">'this is a this bookthis'</span>, <span class="string">'t2his'</span>, <span class="string">'it'</span>))</span><br></pre></td></tr></table></figure><h2 id="split"><a href="#split" class="headerlink" title="split"></a>split</h2><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_find</span>(<span class="params">source, target, start=<span class="number">0</span></span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 返回字符串source中 子串target开始的位置, 从start索引开始搜索</span></span><br><span class="line"><span class="string"> 如果可以找到多个,返回第一个</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param target:</span></span><br><span class="line"><span class="string"> :param start:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> target:</span><br><span class="line"> <span class="keyword">return</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="keyword">if</span> start < <span class="number">0</span> <span class="keyword">or</span> start >= <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(target) > <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> index <span class="keyword">in</span> <span class="built_in">range</span>(start, <span class="built_in">len</span>(source) - <span class="built_in">len</span>(target)+<span class="number">1</span>):</span><br><span class="line"> t_index = <span class="number">0</span></span><br><span class="line"> <span class="keyword">while</span> t_index < <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">if</span> target[t_index] == source[t_index+index]:</span><br><span class="line"> t_index += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> t_index == <span class="built_in">len</span>(target):</span><br><span class="line"> <span class="keyword">return</span> index</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> -<span class="number">1</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">my_split</span>(<span class="params">source, sep, maxsplit=-<span class="number">1</span></span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 以sep分割字符串source</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param sep:</span></span><br><span class="line"><span class="string"> :param maxsplit:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> sep:</span><br><span class="line"> <span class="keyword">return</span> []</span><br><span class="line"></span><br><span class="line"> lst = []</span><br><span class="line"> max_split_count = maxsplit <span class="keyword">if</span> maxsplit ><span class="number">0</span> <span class="keyword">else</span> <span class="built_in">len</span>(source)</span><br><span class="line"> split_count = <span class="number">0</span></span><br><span class="line"></span><br><span class="line"> start_index = <span class="number">0</span></span><br><span class="line"> index = my_find(source, sep, start=start_index)</span><br><span class="line"> <span class="keyword">while</span> split_count < max_split_count <span class="keyword">and</span> index != -<span class="number">1</span>:</span><br><span class="line"> sep_str = source[start_index:index]</span><br><span class="line"> lst.append(sep_str)</span><br><span class="line"> split_count += <span class="number">1</span></span><br><span class="line"> start_index = index + <span class="built_in">len</span>(sep)</span><br><span class="line"> index = my_find(source, sep, start=start_index)</span><br><span class="line"></span><br><span class="line"> sep_str = source[start_index:]</span><br><span class="line"> lst.append(sep_str)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> lst</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(my_split(<span class="string">"1,3,4"</span>, <span class="string">','</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_split(<span class="string">"1,,3,,4"</span>, <span class="string">',,'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_split(<span class="string">"abcadae"</span>, <span class="string">'a'</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_split(<span class="string">"abcadae"</span>, <span class="string">'a'</span>, maxsplit=<span class="number">2</span>))</span><br><span class="line"> <span class="built_in">print</span>(my_split(<span class="string">"aaaa"</span>, <span class="string">'a'</span>))</span><br></pre></td></tr></table></figure><h2 id="字符串大写转小写"><a href="#字符串大写转小写" class="headerlink" title="字符串大写转小写"></a>字符串大写转小写</h2><h3 id="题目要求-8"><a href="#题目要求-8" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">lower</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string里所有的大写字母改成小写字母,并返回一个新的字符串</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-11"><a href="#思路分析-11" class="headerlink" title="思路分析"></a>思路分析</h3><p>实现大小写转换,首先要能识别出一个字符是否为大写字母,你可以在得到这个字符后,判断其是否在A和Z之间,更专业的办法是通过ord 函数获得这个字符的ASCII码表的十进制数值,判断其是否在65和90之间。</p><p>获得字符的ASCII码表的十进制数值,其目的不仅仅是判断它是否为大写字母,第二个目的是通过这个十进制数值与32相加,来获得大写字母所对应的小写字母的十进制数值,这样,才能准确的转换成小写字母。</p><p>我在程序里使用list函数将字符串转成列表,之所以这样做,是因为字符串是不可变类型的数据,无法直接修改,只好先将其转成列表,将列表里的大写字母转成小写字母,再将列表转成字符串。</p><h3 id="示例代码-12"><a href="#示例代码-12" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">lower</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将字符串string里所有的大写字母改成小写字母,并返回一个新的字符串</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> string:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">None</span></span><br><span class="line"></span><br><span class="line"> lst = <span class="built_in">list</span>(string)</span><br><span class="line"> <span class="keyword">for</span> index, item <span class="keyword">in</span> <span class="built_in">enumerate</span>(lst):</span><br><span class="line"> ascii_index = <span class="built_in">ord</span>(item)</span><br><span class="line"> <span class="keyword">if</span> <span class="number">65</span> <= ascii_index <= <span class="number">90</span>:</span><br><span class="line"> s = <span class="built_in">chr</span>(ascii_index+<span class="number">32</span>)</span><br><span class="line"> lst[index] = s</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="string">''</span>.join(lst)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(lower(<span class="string">'232rSFD'</span>))</span><br></pre></td></tr></table></figure><h2 id="判断字符串是否全部为小写字母"><a href="#判断字符串是否全部为小写字母" class="headerlink" title="判断字符串是否全部为小写字母"></a>判断字符串是否全部为小写字母</h2><h3 id="题目要求-9"><a href="#题目要求-9" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">islower</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 如果字符串string 里所有区分大小写的字符都是小写,则返回True</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><p>比如传入字符串 “iwj32as”,函数应该返回True</p><h3 id="思路分析-12"><a href="#思路分析-12" class="headerlink" title="思路分析"></a>思路分析</h3><p>字符串里,常见的只有26个英文字母是区分大小写的,因为,咱们只关心英文字母即可。</p><p>遍历字符串,逐个字符进行检查,获得其ASCII码表里的十进制数值,如果该数值在65到90之间,一定是大写字母,此时返回False,如果for循环结束后,仍然没有返回False,那么就说明,字符串里没有大写字母,可以返回True</p><h3 id="示例代码-13"><a href="#示例代码-13" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">islower</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 如果字符串string 里所有区分大小写的字符都是小写,则返回True</span></span><br><span class="line"><span class="string"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> string:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> string:</span><br><span class="line"> <span class="keyword">if</span> <span class="number">65</span> <= <span class="built_in">ord</span>(item) <= <span class="number">90</span>:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(islower(<span class="string">'232r'</span>))</span><br></pre></td></tr></table></figure><h2 id="实现isdigit"><a href="#实现isdigit" class="headerlink" title="实现isdigit"></a>实现isdigit</h2><h3 id="题目要求-10"><a href="#题目要求-10" class="headerlink" title="题目要求"></a>题目要求</h3><p>实现函数isdigit, 判断字符串里是否只包含数字0~9</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">def</span> <span class="title function_">isdigit</span>(<span class="params">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"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-13"><a href="#思路分析-13" class="headerlink" title="思路分析"></a>思路分析</h3><p>遍历字符串,对每个字符做检查,如果都是0到9的某个数值,那么函数返回True,只要有一个不是0到9,就返回False。</p><p>如何确定一个字符是不是0到9中的某一个呢,方法很多,你可以用if条件判断语句判断字符是否在列表[‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’]中,也可以像我下面示例代码一样,使用ord函数获得字符的ASCII编码对应的10进制数值,接着判断是否在48到57之间。</p><h3 id="示例代码-14"><a href="#示例代码-14" 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="keyword">def</span> <span class="title function_">isdigit</span>(<span class="params">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"> :param string:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> string:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> item <span class="keyword">in</span> string:</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> (<span class="number">48</span> <= <span class="built_in">ord</span>(item) <= <span class="number">57</span>):</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(isdigit(<span class="string">'232'</span>))</span><br><span class="line"> <span class="built_in">print</span>(isdigit(<span class="string">'232r'</span>))</span><br><span class="line"> <span class="built_in">print</span>(isdigit(<span class="string">''</span>))</span><br></pre></td></tr></table></figure><h2 id="startswith"><a href="#startswith" class="headerlink" title="startswith"></a>startswith</h2><h3 id="题目要求-11"><a href="#题目要求-11" class="headerlink" title="题目要求"></a>题目要求</h3><p>实现函数is_startswith,如果字符串source是以substr开头的,则函数返回True,反之返回False</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="keyword">def</span> <span class="title function_">is_startswith</span>(<span class="params">source, substr</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 判断字符串source是否以substr开头</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param substr:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-14"><a href="#思路分析-14" class="headerlink" title="思路分析"></a>思路分析</h3><p>函数首先要判断传入的参数是否合法,这里默认传入的都是字符串,那么我们要需要判断字符串是否有空串的情况</p><p>如果substr的长度大于source的长度,直接返回False</p><p>从索引0开始,遍历substr,从source上获得相同索引的字符,两者进行比较,只要有一个字符不相同,则可以立即返回False</p><h3 id="示例代码-15"><a href="#示例代码-15" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">is_startswith</span>(<span class="params">source, substr</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 判断字符串source是否以substr开头</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param substr:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> substr:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(substr) > <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> index, item <span class="keyword">in</span> <span class="built_in">enumerate</span>(substr):</span><br><span class="line"> <span class="keyword">if</span> item != source[index]:</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"> <span class="keyword">return</span> <span class="literal">True</span> <span class="comment"># 如果for循环不是因为break结束的,就会进入到else语句块</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(is_startswith(<span class="string">"python"</span>, <span class="string">'py'</span>))</span><br></pre></td></tr></table></figure><h2 id="endswith"><a href="#endswith" class="headerlink" title="endswith"></a>endswith</h2><h3 id="题目要求-12"><a href="#题目要求-12" class="headerlink" title="题目要求"></a>题目要求</h3><p>实现函数is_endswith,判断字符串source是否以substr结尾</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="keyword">def</span> <span class="title function_">is_endswith</span>(<span class="params">source, substr</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 判断字符串source 是否以substr结尾</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param substr:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-15"><a href="#思路分析-15" class="headerlink" title="思路分析"></a>思路分析</h3><p>这个练习题的解法其实和is_startswith函数相差无几,所不同的是,在is_startswith函数中,要从索引0开始进行相同位置字符的比较,而现在,是要判断是否以substr结尾,所以我们从索引len(source) - len(substr)开始逐一进行比较</p><h3 id="示例代码-16"><a href="#示例代码-16" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">is_endswith</span>(<span class="params">source, substr</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 判断字符串source 是否以substr结尾</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param substr:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> substr:</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(substr) > <span class="built_in">len</span>(source):</span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"> start_index = <span class="built_in">len</span>(source) - <span class="built_in">len</span>(substr)</span><br><span class="line"> <span class="keyword">for</span> index <span class="keyword">in</span> <span class="built_in">range</span>(start_index, <span class="built_in">len</span>(source)):</span><br><span class="line"> <span class="keyword">if</span> source[index] != substr[index-start_index]:</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"> <span class="keyword">return</span> <span class="literal">True</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="literal">False</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> <span class="built_in">print</span>(is_endswith(<span class="string">"python"</span>, <span class="string">'thon'</span>))</span><br></pre></td></tr></table></figure><h2 id="实现字符串capitalize方法"><a href="#实现字符串capitalize方法" class="headerlink" title="实现字符串capitalize方法"></a>实现字符串capitalize方法</h2><h3 id="题目要求-13"><a href="#题目要求-13" class="headerlink" title="题目要求"></a>题目要求</h3><p>capitalize方法将字符串的第一个字母转成大写,其他字母转成小写,请实现函数my_capitalize,完成同样的功能</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">def</span> <span class="title function_">my_capitalize</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-16"><a href="#思路分析-16" class="headerlink" title="思路分析"></a>思路分析</h3><p>遍历字符串,如果首字母是小写,则转成大写,其余索引上的字母如果是大写,则转成小写</p><p>大小写转换的方法,可以参考lower函数的实现</p><h3 id="示例代码-17"><a href="#示例代码-17" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_capitalize</span>(<span class="params">string</span>):</span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> string:</span><br><span class="line"> <span class="keyword">return</span> string</span><br><span class="line"></span><br><span class="line"> lst = []</span><br><span class="line"> <span class="keyword">for</span> index, item <span class="keyword">in</span> <span class="built_in">enumerate</span>(string):</span><br><span class="line"> ascii_index = <span class="built_in">ord</span>(item)</span><br><span class="line"> <span class="keyword">if</span> index == <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">if</span> <span class="number">97</span> <= ascii_index <= <span class="number">122</span>:</span><br><span class="line"> item = <span class="built_in">chr</span>(ascii_index-<span class="number">32</span>)</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> <span class="keyword">if</span> <span class="number">65</span> <= ascii_index <= <span class="number">90</span>:</span><br><span class="line"> item = <span class="built_in">chr</span>(ascii_index+<span class="number">32</span>)</span><br><span class="line"> lst.append(item)</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> <span class="string">""</span>.join(lst)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(my_capitalize(<span class="string">'this is A book'</span>))</span><br></pre></td></tr></table></figure><h2 id="实现字符串count方法"><a href="#实现字符串count方法" class="headerlink" title="实现字符串count方法"></a>实现字符串count方法</h2><h3 id="题目要求-14"><a href="#题目要求-14" class="headerlink" title="题目要求"></a>题目要求</h3><p>字符串count方法,可以返回指定范围内的子串的数量,下面是用法示例</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">source = <span class="string">"this is a book"</span></span><br><span class="line">target = <span class="string">'is'</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(source.count(target))</span><br></pre></td></tr></table></figure><p>程序输出2</p><p>请仿照字符串的count方法,实现下面的函数</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">def</span> <span class="title function_">my_count</span>(<span class="params">source, target, start, end</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 函数返回字符串source在start 和 end之前,子串target 的数量, 索引范围左闭右开</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param target:</span></span><br><span class="line"><span class="string"> :param start:</span></span><br><span class="line"><span class="string"> :param end:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">pass</span></span><br></pre></td></tr></table></figure><h3 id="思路分析-17"><a href="#思路分析-17" class="headerlink" title="思路分析"></a>思路分析</h3><p>对于传入的参数进行合法性判断,是编写函数时必须要考虑的事情</p><ul><li>字符串source,target为空判断</li><li>start >= end判断</li><li>start范围判断,不能小于0,也不能大于等于len(source)</li><li>如果end大于len(source),则重新对end赋值,让其等于len(source),算是一种合理的补救</li></ul><p>经过前面的4个判断后,基本上可以保证传入的参数是合法的,不至于因为参数不合法导致程序出错</p><p>具体实现思路,将字符串target索引0与字符串source索引start进行对齐,然后逐个字符比较,只要有一个不相同,就说明,source[start: len(target)] != target,那么就需要向右移动一位,比较source[start+1: len(target)]是否与target相等。</p><p>代码里最精髓的是if t_index == len(target)这行,如果对比过程中,触发了break,那么t_index一定不会与len(target)相等,就依靠这个条件判断,就可以知道是不是找到了子串。</p><h3 id="示例代码-18"><a href="#示例代码-18" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">my_count</span>(<span class="params">source, target, start, end</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 函数返回字符串source在start 和 end之前,子串target 的数量, 索引范围左闭右开</span></span><br><span class="line"><span class="string"> :param source:</span></span><br><span class="line"><span class="string"> :param target:</span></span><br><span class="line"><span class="string"> :param start:</span></span><br><span class="line"><span class="string"> :param end:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> <span class="keyword">not</span> source <span class="keyword">or</span> <span class="keyword">not</span> target:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> start >= end:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> start >= <span class="built_in">len</span>(source) <span class="keyword">or</span> start < <span class="number">0</span>:</span><br><span class="line"> <span class="keyword">return</span> <span class="number">0</span></span><br><span class="line"></span><br><span class="line"> count = <span class="number">0</span></span><br><span class="line"> <span class="keyword">if</span> end > <span class="built_in">len</span>(source):</span><br><span class="line"> end = <span class="built_in">len</span>(source)</span><br><span class="line"></span><br><span class="line"> index = start</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> index < end:</span><br><span class="line"> t_index = <span class="number">0</span></span><br><span class="line"> <span class="keyword">while</span> t_index < <span class="built_in">len</span>(target) <span class="keyword">and</span> index+<span class="built_in">len</span>(target) <= end:</span><br><span class="line"> <span class="keyword">if</span> target[t_index] != source[index+t_index]:</span><br><span class="line"> <span class="keyword">break</span></span><br><span class="line"> t_index += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">if</span> t_index == <span class="built_in">len</span>(target):</span><br><span class="line"> index += <span class="built_in">len</span>(target)</span><br><span class="line"> count += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> index += <span class="number">1</span></span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> count</span><br><span class="line"></span><br><span class="line"></span><br><span class="line">source = <span class="string">"this is a book"</span></span><br><span class="line">target = <span class="string">'is'</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span>(my_count(source, target, <span class="number">0</span>, <span class="built_in">len</span>(source)))</span><br></pre></td></tr></table></figure><h1 id="排序算法篇"><a href="#排序算法篇" class="headerlink" title="排序算法篇"></a>排序算法篇</h1><p>排序算法最能体现一个程序员的算法功底,也是面试时经常被拿来考察候选者的题目,本篇章一共讲解8种排序算法。</p><h2 id="冒泡排序"><a href="#冒泡排序" class="headerlink" title="冒泡排序"></a>冒泡排序</h2><p>冒泡排序的核心思想是相邻的两个数据进行比较,假设数列A有n个数据,先比较第1个和第2个数据,如果A1 > A2,则交换他们的位置,确保较大的那个数在右侧。</p><p>接下来比较A2和A3,采用相同的规则,较大的数向右移动,最后会比较An-1 和An的大小,如果An-1 > An,那么交换他们的位置,这时,An是数列中的最大值。</p><p>你肯定已经发现,经过这一轮比较后,数列仍然是无序的,但是没有关系,我们已经找到了最大值An,而且它在队列的末尾。</p><p>接下来要做的事情,就是简单的重复之前的过程,整个数列,先暂时把An排除在外,这n-1个无序的数,仍然可以采用之前的方法,找出n-1个数当中的最大值,这样An-1就是第2大的数,继续对n-2个数做相同的事情</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">move_max</span>(<span class="params">lst, max_index</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将索引0到max_index这个范围内的最大值移动到max_index位置上</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :param max_index:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><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>(max_index):</span><br><span class="line"> <span class="keyword">if</span> lst[i] > lst[i+<span class="number">1</span>]:</span><br><span class="line"> lst[i], lst[i+<span class="number">1</span>] = lst[i+<span class="number">1</span>], lst[i]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">7</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">6</span>]</span><br><span class="line"> move_max(lst, <span class="built_in">len</span>(lst)-<span class="number">1</span>)</span><br><span class="line"> <span class="built_in">print</span>(lst)</span><br></pre></td></tr></table></figure><p>这个函数只完成一个简单的功能,它将列表从索引0到max_index之间的最大值移动max_index索引上,这正是冒泡排序的核心思想。</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">pop_sort</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(lst)-<span class="number">1</span>, <span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line"> move_max(lst, i)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">move_max</span>(<span class="params">lst, max_index</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 将索引0到max_index这个范围内的最大值移动到max_index位置上</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :param max_index:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><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>(max_index):</span><br><span class="line"> <span class="keyword">if</span> lst[i] > lst[i+<span class="number">1</span>]:</span><br><span class="line"> lst[i], lst[i+<span class="number">1</span>] = lst[i+<span class="number">1</span>], lst[i]</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">7</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">6</span>]</span><br><span class="line"> pop_sort(lst)</span><br><span class="line"> <span class="built_in">print</span>(lst)</span><br></pre></td></tr></table></figure><h2 id="快速排序"><a href="#快速排序" class="headerlink" title="快速排序"></a>快速排序</h2><p>快速排序的思路可以归结为3个步骤</p><ol><li>从待排序数组中随意选中一个数值,作为基准值</li><li>移动待排序数组中的元素,是的基准值左侧的数值都小于等于它,右侧的数值大于等于它</li><li>基准值将原来的数组分为两部分,针对这两部分,重复步骤1,2, 3</li></ol><p>通过分析,可以确定,必然要使用递归算法,遇到递归不要害怕,先把1,2两步分区实现,最后实现第3步的递归</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"><span class="keyword">def</span> <span class="title function_">partition</span>(<span class="params">lst,start,end</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 用lst[start] 做基准值,在start到end这个范围进行分区</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> pivot = lst[start]</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> start < end :</span><br><span class="line"> <span class="keyword">while</span> start < end <span class="keyword">and</span> lst[end] >= pivot:</span><br><span class="line"> end -= <span class="number">1</span></span><br><span class="line"> lst[start] = lst[end]</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> start < end <span class="keyword">and</span> lst[start] <= pivot:</span><br><span class="line"> start += <span class="number">1</span></span><br><span class="line"> lst[end] = lst[start]</span><br><span class="line"></span><br><span class="line"> lst[start] = pivot</span><br><span class="line"> <span class="keyword">return</span> start</span><br></pre></td></tr></table></figure><p>partition函数返回基准值最后的索引,知道这个索引,才能将之前的待排序数组分为两部分,下面是递归部分的实现</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">def</span> <span class="title function_">my_quick_sort</span>(<span class="params">lst,start,end</span>):</span><br><span class="line"> <span class="keyword">if</span> start>= end:</span><br><span class="line"> <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"> index = partition(lst,start,end)</span><br><span class="line"> my_quick_sort(lst,start,index-<span class="number">1</span>)</span><br><span class="line"> my_quick_sort(lst,index+<span class="number">1</span>,end)</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">4</span>,<span class="number">3</span>,<span class="number">2</span>,<span class="number">4</span>,<span class="number">1</span>,<span class="number">5</span>,<span class="number">7</span>,<span class="number">2</span>]</span><br><span class="line"> my_quick_sort(lst,<span class="number">0</span>,<span class="built_in">len</span>(lst)-<span class="number">1</span>)</span><br><span class="line"> <span class="built_in">print</span> lst</span><br></pre></td></tr></table></figure><h2 id="希尔排序"><a href="#希尔排序" class="headerlink" title="希尔排序"></a>希尔排序</h2><h3 id="算法定义"><a href="#算法定义" class="headerlink" title="算法定义"></a>算法定义</h3><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></pre></td><td class="code"><pre><span class="line"><span class="number">4</span>,<span class="number">1</span>,<span class="number">67</span>,<span class="number">34</span>,<span class="number">12</span>,<span class="number">35</span>,<span class="number">14</span>,<span class="number">8</span>,<span class="number">6</span>,<span class="number">19</span></span><br></pre></td></tr></table></figure><h4 id="第一轮希尔排序"><a href="#第一轮希尔排序" class="headerlink" title="第一轮希尔排序"></a>第一轮希尔排序</h4><p>希尔排序的关键在于对待排序列进行分组,这个分组并不是真的对序列进行了拆分,而仅仅是虚拟的分组</p><p>首先,用10/2 = 5, 这里的5就是缩小增量排序中的那个“增量”。从第0个元素开始,每个元素都与自己距离为5的元素分为一组,那么这样一来分组情况就是</p><figure class="highlight text"><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">4 35</span><br><span class="line">1 14</span><br><span class="line">67 8</span><br><span class="line">34 6</span><br><span class="line">12 19</span><br></pre></td></tr></table></figure><p>需要注意的是,所谓的分组,仅仅是逻辑上的分组,这10个元素仍然在原来的序列中。上面一共分了5组,每一组都进行插入排序,67 和 8 交换位置,34 和6 交换位置,这样第一次分组后并对各组进行插入排序后,序列变成了</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">4, 1, 8, 6, 12, 35, 14, 67, 34, 19</span><br></pre></td></tr></table></figure><h4 id="第二轮希尔排序"><a href="#第二轮希尔排序" class="headerlink" title="第二轮希尔排序"></a>第二轮希尔排序</h4><p>上一轮排序时,增量为5,那么这一轮增量为5/2 = 2,这就意味着,从第0个元素开始,每个元素都与自己距离为2的元素分为一组,分组情况如下</p><figure class="highlight text"><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">4 8 12 14 34</span><br><span class="line">1 6 35 67 19</span><br></pre></td></tr></table></figure><p>整个序列被分成了两组,分别对他们进行插入排序,排序后的结果为</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">4, 1, 8, 6, 12, 19, 14, 35, 34, 67</span><br></pre></td></tr></table></figure><h4 id="第三轮希尔排序"><a href="#第三轮希尔排序" class="headerlink" title="第三轮希尔排序"></a>第三轮希尔排序</h4><p>上一轮排序时,增量为2,这一轮增量为2 /2 = 1,当增量为1的时候,其实就只能分出一个组了,这样,就完全的退化成插入排序了,但是,由于已经进行了两轮希尔排序,使得序列已经基本有序了,那么此时进行插入排序,效果就会非常好</p><p>增量从5变为2,从2变为1,是逐渐减小的过程,增量是分组时所使用的步长。</p><h4 id="示例代码-19"><a href="#示例代码-19" class="headerlink" title="示例代码"></a>示例代码</h4><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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">4</span>,<span class="number">1</span>,<span class="number">67</span>,<span class="number">34</span>,<span class="number">12</span>,<span class="number">35</span>,<span class="number">14</span>,<span class="number">8</span>,<span class="number">6</span>,<span class="number">19</span>]</span><br><span class="line">length = <span class="built_in">len</span>(lst)</span><br><span class="line">step = length//<span class="number">2</span></span><br><span class="line"></span><br><span class="line"><span class="keyword">while</span> step > <span class="number">0</span>:</span><br><span class="line"></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(step):</span><br><span class="line"> <span class="comment"># 插入排序</span></span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(i+step, length, step):</span><br><span class="line"> <span class="keyword">if</span> lst[j] < lst[j-step]:</span><br><span class="line"> tmp = lst[j]</span><br><span class="line"> k = j-step</span><br><span class="line"></span><br><span class="line"> <span class="keyword">while</span> k >= <span class="number">0</span> <span class="keyword">and</span> lst[k] > tmp:</span><br><span class="line"> lst[k+step] = lst[k]</span><br><span class="line"> k -= step</span><br><span class="line"></span><br><span class="line"> lst[k+step] = tmp</span><br><span class="line"> step //= <span class="number">2</span> <span class="comment">#缩小增量</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">print</span> lst</span><br></pre></td></tr></table></figure><h2 id="归并排序"><a href="#归并排序" class="headerlink" title="归并排序"></a>归并排序</h2><h3 id="合并两个有序集合"><a href="#合并两个有序集合" class="headerlink" title="合并两个有序集合"></a>合并两个有序集合</h3><p>有两个有序的序列,分别为 [1,4,7] ,[2,3,5],现在请考虑将这两个序列合并成一个有序的序列。</p><p>其实方法真的非常简单</p><ol><li>首先创建一个新的序列,分别从两个序列中取出第一个数,1和2,1比2小,把1放到新的序列中</li><li>第一个序列中的1已经放到新序列中,那么拿出4来进行比较,2比4小,把2放到新的序列中</li><li>第二个序列中的2已经放到新序列中,那么拿出3来进行比较,3比4小,把3放到新的序列中</li><li>第二个序列中的3已经放到新序列中,那么拿出5来进行比较,4比5小,把4放到新的序列中</li><li>第一个序列中的4已经放到新序列中,那么拿出7来进行比较,5比7小,把5放到新的序列中</li><li>最后把7放入到新的序列中</li></ol><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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">merge_lst</span>(<span class="params">left_lst,right_lst</span>):</span><br><span class="line"> left_index, right_index = <span class="number">0</span>, <span class="number">0</span></span><br><span class="line"> res_lst = []</span><br><span class="line"> <span class="keyword">while</span> left_index < <span class="built_in">len</span>(left_lst) <span class="keyword">and</span> right_index < <span class="built_in">len</span>(right_lst):</span><br><span class="line"> <span class="comment"># 小的放入到res_lst中</span></span><br><span class="line"> <span class="keyword">if</span> left_lst[left_index] < right_lst[right_index]:</span><br><span class="line"> res_lst.append(left_lst[left_index])</span><br><span class="line"> left_index += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res_lst.append(right_lst[right_index])</span><br><span class="line"> right_index += <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="keyword">if</span> left_index == <span class="built_in">len</span>(left_lst):</span><br><span class="line"> res_lst.extend(right_lst[right_index:])</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res_lst.extend(left_lst[left_index:])</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> res_lst</span><br></pre></td></tr></table></figure><h2 id="归并排序-1"><a href="#归并排序-1" class="headerlink" title="归并排序"></a>归并排序</h2><p>归并排序,利用了合并有序序列的思想,把一个序列分成A,B两个序列,如果这两个序列是有序的,那么直接合并他们不就可以了么,但是A,B两个序列未必是有序的,没关系,就拿A序列来说,我把A序列再分一次,分成A1,A2,如果A1,A2有序我直接对他们进行合并,A不就变得有序了么,但是A1,A2未必有序啊,没关系,我继续分,直到分出来的序列里只有一个元素的时候,一个元素,就是一个有序的序列啊,这个时候不就可以合并了</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><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">def</span> <span class="title function_">merge_lst</span>(<span class="params">left_lst,right_lst</span>):</span><br><span class="line"> left_index, right_index = <span class="number">0</span>, <span class="number">0</span></span><br><span class="line"> res_lst = []</span><br><span class="line"> <span class="keyword">while</span> left_index < <span class="built_in">len</span>(left_lst) <span class="keyword">and</span> right_index < <span class="built_in">len</span>(right_lst):</span><br><span class="line"> <span class="comment"># 小的放入到res_lst中</span></span><br><span class="line"> <span class="keyword">if</span> left_lst[left_index] < right_lst[right_index]:</span><br><span class="line"> res_lst.append(left_lst[left_index])</span><br><span class="line"> left_index += <span class="number">1</span></span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res_lst.append(right_lst[right_index])</span><br><span class="line"> right_index += <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="keyword">if</span> left_index == <span class="built_in">len</span>(left_lst):</span><br><span class="line"> res_lst.extend(right_lst[right_index:])</span><br><span class="line"> <span class="keyword">else</span>:</span><br><span class="line"> res_lst.extend(left_lst[left_index:])</span><br><span class="line"></span><br><span class="line"> <span class="keyword">return</span> res_lst</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">merge_sort</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">len</span>(lst) <= <span class="number">1</span>:</span><br><span class="line"> <span class="keyword">return</span> lst</span><br><span class="line"></span><br><span class="line"> middle = <span class="built_in">len</span>(lst)//<span class="number">2</span></span><br><span class="line"> left_lst = merge_sort(lst[:middle])</span><br><span class="line"> right_lst = merge_sort(lst[middle:])</span><br><span class="line"> <span class="keyword">return</span> merge_lst(left_lst, right_lst)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">19</span>,<span class="number">4</span>,<span class="number">2</span>,<span class="number">8</span>,<span class="number">3</span>,<span class="number">167</span>,<span class="number">174</span>,<span class="number">34</span>]</span><br><span class="line"> <span class="built_in">print</span> merge_sort(lst)</span><br></pre></td></tr></table></figure><h2 id="选择排序"><a href="#选择排序" class="headerlink" title="选择排序"></a>选择排序</h2><p>假设有一个序列,a[0],a[1],a[2]…a[n]现在,对它进行排序。我们先从0这个位置到n这个位置找出最小值,然后将这个最小值与a[0]交换,然后呢,a[1]到a[n]就是我们接下来要排序的序列</p><p>我们可以从1这个位置到n这个位置找出最小值,然后将这个最小值与a[1]交换,之后,a[2]到a[n]就是我们接下来要排序的序列</p><p>每一次,我们都从序列中找出一个最小值,然后把它与序列的第一个元素交换位置,这样下去,待排序的元素就会越来越少,直到最后一个</p><h3 id="示例代码-20"><a href="#示例代码-20" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">select_sort</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">len</span>(lst)):</span><br><span class="line"> <span class="built_in">min</span> = i</span><br><span class="line"> <span class="keyword">for</span> j <span class="keyword">in</span> <span class="built_in">range</span>(<span class="built_in">min</span>,<span class="built_in">len</span>(lst)):</span><br><span class="line"> <span class="comment"># 寻找min 到len(lst)-1 这个范围内的最小值</span></span><br><span class="line"> <span class="keyword">if</span> lst[<span class="built_in">min</span>] > lst[j]:</span><br><span class="line"> <span class="built_in">min</span> = j</span><br><span class="line"> lst[i], lst[<span class="built_in">min</span>] = lst[<span class="built_in">min</span>], lst[i]</span><br><span class="line"></span><br><span class="line">lst = [<span class="number">2</span>,<span class="number">6</span>,<span class="number">1</span>,<span class="number">8</span>,<span class="number">2</span>,<span class="number">4</span>,<span class="number">9</span>]</span><br><span class="line">select_sort(lst)</span><br><span class="line"><span class="built_in">print</span> lst</span><br></pre></td></tr></table></figure><h2 id="堆排序"><a href="#堆排序" class="headerlink" title="堆排序"></a>堆排序</h2><h3 id="堆的概念"><a href="#堆的概念" class="headerlink" title="堆的概念"></a>堆的概念</h3><p>堆是一种数据结构,分最大堆和最小堆,最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。</p><p>我们用list来描述它</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">lst = [<span class="number">9</span>, <span class="number">6</span>, <span class="number">8</span>, <span class="number">3</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>]</span><br></pre></td></tr></table></figure><p>你看不出这个lst有什么特别,别着急,再介绍两个概念给你</p><h3 id="父节点,子节点"><a href="#父节点,子节点" class="headerlink" title="父节点,子节点"></a>父节点,子节点</h3><p>列表中的每一个元素都是一个节点,以lst[0] 为例,他的子节点分别是lst[1],lst[2],同时我们也说lst[1]的父节点是lst[0]</p><p>我们可以计算每一个节点的子节点,假设当前节点的序号是i,那么它的左子节点则是 i<em>2 +1,右子节点则是i</em>2 + 2</p><h3 id="最大堆,最小堆"><a href="#最大堆,最小堆" class="headerlink" title="最大堆,最小堆"></a>最大堆,最小堆</h3><p>所谓最大堆就是指每一个节点的值都比它的子节点的值大,最小堆就是指每一个节点的值都比它的子节点的值小</p><p>现在,我们再来看上面给出的列表</p><p>lst[0] = 9,它的子节点分别是lst[1]=6,lst[2]=8</p><p>lst[1] = 6,它的子节点分别是lst[3]=3,lst[4]=1</p><p>lst[2] = 8,它的子节点分别是lst[5]=4,lst[6]=2</p><p>lst[3] = 3,它的子节点分贝是lst[7]和lst[8],但这两个节点是不存在的</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></pre></td><td class="code"><pre><span class="line">lst = [<span class="number">3</span>, <span class="number">9</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">8</span>]</span><br></pre></td></tr></table></figure><p>这个列表里的元素和上一个列表里的元素是一样的,只是顺序不同,建立堆的过程,就是调整顺序的过程,使其满足堆的定义</p><h3 id="不是所有节点都有子节点"><a href="#不是所有节点都有子节点" class="headerlink" title="不是所有节点都有子节点"></a>不是所有节点都有子节点</h3><p>如果当前节点的位置是i,那么子节点的位置是i<em>2 + 1 和 i</em>2 +2 ,因此,不是所有节点都有子节点,假设一个堆的长度为n,那么n/2 - 1 及以前的节点都是有子节点的,这是一个非常简单的算数题,你稍微用脑就能理解。</p><p>那么建立堆的过程,就是从n/2 - 1 到0 逐渐调整的过程,如何调整呢?</p><p>每个节点都和自己的两个子节点中最大的那个节点交换位置就可以了,这样,节点值较大的那个就会不停的向上调整</p><h3 id="示例代码-21"><a href="#示例代码-21" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">adjust_heap</span>(<span class="params">lst, i, size</span>):</span><br><span class="line"> lchild = <span class="number">2</span> * i + <span class="number">1</span> <span class="comment"># 计算两个子节点的位置</span></span><br><span class="line"> rchild = <span class="number">2</span> * i + <span class="number">2</span></span><br><span class="line"> <span class="built_in">max</span> = i</span><br><span class="line"> <span class="keyword">if</span> i < size // <span class="number">2</span>:</span><br><span class="line"> <span class="keyword">if</span> lchild < size <span class="keyword">and</span> lst[lchild] > lst[<span class="built_in">max</span>]:</span><br><span class="line"> <span class="built_in">max</span> = lchild</span><br><span class="line"> <span class="keyword">if</span> rchild < size <span class="keyword">and</span> lst[rchild] > lst[<span class="built_in">max</span>]:</span><br><span class="line"> <span class="built_in">max</span> = rchild</span><br><span class="line"></span><br><span class="line"> <span class="comment"># 如果max != i成立,那么就说明,子节点比父节点大,要交换位置</span></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">max</span> != i:</span><br><span class="line"> lst[<span class="built_in">max</span>], lst[i] = lst[i], lst[<span class="built_in">max</span>]</span><br><span class="line"> <span class="comment"># 向下继续调整,确保子树也符合堆的定义</span></span><br><span class="line"> adjust_heap(lst, <span class="built_in">max</span>, size)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">build_heap</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>((<span class="built_in">len</span>(lst)//<span class="number">2</span>)-<span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line"> adjust_heap(lst, i, <span class="built_in">len</span>(lst))</span><br><span class="line"> <span class="built_in">print</span> lst <span class="comment"># 此处输出,可以观察效果</span></span><br><span class="line"> </span><br><span class="line">lst = [<span class="number">3</span>,<span class="number">9</span>,<span class="number">2</span>,<span class="number">6</span>,<span class="number">1</span>,<span class="number">4</span>,<span class="number">8</span>]</span><br><span class="line">build_heap(lst)</span><br><span class="line"><span class="built_in">print</span> lst</span><br></pre></td></tr></table></figure><h3 id="最大堆,最小堆-1"><a href="#最大堆,最小堆-1" class="headerlink" title="最大堆,最小堆"></a>最大堆,最小堆</h3><p>关于最大堆,最小堆,我们只要掌握一点就好了,对于最大堆,堆定的元素一定是整个堆里最大的,但是,如果我们去观察,整个堆并不呈现有序的特性,比如前面建立的堆</p><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">[9, 6, 8, 3, 1, 4, 2]</span><br></pre></td></tr></table></figure><p>堆顶元素为9,是最大值,但是从0到最后一个元素,并不是有序的</p><h3 id="堆排序的思路"><a href="#堆排序的思路" class="headerlink" title="堆排序的思路"></a>堆排序的思路</h3><p>lst = [9, 6, 8, 3, 1, 4, 2]</p><p>(1)将lst[0] 与 lst[6]交换,交换后为[2, 8, 6, 4, 3, 1, 9],现在,这个堆已经被破坏掉了</p><p>(2)那么我们可以利用adjust_heap函数重新把它调整成一个堆,adjust_heap(lst,0,6),这样调整后,lst=[8, 6, 4, 3, 1, 2, 9]</p><p>注意看lst[0]到lst[5],这个范围内的数据被调整成了一个堆,使得lst[0]也就是8是这个范围内的最大值</p><p>我们只需要重复刚才的两个步骤,就可以将堆的大小逐步缩小,同时,从后向前让整个lst变得有序</p><h3 id="示例代码-22"><a href="#示例代码-22" 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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">adjust_heap</span>(<span class="params">lst, i, size</span>):</span><br><span class="line"> lchild = <span class="number">2</span> * i + <span class="number">1</span> <span class="comment"># 计算两个子节点的位置</span></span><br><span class="line"> rchild = <span class="number">2</span> * i + <span class="number">2</span></span><br><span class="line"> <span class="built_in">max</span> = i</span><br><span class="line"> <span class="keyword">if</span> i < size // <span class="number">2</span>:</span><br><span class="line"> <span class="keyword">if</span> lchild < size <span class="keyword">and</span> lst[lchild] > lst[<span class="built_in">max</span>]:</span><br><span class="line"> <span class="built_in">max</span> = lchild</span><br><span class="line"> <span class="keyword">if</span> rchild < size <span class="keyword">and</span> lst[rchild] > lst[<span class="built_in">max</span>]:</span><br><span class="line"> <span class="built_in">max</span> = rchild</span><br><span class="line"></span><br><span class="line"> <span class="comment"># 如果max != i成立,那么就说明,子节点比父节点大,要交换位置</span></span><br><span class="line"> <span class="keyword">if</span> <span class="built_in">max</span> != i:</span><br><span class="line"> lst[<span class="built_in">max</span>], lst[i] = lst[i], lst[<span class="built_in">max</span>]</span><br><span class="line"> <span class="comment"># 向下继续调整,确保子树也符合堆的定义</span></span><br><span class="line"> adjust_heap(lst, <span class="built_in">max</span>, size)</span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">build_heap</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>((<span class="built_in">len</span>(lst)//<span class="number">2</span>)-<span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line"> adjust_heap(lst, i, <span class="built_in">len</span>(lst))</span><br><span class="line"> <span class="built_in">print</span> lst <span class="comment"># 此处输出,可以观察效果</span></span><br><span class="line"></span><br><span class="line"></span><br><span class="line">lst = [<span class="number">3</span>,<span class="number">9</span>,<span class="number">2</span>,<span class="number">6</span>,<span class="number">1</span>,<span class="number">4</span>,<span class="number">8</span>]</span><br><span class="line"><span class="keyword">def</span> <span class="title function_">heap_sort</span>(<span class="params">lst</span>):</span><br><span class="line"> size = <span class="built_in">len</span>(lst)</span><br><span class="line"> <span class="comment"># 建立一个堆,此时lst[0]一定是最大值</span></span><br><span class="line"> build_heap(lst)</span><br><span class="line"> <span class="built_in">print</span> <span class="string">'*'</span>*<span class="number">20</span></span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(size-<span class="number">1</span>, -<span class="number">1</span>, -<span class="number">1</span>):</span><br><span class="line"> <span class="comment"># 将lst[0] 与lst[i] 交换,这样大的数值就按顺序排到了后面</span></span><br><span class="line"> lst[<span class="number">0</span>], lst[i] = lst[i], lst[<span class="number">0</span>]</span><br><span class="line"> <span class="comment"># 交换后,重新将0到i这个范围内的数据调整成堆,这样lst[0]还是最大值</span></span><br><span class="line"> adjust_heap(lst, <span class="number">0</span>, i)</span><br><span class="line"> <span class="built_in">print</span> lst,i <span class="comment"># 此处输出可以查看效果</span></span><br><span class="line"></span><br><span class="line">heap_sort(lst)</span><br><span class="line"><span class="built_in">print</span> <span class="string">'*'</span>*<span class="number">20</span></span><br><span class="line"><span class="built_in">print</span> lst</span><br></pre></td></tr></table></figure><h2 id="插入排序"><a href="#插入排序" class="headerlink" title="插入排序"></a>插入排序</h2><p>插入排序就是每一步都将一个待排数据按其大小插入到已经排序的数据中的适当位置,直到全部插入完毕。</p><p>咱们举一个例子,你就能明白插入排序的精髓所在</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">lst = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">5</span>]</span><br></pre></td></tr></table></figure><p>lst是一个待排序的列表,你仔细观察不难发现,这个列表里的前4个数据已经是有序的了,现在,只需要把最后一个元素5插入到一个合适的位置就可以了。</p><p>从7开始向左遍历,比5大的数向右移动,当遇到一个小于等于5的数就停下来,这个位置就是5应该在的位置。当7向右移动时,占据了5的位置,因此,程序里需要一个变量把5保存下来,还需要一个变量把向左遍历时的索引记录下来,最后这个索引就是5应该在的位置。</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="keyword">def</span> <span class="title function_">insert</span>(<span class="params">lst, index</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 列表lst从索引0到索引index-1 都是有序的</span></span><br><span class="line"><span class="string"> 函数将索引index位置上的元素插入到前面的一个合适的位置</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :param index:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> lst[index-<span class="number">1</span>] < lst[index]:</span><br><span class="line"> <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"> tmp = lst[index]</span><br><span class="line"> tmp_index = index</span><br><span class="line"> <span class="keyword">while</span> tmp_index > <span class="number">0</span> <span class="keyword">and</span> lst[tmp_index-<span class="number">1</span>] > tmp:</span><br><span class="line"> lst[tmp_index] = lst[tmp_index-<span class="number">1</span>]</span><br><span class="line"> tmp_index -= <span class="number">1</span></span><br><span class="line"> lst[tmp_index] = tmp</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">6</span>, <span class="number">7</span>, <span class="number">5</span>]</span><br><span class="line"> insert(lst, <span class="number">4</span>)</span><br><span class="line"> <span class="built_in">print</span>(lst)</span><br></pre></td></tr></table></figure><p>函数默认列表lst从0到index-1都是有序的,现在只需要将索引index位置上的数据插入到合适的位置就可以了。</p><p>你可能已经产生了疑惑,咱们是要排序啊,你这函数默认前面index-1个数据都是有序的,这不合理啊,前面index-1个数据如果是无序的,你怎么办呢?</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></pre></td><td class="code"><pre><span class="line"><span class="keyword">def</span> <span class="title function_">insert</span>(<span class="params">lst, index</span>):</span><br><span class="line"> <span class="string">"""</span></span><br><span class="line"><span class="string"> 列表lst从索引0到索引index-1 都是有序的</span></span><br><span class="line"><span class="string"> 函数将索引index位置上的元素插入到前面的一个合适的位置</span></span><br><span class="line"><span class="string"> :param lst:</span></span><br><span class="line"><span class="string"> :param index:</span></span><br><span class="line"><span class="string"> :return:</span></span><br><span class="line"><span class="string"> """</span></span><br><span class="line"> <span class="keyword">if</span> lst[index-<span class="number">1</span>] < lst[index]:</span><br><span class="line"> <span class="keyword">return</span></span><br><span class="line"></span><br><span class="line"> tmp = lst[index]</span><br><span class="line"> tmp_index = index</span><br><span class="line"> <span class="keyword">while</span> tmp_index > <span class="number">0</span> <span class="keyword">and</span> lst[tmp_index-<span class="number">1</span>] > tmp:</span><br><span class="line"> lst[tmp_index] = lst[tmp_index-<span class="number">1</span>]</span><br><span class="line"> tmp_index -= <span class="number">1</span></span><br><span class="line"> lst[tmp_index] = tmp</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">insert_sort</span>(<span class="params">lst</span>):</span><br><span class="line"> <span class="keyword">for</span> i <span class="keyword">in</span> <span class="built_in">range</span>(<span class="number">1</span>, <span class="built_in">len</span>(lst)):</span><br><span class="line"> insert(lst, i)</span><br><span class="line"></span><br><span class="line"></span><br><span class="line"><span class="keyword">if</span> __name__ == <span class="string">'__main__'</span>:</span><br><span class="line"> lst = [<span class="number">1</span>, <span class="number">6</span>, <span class="number">2</span>, <span class="number">7</span>, <span class="number">5</span>]</span><br><span class="line"> insert_sort(lst)</span><br><span class="line"> <span class="built_in">print</span>(lst)</span><br></pre></td></tr></table></figure><p>第1个元素单独看做一个数列,它本身就是有序的,那么只需要执行insert(lst, 1),就可以保证前两个数据变成有序的,然后执行insert(lst, 2),此时,从索引0到索引1是有需的,只需要将索引为2的数据插入到合适的位置就可以了。</p><div class="tip warning faa-horizontal animated-hover"><p>本网站只是搬运工,资源均来自互联网,如有侵权请联系删除,站长不会以此获取任何利益!</p></div> ]]></content>
<categories>
<category> python🤣 </category>
</categories>
<tags>
<tag> resource </tag>
</tags>
</entry>
<entry>
<title>Hello World</title>
<link href="/2022/12/30/hello-world/"/>
<url>/2022/12/30/hello-world/</url>
<content type="html"><![CDATA[<p>Welcome to <a href="https://hexo.io/">Hexo</a>! This is your very first post. Check <a href="https://hexo.io/docs/">documentation</a> for more info. If you get any problems when using Hexo, you can find the answer in <a href="https://hexo.io/docs/troubleshooting.html">troubleshooting</a> or you can ask me on <a href="https://github.com/hexojs/hexo/issues">GitHub</a>.</p><h2 id="Quick-Start"><a href="#Quick-Start" class="headerlink" title="Quick Start"></a>Quick Start</h2><h3 id="Create-a-new-post"><a href="#Create-a-new-post" class="headerlink" title="Create a new post"></a>Create a new post</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo new <span class="string">"My New Post"</span></span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/writing.html">Writing</a></p><h3 id="Run-server"><a href="#Run-server" class="headerlink" title="Run server"></a>Run server</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo server</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/server.html">Server</a></p><h3 id="Generate-static-files"><a href="#Generate-static-files" class="headerlink" title="Generate static files"></a>Generate static files</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo generate</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/generating.html">Generating</a></p><h3 id="Deploy-to-remote-sites"><a href="#Deploy-to-remote-sites" class="headerlink" title="Deploy to remote sites"></a>Deploy to remote sites</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">$ hexo deploy</span><br></pre></td></tr></table></figure><p>More info: <a href="https://hexo.io/docs/one-command-deployment.html">Deployment</a></p>]]></content>
<categories>
<category> HELLO </category>
</categories>
<tags>
<tag> 建站第一步 </tag>
</tags>
</entry>
</search>