|
| 1 | += 基础语法 |
| 2 | +comyn <me@xueming.li> |
| 3 | +v1.0 |
| 4 | +:source-highlighter: pygments |
| 5 | +:revealjs_history: false |
| 6 | +:revealjs_center: false |
| 7 | +:revealjs_embedded: true |
| 8 | +:revealjsdir: ../reveal.js |
| 9 | +:imagesdir: assets/images/1 |
| 10 | +:homepage: http://www.magedu.com |
| 11 | + |
| 12 | +== hello world |
| 13 | +[source,python] |
| 14 | +print('hello world') |
| 15 | + |
| 16 | +== 常量&变量 |
| 17 | + |
| 18 | +=== 字面常量 |
| 19 | + |
| 20 | +[%step] |
| 21 | +* 单独出现的数字,字符串等 |
| 22 | +* 字面常量是解释器里的一块内存 |
| 23 | +* 单独出现的字面常量无意义 |
| 24 | + |
| 25 | +=== 变量 |
| 26 | + |
| 27 | +[%step] |
| 28 | +* 解释器中一段内存的名称 |
| 29 | +* Python中,变量都是引用 |
| 30 | + |
| 31 | +=== 数据类型 |
| 32 | + |
| 33 | +[%step] |
| 34 | +* Python是强类型动态语言 |
| 35 | +* 数据类型是对用来约束数据的。 |
| 36 | +* 原始类型和复合类型 |
| 37 | + |
| 38 | +== 运算符&表达式 |
| 39 | + |
| 40 | +=== 算术运算符 |
| 41 | +_a = 10, b = 20_ |
| 42 | +[cols="2,2,5,4", options="header"] |
| 43 | +|=== |
| 44 | +|符号|名称|描述|实例 |
| 45 | +|+|加|两个对象相加|a + b = 30 |
| 46 | +|-|减|两个对象相减|a - b = -10 |
| 47 | +|*|乘|两个对象相乘|a * b = 200 |
| 48 | +|/|除|两个对象相除|a / b = 0.5 |
| 49 | +|=== |
| 50 | + |
| 51 | +=== 算术运算符 |
| 52 | +_a = 10, b = 20_ |
| 53 | +[cols="2,2,5,4", options="header"] |
| 54 | +|=== |
| 55 | +|符号|名称|描述|实例 |
| 56 | +|%|取模|返回除法的余数| a % b = 10 |
| 57 | +|**|幂|返回x的y次幂|a ** b = 100000000000000000000 |
| 58 | +|//|取整除|返回除法运算的整数部分|a // b = 0 |
| 59 | +|=== |
| 60 | + |
| 61 | +=== 位运算符 |
| 62 | +_a=60(00111100) b=13(00001101)_ |
| 63 | +[cols="2,5,4"] |
| 64 | +|=== |
| 65 | +|符号|描述|实例 |
| 66 | +|&|按位与|a & b = 12 |
| 67 | +|\||按位或| a\|b = 61 |
| 68 | +|^|按位异或|a^b = 49 |
| 69 | +|~|按位取反| ~a = -61 |
| 70 | +|=== |
| 71 | + |
| 72 | +=== 位运算符 |
| 73 | +_a=60(00111100) b=13(00001101)_ |
| 74 | +[cols="2,5,4"] |
| 75 | +|=== |
| 76 | +|符号|描述|实例 |
| 77 | +|<<|左移| a << 2 = 240 |
| 78 | +|>>|右移| a >> 2 = 15 |
| 79 | +|=== |
| 80 | + |
| 81 | +=== 比较运算符 |
| 82 | +_a = 10, b = 20_ |
| 83 | +[cols="2,5,4", options="header"] |
| 84 | +|=== |
| 85 | +|符号|描述|实例 |
| 86 | +|==|等于| a == b = False |
| 87 | +|!=|不等于| a != b = True |
| 88 | +|>|大于| a > b = False |
| 89 | +|<|小于|a < b = True |
| 90 | +|=== |
| 91 | + |
| 92 | +=== 比较运算符 |
| 93 | +_a = 10, b = 20_ |
| 94 | +[cols="2,5,4", options="header"] |
| 95 | +|=== |
| 96 | +|符号|描述|实例 |
| 97 | +|>=|大于等于| a >= b = False |
| 98 | +|\<=|小于等于|a \<= b = True |
| 99 | +|=== |
| 100 | + |
| 101 | +=== 逻辑运算符 |
| 102 | +_a = True, b = False_ |
| 103 | +[cols="2,5,4", options="header"] |
| 104 | +|=== |
| 105 | +|符号|描述|实例 |
| 106 | +|and|与| a and b = False |
| 107 | +|or|或|a or b = True |
| 108 | +|not|非| not a = False |
| 109 | +|=== |
| 110 | + |
| 111 | +=== 其他运算符 |
| 112 | +[cols="2,3,6", options="header"] |
| 113 | +|=== |
| 114 | +|符号|类别|描述 |
| 115 | +|=|赋值运算符|a = b, 把b的值赋给a |
| 116 | +|in|成员运算符| a in b, a是否b的成员 |
| 117 | +|not in| 成员运算符| a not in b, a是否不是b的成员 |
| 118 | +|is|身份运算符| a is None, a是否None |
| 119 | +|is not|身份运算符| a is not None, a是否不是None |
| 120 | +|=== |
| 121 | + |
| 122 | +=== 表达式 |
| 123 | +* 常量、变量和赋值运算符之外的运算符的组合 |
| 124 | +* 表达式可以求值 |
| 125 | + |
| 126 | +=== 表达式与优先级 |
| 127 | +[%step] |
| 128 | +* 一元高于二元 |
| 129 | +* 数值高于逻辑 |
| 130 | +* 算术运算高于位运算 |
| 131 | +* 乘除高于加减 |
| 132 | +* 拿不准时加括号 |
| 133 | + |
| 134 | +== 程序结构 |
| 135 | +对于大多数语言来说,有且仅有三种结构: |
| 136 | + |
| 137 | +* 顺序结构 |
| 138 | +* 分支结构 |
| 139 | +* 循环结构 |
| 140 | + |
| 141 | +=== 顺序结构 |
| 142 | +* 顺序结构是绝大多数编程语言的默认结构 |
| 143 | +* 指令按照书写顺序依次执行 |
| 144 | +[source,python] |
| 145 | +---- |
| 146 | +a = 10 |
| 147 | +a += 2 |
| 148 | +a << 2 |
| 149 | +---- |
| 150 | +a = 48 |
| 151 | + |
| 152 | +=== 分支结构 |
| 153 | + |
| 154 | +=== `if` 语句 |
| 155 | +当条件满足时,进入另外一个分支,执行一个块,执行完成重新回到主分支 |
| 156 | + |
| 157 | +[source,python] |
| 158 | +---- |
| 159 | +if condition: # <1> |
| 160 | + block # <2> |
| 161 | +---- |
| 162 | +<1> Python 以 `:` 开始一个块 |
| 163 | +<2> Python 使用缩进标示块 |
| 164 | + |
| 165 | +=== `else` 子句 |
| 166 | +在 `if` 语句的基础上,当条件不满足时,执行一个块,执行完成重新回到主分支 |
| 167 | +[source,python] |
| 168 | +---- |
| 169 | +if condition: |
| 170 | + block |
| 171 | +else: |
| 172 | + block |
| 173 | +---- |
| 174 | + |
| 175 | +=== `elif` 子句 |
| 176 | +`elif` 是 `else` 和 `if` 的合体, 在 `if` 判断失效的情况下,做进一步判断 |
| 177 | +[source,python] |
| 178 | +---- |
| 179 | +if condition: |
| 180 | + block |
| 181 | +elif: |
| 182 | + block |
| 183 | +---- |
| 184 | + |
| 185 | +=== 关于 `switch` |
| 186 | +Python中并没有 `switch` 结构, 因为 `switch`结构完全可以由 `if elif else`语句来实现 |
| 187 | + |
| 188 | +=== 循环结构 |
| 189 | +Python中有两种循环结构: |
| 190 | + |
| 191 | +* `while` 语句 |
| 192 | +* `for` 语句 |
| 193 | + |
| 194 | +=== `while` 语句 |
| 195 | +循环执行,直到满足条件,循环体内修改条件 |
| 196 | +[source,python] |
| 197 | +---- |
| 198 | +while condition: |
| 199 | + block |
| 200 | +---- |
| 201 | + |
| 202 | +=== `for` 语句 |
| 203 | +遍历某个可迭代对象的所有元素,循环体不应该修改迭代器 |
| 204 | +[source,python] |
| 205 | +---- |
| 206 | +for item in iterator: |
| 207 | + block |
| 208 | +---- |
| 209 | + |
| 210 | +=== `range` 函数 |
| 211 | +`range` 函数产生一个生成器,通常用于控制循环次数 |
| 212 | + |
| 213 | +* `range(x)` [0, x) |
| 214 | +* `range(m, n)` [m, n) |
| 215 | +* `range(m, n, s)` [m, n), 步长为 s |
| 216 | + |
| 217 | +=== `break` 子句 |
| 218 | +* 只能出现在循环结构中 |
| 219 | +* 用于跳出当前循环结构 |
| 220 | + |
| 221 | +=== `continue` 子句 |
| 222 | +* 只能出现在循环结构中 |
| 223 | +* 用于跳过此次迭代的剩余操作 |
| 224 | + |
| 225 | +=== `else` 子句 |
| 226 | +循环结构的 `else` 子句是Python特有的,用于表示一个循环是 *未经`break`跳出* 的 |
| 227 | + |
| 228 | +[source,python] |
| 229 | +---- |
| 230 | +for item in iterator: |
| 231 | + block |
| 232 | +else: |
| 233 | + block |
| 234 | +---- |
0 commit comments