|
| 1 | +--- |
| 2 | +title: 速读 Python 语法 |
| 3 | +icon: zhuzhuangtu |
| 4 | +date: 2024-11-06 13:31:40 |
| 5 | +author: AI悦创 |
| 6 | +isOriginal: true |
| 7 | +sticky: false |
| 8 | +star: false |
| 9 | +article: true |
| 10 | +timeline: true |
| 11 | +image: false |
| 12 | +navbar: true |
| 13 | +sidebarIcon: true |
| 14 | +headerDepth: 5 |
| 15 | +comment: true |
| 16 | +lastUpdated: true |
| 17 | +editLink: false |
| 18 | +backToTop: true |
| 19 | +toc: true |
| 20 | +--- |
| 21 | + |
| 22 | + |
| 23 | + |
| 24 | +你好,我是悦创。 |
| 25 | + |
| 26 | +环境配置好后,我们就来快速学习几个 Python 必会的基础语法。我假设你是 Python 零基础,但已经有一些其他编程语言的基础。下面我们一一来看。 |
| 27 | + |
| 28 | +### 2.1 输入与输出 |
| 29 | + |
| 30 | +```python |
| 31 | +name = raw_input("What's your name?") |
| 32 | +sum = 100+100 |
| 33 | +print ('hello,%s' %name) |
| 34 | +print ('sum = %d' %sum) |
| 35 | +``` |
| 36 | + |
| 37 | +`raw_input` 是 Python2.7 的输入函数,在 python3.x 里可以直接使用 input,赋值给变量 name,print 是输出函数,`%name` 代表变量的数值,因为是字符串类型,所以在前面用的 `%s` 作为代替。 |
| 38 | + |
| 39 | +这是运行结果: |
| 40 | + |
| 41 | +```python |
| 42 | +What's your name?cy |
| 43 | +hello,cy |
| 44 | +sum = 200 |
| 45 | +``` |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | +### 2.2 判断语句:if … else … |
| 50 | + |
| 51 | +```python |
| 52 | +if score>= 90: |
| 53 | + print 'Excellent' |
| 54 | +else: |
| 55 | + if score < 60: |
| 56 | + print 'Fail' |
| 57 | + else: |
| 58 | + print 'Good Job' |
| 59 | +``` |
| 60 | + |
| 61 | +if … else … 是经典的判断语句,需要注意的是在 if expression 后面有个冒号,同样在 else 后面也存在冒号。 |
| 62 | + |
| 63 | +另外需要注意的是,Python 不像其他语言一样使用{}或者 begin…end 来分隔代码块,而是采用代码缩进和冒号的方式来区分代码之间的层次关系。所以**代码缩进在 Python 中是一种语法**,如果代码缩进不统一,比如有的是 tab 有的是空格,会怎样呢?会产生错误或者异常。相同层次的代码一定要采用相同层次的缩进。 |
| 64 | + |
| 65 | +### 2.3 循环语句:for … in |
| 66 | + |
| 67 | +::: code-tabs |
| 68 | + |
| 69 | +@tab Code |
| 70 | + |
| 71 | +```python |
| 72 | +sum = 0 |
| 73 | +for number in range(11): |
| 74 | + sum = sum + number |
| 75 | +print sum |
| 76 | +``` |
| 77 | + |
| 78 | +@tab 运行结果 |
| 79 | + |
| 80 | +```python |
| 81 | +55 |
| 82 | +``` |
| 83 | + |
| 84 | +::: |
| 85 | + |
| 86 | +for 循环是一种迭代循环机制,迭代即重复相同的逻辑操作。如果规定循环的次数,我们可以使用 range 函数,它在 for 循环中比较常用。`range(11)` 代表从 0 到 10,不包括 11,也相当于 `range(0,11)`,range 里面还可以增加步长,比如 `range(1,11,2)` 代表的是`[1,3,5,7,9]`。 |
| 87 | + |
| 88 | +### 2.4 循环语句: while |
| 89 | + |
| 90 | +::: code-tabs |
| 91 | + |
| 92 | +@tab Code |
| 93 | + |
| 94 | +```python |
| 95 | +sum = 0 |
| 96 | +number = 1 |
| 97 | +while number < 11: |
| 98 | + sum = sum + number |
| 99 | + number = number + 1 |
| 100 | +print sum |
| 101 | +``` |
| 102 | + |
| 103 | +@tab 运行结果 |
| 104 | + |
| 105 | +```python |
| 106 | +55 |
| 107 | +``` |
| 108 | + |
| 109 | +::: |
| 110 | + |
| 111 | +1 到 10 的求和也可以用 while 循环来写,这里 while 控制了循环的次数。while 循环是条件循环,在 while 循环中对于变量的计算方式更加灵活。因此 while 循环适合循环次数不确定的循环,而 for 循环的条件相对确定,适合固定次数的循环。 |
| 112 | + |
| 113 | + |
| 114 | + |
| 115 | +### 2.5 数据类型:列表、元组、字典、集合 |
| 116 | + |
| 117 | +#### 2.5.1 列表:[] |
| 118 | + |
| 119 | +::: code-tabs |
| 120 | + |
| 121 | +@tab Code |
| 122 | + |
| 123 | +```python |
| 124 | +lists = ['a','b','c'] |
| 125 | +lists.append('d') |
| 126 | +print lists |
| 127 | +print len(lists) |
| 128 | +lists.insert(0,'mm') |
| 129 | +lists.pop() |
| 130 | +print lists |
| 131 | +``` |
| 132 | + |
| 133 | +@tab 运行结果 |
| 134 | + |
| 135 | +```python |
| 136 | +['a', 'b', 'c', 'd'] |
| 137 | +4 |
| 138 | +['mm', 'a', 'b', 'c'] |
| 139 | +``` |
| 140 | + |
| 141 | +::: |
| 142 | + |
| 143 | +列表是 Python 中常用的数据结构,相当于数组,具有增删改查的功能,我们可以使用 `len()` 函数获得 lists 中元素的个数;使用 `append()` 在尾部添加元素,使用 `insert()` 在列表中插入元素,使用 `pop()` 删除尾部的元素。 |
| 144 | + |
| 145 | +#### 2.5.2 元组 (tuple) |
| 146 | + |
| 147 | +::: code-tabs |
| 148 | + |
| 149 | +@tab Code |
| 150 | + |
| 151 | +```python |
| 152 | +tuples = ('tupleA','tupleB') |
| 153 | +print tuples[0] |
| 154 | +``` |
| 155 | + |
| 156 | +@tab 运行结果 |
| 157 | + |
| 158 | +```python |
| 159 | +tupleA |
| 160 | +``` |
| 161 | + |
| 162 | +::: |
| 163 | + |
| 164 | +元组 tuple 和 list 非常类似,但是 tuple 一旦初始化就不能修改。因为不能修改所以没有 `append()`, `insert()` 这样的方法,可以像访问数组一样进行访问,比如 `tuples[0]`,但不能赋值。 |
| 165 | + |
| 166 | +#### 2.5.3 字典 {dictionary} |
| 167 | + |
| 168 | +::: code-tabs |
| 169 | + |
| 170 | +@tab Code |
| 171 | + |
| 172 | +```python |
| 173 | +# -*- coding: utf-8 -* |
| 174 | +#定义一个dictionary |
| 175 | +score = {'guanyu':95,'zhangfei':96} |
| 176 | +#添加一个元素 |
| 177 | +score['zhaoyun'] = 98 |
| 178 | +print score |
| 179 | +#删除一个元素 |
| 180 | +score.pop('zhangfei') |
| 181 | +#查看key是否存在 |
| 182 | +print 'guanyu' in score |
| 183 | +#查看一个key对应的值 |
| 184 | +print score.get('guanyu') |
| 185 | +print score.get('yase',99) |
| 186 | +``` |
| 187 | + |
| 188 | +@tab 运行结果 |
| 189 | + |
| 190 | +```python |
| 191 | +{'guanyu': 95, 'zhaoyun': 98, 'zhangfei': 96} |
| 192 | +True |
| 193 | +95 |
| 194 | +99 |
| 195 | +``` |
| 196 | + |
| 197 | +::: |
| 198 | + |
| 199 | +字典其实就是 `{key, value}`,多次对同一个 key 放入 value,后面的值会把前面的值冲掉,同样字典也有增删改查。增加字典的元素相当于赋值,比如 `score['zhaoyun'] = 98`,删除一个元素使用 pop,查询使用 get,如果查询的值不存在,我们也可以给一个默认值,比如 `score.get('yase', 99)`。 |
| 200 | + |
| 201 | +#### 2.5.4 集合:set |
| 202 | + |
| 203 | +::: code-tabs |
| 204 | + |
| 205 | +@tab Code |
| 206 | + |
| 207 | +```python |
| 208 | +s = set(['a', 'b', 'c']) |
| 209 | +s.add('d') |
| 210 | +s.remove('b') |
| 211 | +print s |
| 212 | +print 'c' in s |
| 213 | +``` |
| 214 | + |
| 215 | +@tab 运行结果 |
| 216 | + |
| 217 | +```python |
| 218 | +set(['a', 'c', 'd']) |
| 219 | +True |
| 220 | +``` |
| 221 | + |
| 222 | +::: |
| 223 | + |
| 224 | +集合 set 和字典 dictory 类似,不过它只是 key 的集合,不存储 value。同样可以增删查,增加使用 add,删除使用 remove,查询看某个元素是否在这个集合里,使用 in。 |
| 225 | + |
| 226 | + |
| 227 | + |
| 228 | +#### 2.5.5 注释:# |
| 229 | + |
| 230 | +注释在 python 中使用 `#`,如果注释中有中文,一般会在代码前添加 `# -*- coding: utf-8 -*`。 |
| 231 | + |
| 232 | +如果是多行注释,使用三个单引号,或者三个双引号,比如: |
| 233 | + |
| 234 | +```python |
| 235 | +# -*- coding: utf-8 -* |
| 236 | +''' |
| 237 | +这是多行注释,用三个单引号 |
| 238 | +这是多行注释,用三个单引号 |
| 239 | +这是多行注释,用三个单引号 |
| 240 | +''' |
| 241 | +``` |
| 242 | + |
| 243 | +#### 2.5.6 引用模块 / 包:import |
| 244 | + |
| 245 | +```python |
| 246 | +# 导入一个模块 |
| 247 | +import model_name |
| 248 | +# 导入多个模块 |
| 249 | +import module_name1,module_name2 |
| 250 | +# 导入包中指定模块 |
| 251 | +from package_name import moudule_name |
| 252 | +# 导入包中所有模块 |
| 253 | +from package_name import * |
| 254 | +``` |
| 255 | + |
| 256 | +Python 语言中 import 的使用很简单,直接使用 `import module_name` 语句导入即可。这里 import 的本质是什么呢?import 的本质是路径搜索。import 引用可以是模块 module,或者包 package。 |
| 257 | + |
| 258 | +针对 module,实际上是引用一个 `.py` 文件。而针对 package,可以采用 `from … import …` 的方式,这里实际上是从一个目录中引用模块,这时目录结构中必须带有一个 `__init__.py` 文件。 |
| 259 | + |
| 260 | +#### 2.5.7 函数:def |
| 261 | + |
| 262 | +::: code-tabs |
| 263 | + |
| 264 | +@tab Code |
| 265 | + |
| 266 | +```python |
| 267 | +def addone(score): |
| 268 | + return score + 1 |
| 269 | +print addone(99) |
| 270 | +``` |
| 271 | + |
| 272 | +@tab 运行结果 |
| 273 | + |
| 274 | +```python |
| 275 | +100 |
| 276 | +``` |
| 277 | + |
| 278 | +::: |
| 279 | + |
| 280 | +函数代码块以 def 关键词开头,后接函数标识符名称和圆括号,在圆括号里是传进来的参数,然后通过 return 进行函数结果得反馈。 |
| 281 | + |
| 282 | +#### 2.5.8 A+B Problem |
| 283 | + |
| 284 | +上面的讲的这些基础语法,我们可以用 sumlime text 编辑器运行 Python 代码。另外,告诉你一个相当高效的方法,你可以充分利用一个刷题进阶的网址:[https://pintia.cn/problem-sets/91827364500/exam/problems/type/7](https://pintia.cn/problem-sets/91827364500/exam/problems/type/7),这是一个 OnlineJudge。 |
| 285 | + |
| 286 | +什么是 OnlineJudge 呢?它实际上是一个在线答题系统,做题后你可以在后台提交代码,然后 OnlineJudge 会告诉你运行的结果,如果结果正确就反馈:Accepted,如果错误就反馈:Wrong Answer。 |
| 287 | + |
| 288 | +不要小看这样的题目,也会存在编译错误、内存溢出、运行超时等等情况。所以题目对编码的质量要求还是挺高的。下面我就给你讲讲这道 A+B 的题目,你可以自己做练习,然后在后台提交答案。 |
| 289 | + |
| 290 | +#### 2.5.9 题目:A+B |
| 291 | + |
| 292 | +输入格式:有一系列的整数对 A 和 B,以空格分开。 |
| 293 | + |
| 294 | +输出格式:对于每个整数对 A 和 B,需要给出 A 和 B 的和。 |
| 295 | + |
| 296 | +输入输出样例: |
| 297 | + |
| 298 | +```python |
| 299 | +INPUT |
| 300 | +1 5 |
| 301 | +OUTPUT |
| 302 | +6 |
| 303 | +``` |
| 304 | + |
| 305 | +针对这道题,我给出了下面的答案: |
| 306 | + |
| 307 | +```python |
| 308 | +while True: |
| 309 | + try: |
| 310 | + line = raw_input() |
| 311 | + a = line.split() |
| 312 | + print(int(a[0]) + int(a[1])) |
| 313 | + except: |
| 314 | + break |
| 315 | +``` |
| 316 | + |
| 317 | +当然每个人可以有不同的解法,官方也有 Python 的答案,这里给你介绍这个 OnlineJudge 是因为: |
| 318 | + |
| 319 | +1. 可以在线得到反馈,提交代码后,系统会告诉你对错。而且你能看到每道题的正确率,和大家提交后反馈的状态; |
| 320 | +2. 有社区论坛可以进行交流学习; |
| 321 | +3. 对算法和数据结构的提升大有好处,当然对数据挖掘算法的灵活运用和整个编程基础的提升都会有很大的帮助。 |
| 322 | + |
| 323 | +## 3. 总结 |
| 324 | + |
| 325 | +现在我们知道,Python 毫无疑问是数据分析中最主流的语言。今天我们学习了这么多 Python 的基础语法,你是不是体会到了它的简洁。如果你有其他编程语言基础,相信你会非常容易地转换成 Python 语法的。那到此,Python 我们也就算入门了。有没有什么方法可以在此基础上快速提升 Python 编程水平呢?给你分享下我的想法。 |
| 326 | + |
| 327 | +在日常工作中,我们解决的问题都不属于高难度的问题,大部分人做的都是开发工作而非科研项目。所以我们要提升的主要是熟练度,而通往熟练度的唯一路径就是练习、练习、再练习! |
| 328 | + |
| 329 | +如果你是第一次使用 Python,不用担心,最好的方式就是直接做题。把我上面的例子都跑一遍,自己在做题中体会。 |
| 330 | + |
| 331 | +如果你想提升自己的编程基础,尤其是算法和数据结构相关的能力,因为这个在后面的开发中都会用到。那么 ACM Online Judge 是非常好的选择,勇敢地打开这扇大门,把它当作你进阶的好工具。 |
| 332 | + |
| 333 | +你可以从 Accepted 比率高的题目入手,你做对的题目数越多,你的排名也会越来越往前,这意味着你的编程能力,包括算法和数据结构的能力都有了提升。另外这种在社区中跟大家一起学习,还能排名,就像游戏一样,让学习更有趣味,从此不再孤独。 |
| 334 | + |
| 335 | + |
| 336 | + |
| 337 | +我在文章中多次强调练习的作用,这样可以增加你对数据分析相关内容的熟练度。所以我给你出了两道练习题,你可以思考下如何来做,欢迎把答案放到评论下面,我也会和你一起在评论区进行讨论。 |
| 338 | + |
| 339 | +1. 如果我想在 Python 中引用 `scikit-learn` 库该如何引用? |
| 340 | +2. 求 `1+3+5+7+…+99` 的求和,用 Python 该如何写? |
| 341 | + |
| 342 | +欢迎你把今天的内容分享给身边的朋友,和他一起掌握 Python 这门功能强大的语言。 |
| 343 | + |
| 344 | + |
| 345 | + |
| 346 | + |
| 347 | + |
| 348 | +欢迎关注我公众号:AI悦创,有更多更好玩的等你发现! |
| 349 | + |
| 350 | +::: details 公众号:AI悦创【二维码】 |
| 351 | + |
| 352 | + |
| 353 | + |
| 354 | +::: |
| 355 | + |
| 356 | +::: info AI悦创·编程一对一 |
| 357 | + |
| 358 | +AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh |
| 359 | + |
| 360 | +C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh |
| 361 | + |
| 362 | +方法一:[QQ](http://wpa.qq.com/msgrd?v=3&uin=1432803776&site=qq&menu=yes) |
| 363 | + |
| 364 | +方法二:微信:Jiabcdefh |
| 365 | + |
| 366 | +::: |
| 367 | + |
| 368 | + |
0 commit comments