diff --git a/PythonThinking/task2&3 课后练习及补充.md b/PythonThinking/task2&3 课后练习及补充.md new file mode 100644 index 0000000..cac486f --- /dev/null +++ b/PythonThinking/task2&3 课后练习及补充.md @@ -0,0 +1,478 @@ +# 1 基础 课后练习及补充 + + + +## 1.1 数据类型相关练习 + + + +### 1.1.1 数据类型转换 +  运行下面单元格,了解`int()`,`float()`,`str()`,`type()`等的用法 + + + +```{code-block} python +:linenos: + +# str -> int +X = int('ABCD', 16) +print(X) +type(X) +``` + +```{code-block} python +:linenos: + +# int -> float +a = 520 +b = float(a) +b +``` + +```{code-block} python +:linenos: + +# float -> str +a = 5.99 +b = str(a) +b +``` + +  接下来,请尝试将字符串`'520'`转化为小数,可以使用`float()` +```{code-block} python +:linenos: + +a = '520' +b = +``` + +  运行下面单元格,了解字符串的切片操作 +```{code-block} python +:linenos: + +a_string = 'Hello' + ' ' + "Women Who Code!" +print(a_string) +print("str[0] :" + a_string[0]) +print("str[2:5]:" + a_string[2:5]) # Python speak: slicing +print("str[2:] :" + a_string[2:]) +``` + +## 1.2 列表操作 + +  列表是个框,什么都可以往里装 + +```{code-block} python +:linenos: + +lis = [ "WWCode", 786 , 2.23, 'singapore', 70.2 ] +print(lis[0:3]) +type(lis) +``` + +  列表的索引,先猜猜下面这个单元格能得到什么,再运行 + +```{code-block} python +:linenos: + +lis[0][2:] +``` + +  如果我想从lis里得到'sing'应该怎么做呢 + +  列表的元素是可以修改的 +```{code-block} python +:linenos: + +lis[2] = 3.3 +lis +``` +  请尝试将列表最后一个元素更改为50 + +  列表有一个非常好用的操作,叫list comprehension,可以运行下面单元格感受一下 + +```{code-block} python +:linenos: + +symbols = '$¢£¥€¤' +codes = [ord(symbol) for symbol in symbols] +codes +``` + +  `ord()`的作用是返回符号的unicode编码 + + + +## 1.3 元组操作 + +```{code-block} python +:linenos: + +t1 = ( "WWCode", 100000 , 0.5 ) # org name, members, proportion of engineers +t2 = 'Singapore', 1160.5 +t_singleton = ('We',) # singleton +t_empty = () +print(type(t1)); print(type(t2)) +print(t_singleton); +type(t_empty) +``` + +  元组元素不可修改,尝试运行下列代码 +```{code-block} python +:linenos: + +t1[2] = 20 +``` + +## 1.4 字典操作 + +```{code-block} python +:linenos: + +dict1 = {'name':'Women Who Code Singapore', + 'org':'WWCode', + 'city':'Singapore', + 'members':1260} +print(dict1['org']) +type(dict1) +``` + +  字典元素可以更改 + +  增加元素 + +```python +# 增加元素 +dict1['rank'] = 10 +``` + + + +```python +# 获取元素 +dict1['city'] +``` + + + +```python +# 获取不知是否存在的元素 +dict1.get('org','不存在') +``` + + + +```python +dict1.get('ord','不存在') +``` + + + +## 1.5 Sets 集合 + +* Sets are a methematical concept, they are a lot like dictionaries with keys but no corresponding values. +* 跟数学的概念很相似,类似于字典的键,但没有对应的值 +* Sets are enclosed by curly braces, elements seperated by comma, '{','}'. +* 用花括弧 +* Sets do not support indexing or slicing, and do not have inherent order. +* 不支持下标应用和切片 + + + + + +```python +wwcode_asia_networks = {'Bangalore','Beijing','Chennai','Delhi','Gujarat','Hong Kong','Kuala Lumpur','Manila','Pune','Rajasthan','Shanghai','Singapore','Taipei','Tel-Aviv','Tokyo'} +type(wwcode_asia_networks) +``` + + + +```python +print(wwcode_asia_networks) +``` + + + +```python +wwcode_asia_networks[1] +``` + + + +## 1.6 运算和布尔运算 + + +```{code-block} python +:linenos: + +x = 1 + 2 # Addition +y = 3 - 4 # Subtraction +z = 5 * 6 # Multiplication +a = z / y # Division +b = z % x # Modulus +c = y ** x # Exponent +d = c // x # Floor Division +print("x:" + str(x) + " y:" + str(y) + " z:" + str(z) + + " a:" + str(a) + " b:" + str(b) + " c:" + str(c) + " d:" + str(d)) +``` + +运算符| 描述| 实例 +-| :-: | - += |简单的赋值运算符 |c = a + b 将 a + b 的运算结果赋值为 c ++= |加法赋值运算符 |c += a 等效于 c = c + a +-= |减法赋值运算符 |c -= a 等效于 c = c - a +*= |乘法赋值运算符 |c *= a 等效于 c = c * a +/= |除法赋值运算符 |c /= a 等效于 c = c / a +%= |取模赋值运算符 |c %= a 等效于 c = c % a +**= |幂赋值运算符 |c \*\*= a 等效于 c = c \*\* a +//= |取整除赋值运算符 |c //= a 等效于 c = c // a + +  布尔运算和比较运算 + +```{code-block} python +:linenos: + +print(a == b) # equals +print(a != b) # not equals +print(a > b) # greater than +print(a < b) # lesser than +print(a >= b) # greater than or equal +print(a <= b) # lesser than or equal +``` + +  Logical Operators 逻辑运算符 +  and or not + +```python +not True +``` + + + +```python +not 0 +``` + + + +```python +not 4 +``` + + + +```python +3 < 4 < 5 +``` + + + +```python +3 < 4 < 2 +``` + + + +```python +3 < 4 and 4 < 5 +``` + + + +```python +3 < 5 or 8 > 5 +``` + +```{code-block} python +:linenos: + +a_string = "Women Who Code" +print("Women" in a_string) +print("Men" not in a_string) +print(len("Women Who Code") is len(a_string)) +print(len("Hello World!") is not len(a_string)) +``` + + +```python +# 判断闰年怎么判断呢 +year = 2100 # eval(input('输入年份(四位数)')) +# 大家来试试 +``` + +  is 和 is not 运算符 与==以及!=的区别 + +  is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。 + +```{code-block} python +:linenos: + +x = 5 +y = 5 +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +help(id) +``` + +```{code-block} python +:linenos: + +id(1) +``` + +```{code-block} python +:linenos: + +id("abc") +``` + +```{code-block} python +:linenos: + +id([1, 2, 3]) +``` + +```{code-block} python +:linenos: + +x = "abcabcabcabcabcabcabcabcabcabc" +y = "abcabcabcabcabcabcabcabcabcabc" +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +# 数组比较 +x = [1, 2, 3] +y = [1, 2, 3] +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +# 元组比较 +x = (1, 2, 3) +y = (1, 2, 3) +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +# 字典比较 +x = {"id": 1, "name": "Tom", "age": 18} +y = {"id": 1, "name": "Tom", "age": 18} +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +# 集合比较 +x = set([1, 2, 3]) +y = set([1, 2, 3]) +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +```{code-block} python +:linenos: + +# 赋值后比较 +x = [1, 2, 3] +y = x +print(x == y) +print(x is y) +print(id(x)) +print(id(y)) +``` + +空值比较 +```{code-block} python +:linenos: + +none_type = None +none_type is None +``` + +## 1.A 附录 一些可能会用到的知识 +  这部分内容在使用python的过程中可能会用得上,可以逐个运行单元格感受一下~ + +### 1.A.1 Reserve Words保留字 +  The following identifiers are used as reserved words of the language, and cannot be used as ordinary identifiers. +  一些关键字是系统自带的保留字,即不能用作为标识符 + +```{code-block} python +:linenos: + +import keyword +keyword.kwlist +``` + +### 1.A.2 build-in functions内置函数 +  这些函数不能作为变量名,可以作为函数直接调用,如:`print()` `input()` +`dir(\__builtins__)`可以看到内置函数列表 + +```{code-block} python +:linenos: + +dir(__builtins__) +``` + +```{code-block} python +:linenos: + +aa = 3 +aaaa = 5 +dir() #python内置函数;不带参数时,返回当前范围内的变量、方法和定义的类型列表 + #带参数是,返回参数的属性、方法列表 +``` + +```{code-block} python +:linenos: + +help(dir) +``` + +```{code-block} python +:linenos: + +help(print) # 内置函数,查看函数或模块用途的详细说明 +``` + +  Hit the **STOP** square button in the button ribbons/bar on top to continue to next cell. + +```{code-block} python +:linenos: + +#help(str) +import copy +help(copy.copy) +``` + + + +本篇整理:肖桐 \ No newline at end of file