专业编程基础技术教程

网站首页 > 基础教程 正文

20_ Python基础到实战一飞冲天(二)-python基础(二十)

ccvgpt 2024-12-12 11:10:57 基础教程 2 ℃

# 20_ Python基础到实战一飞冲天(二)-python基础(二十)--字符串与公共方法

## 一、字符串-07-文本对齐方法演练

20_ Python基础到实战一飞冲天(二)-python基础(二十)

### 1、python字符串文本对齐 示例代码:dzs_18_字符串文本对齐.py

```python

# dzs_18_字符串文本对齐.py(05_高级数据类型)

# string.ljust(width) | 返回一个原字符串左对齐,

# 并使用空格填充至长度 width 的新字符串。

# string.rjust(width) | 返回一个原字符串右对齐,

# 并使用空格填充至长度 width 的新字符串。

# string.center(width) | 返回一个原字符串居中,

# 并使用空格填充至长度 width 的新字符串。

# 假设:以下内容是从网络上抓取的

# 要求:顺序并且居中对齐(右对齐、左对齐)输出以下内容。

poem = ["登鹳雀楼",

"王之涣",

"白日依山尽",

"黄河入海流",

"欲穷千里目",

"更上一层楼"]

# -默认遍历输出

for poem_str in poem:

print(poem_str)

print("=" * 30)

# 文本居中对齐--默认英文空格

for poem_str in poem:

# 默认是英文符号的10个空格

print("|%s|" % poem_str.center(10))

print("=" * 30)

# 文本居中对齐--增加中文空格

for poem_str in poem:

# 中文符号(全角)的10个空格

print("|%s|" % poem_str.center(10, " "))

print("=" * 30)

# 文本右对齐

for poem_str in poem:

# 中文符号(全角)的10个空格

print("|%s|" % poem_str.rjust(10, " "))

print("=" * 30)

# 文本左对齐

for poem_str in poem:

# 中文符号(全角)的10个空格

print("|%s|" % poem_str.ljust(10, " "))

print("=" * 30)

```

### 2、示例:

## 二、字符串-08-去除空白字符

### 1、python字符串文本去除空白字符 示例代码:dzs_19_字符串文本去除空白字符.py

```python

# dzs_19_字符串文本去除空白字符.py(05_高级数据类型)

# string.lstrip() : 截掉 string 左边(开始)的空白字符。

# string.rstrip() : 截掉 string 右边(末尾)的空白字符。

# string.strip() : 截掉 string 左右两边的空白字符。

# 假设:以下内容是从网络上抓取的

# 要求:顺序并且居中对齐(去除空白字符)输出以下内容。

poem = ["登鹳雀楼\n",

"王之涣\n",

"白日依山尽\t",

"黄河入海流\n\t",

"欲穷千里目",

"更上一层楼"]

# 文本居中对齐--增加中文空格

for poem_str in poem:

# 中文符号(全角)的10个空格

print("|%s|" % poem_str.center(10, " "))

print("=" * 30)

# 文本居中对齐--增加中文空格(除空白字符)

for poem_str in poem:

# 除空白字符

# 中文符号(全角)的10个空格

print("|%s|" % poem_str.strip().center(10, " "))

print("=" * 30)

```

### 2、示例:

## 三、字符串-09-拆分和拼接字符串

### 1、python拆分和拼接字符串示例代码:dzs_20_拆分和拼接字符串.py

```python

# dzs_20_拆分和拼接字符串.py(05_高级数据类型)

# 假设:以下内容是从网络上抓取的

# 要求:

# 1、将空白字符全部去掉。

# 2、再使用 " " 作为分隔符,拼接成一个整齐的字符串。

"""

string.split(str="", num) : 以 str 为分隔符拆分 string,

如果 num 有指定值,则仅分隔 num + 1 个子字符串,

str 默认包含 '\r', '\t', '\n' 和空格

string.join(seq) : 以 string 作为分隔符,将 seq 中所有的元素

(的字符串表示)合并为一个新的字符串

"""

poem_str = "登鹳雀楼\t 王之涣\t 白日依山尽\t\n 黄河入海流\t\t 欲穷千里目\n更上一层楼"

print(poem_str)

print("=" * 30)

# 1.拆分字符串

poem_list = poem_str.split()

print(poem_list)

print("=" * 30)

# 2.合并字符串

result = " ".join(poem_list)

print(result)

print("=" * 30)

```

### 2、示例:

## 四、字符串-10-切片概念和语法以及倒序索引

### 1、字符串的切片

1)**切片** 方法适用于 **字符串**、**列表**、**元组**。


2)**切片** 使用 **索引值** 来限定范围,从一个大的 **字符串** 中 **切出** 小的 **字符串**。


3)**列表** 和 **元组** 都是 **有序** 的集合,都能够 **通过索引值** 获取到对应的数据。


4)**字典** 是一个 **无序** 的集合,是使用 **键值对** 保存数据。

### 2、**切片注意事项**:

1)指定的区间属于 **左闭右开** 型 `[开始索引, 结束索引)` => `开始索引 >= 范围 < 结束索引`

* 从 `起始` 位开始,到 **`结束`位的前一位** 结束(**不包含结束位本身**)。

2)从头开始,**开始索引** **数字可以省略,冒号不能省略**。

3)到末尾结束,**结束索引** **数字可以省略,冒号不能省略**。

4)步长默认为 `1`,如果连续切片,**数字和冒号都可以省略**。

### 3、索引的顺序和倒序

1)在 Python 中不仅支持 **顺序索引**,同时还支持 **倒序索引**。

2)所谓倒序索引就是 **从右向左** 计算索引,最右边的索引值是 **-1**,依次递减。

### 4、字符串索引示意图

```python

字符串[开始索引:结束索引:步长]

```

## 五、字符串-11-字符串切片演练

### 1、**演练需求**

* 1. 截取从 2 ~ 5 位置 的字符串

* 2. 截取从 2 ~ `末尾` 的字符串

* 3. 截取从 `开始` ~ 5 位置 的字符串

* 4. 截取完整的字符串

* 5. 从开始位置,每隔一个字符截取字符串

* 6. 从索引 1 开始,每隔一个取一个

* 7. 截取从 2 ~ `末尾 - 1` 的字符串

* 8. 截取字符串末尾两个字符

* 9. 字符串的逆序(面试题)

### 2、演练**答案**

```python

num_str = "0123456789"

# 1. 截取从 2 ~ 5 位置 的字符串

print(num_str[2:6])

# 2. 截取从 2 ~ `末尾` 的字符串

print(num_str[2:])

# 3. 截取从 `开始` ~ 5 位置 的字符串

print(num_str[:6])

# 4. 截取完整的字符串

print(num_str[:])

# 5. 从开始位置,每隔一个字符截取字符串

print(num_str[::2])

# 6. 从索引 1 开始,每隔一个取一个

print(num_str[1::2])

# 倒序切片

# -1 表示倒数第一个字符

print(num_str[-1])

# 7. 截取从 2 ~ `末尾 - 1` 的字符串

print(num_str[2:-1])

# 8. 截取字符串末尾两个字符

print(num_str[-2:])

# 9. 字符串的逆序(面试题)

print(num_str[::-1])

```

### 3、演练示例

## 六、公共方法-01-内置函数长度、删除、最大、最小、比较

### 1、公共方法:Python 内置函数:

1)Python 包含了以下内置函数:

函数

描述

备注

len(item)

计算容器中元素个数


del(item)

删除变量

del 有两种方式

max(item)

返回容器中元素最大值

如果是字典,只针对 key 比较

min(item)

返回容器中元素最小值

如果是字典,只针对 key 比较

cmp(item1, item2)

比较两个值,-1 小于/0 相等/1 大于

Python 3.x 取消了 cmp 函数

2)**注意**

**字符串** 比较符合以下规则: "0" < "A" < "a"。

### 2、在 ipython3中对python内置函数(del, max, min, cmp)演练

```python

In [1]: a = [1, 3, 5, 7, 9]

In [2]: del a[1]

In [3]: a

Out[3]: [1, 5, 7, 9]

In [4]: del(a[1])

In [5]: a

Out[5]: [1, 7, 9]

In [6]: del(a)

In [7]: a

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-7-60b725f10c9c> in <module>()

----> 1 a

NameError: name 'a' is not defined

In [8]: t_str = "asdfghjklzxcvbnmqwertyuiop"

In [9]: max(t_str)

Out[9]: 'z'

In [10]: min(t

%%time %tb %timeit try type

%%timeit %time t_str tuple

In [10]: min(t_str)

Out[10]: 'a'

In [11]: t_list = [2, 5, 4, 8, 1, 3, 9]

In [12]: max(t_list)

Out[12]: 9

In [13]: min(t_list)

Out[13]: 1

In [14]: t_dict = {"a": "z", "b": "y", "c": "x"}

In [15]: max(t_dict)

Out[15]: 'c'

In [16]: min(t_dict)

Out[16]: 'a'

In [17]: cmp("1", "2")

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

<ipython-input-17-1d257b89c242> in <module>()

----> 1 cmp("1", "2")

NameError: name 'cmp' is not defined

In [18]: "1" < "2"

Out[18]: True

In [19]: "1" > "2"

Out[19]: False

In [20]: "aaa" < "bbb"

Out[20]: True

In [21]: [1,2,3] < [1,2,4]

Out[21]: True

In [22]: (1,2,3) < (2,1,1)

Out[22]: True

In [23]: {"a":"z"} < {"b":"a"}

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-23-0109ec4e9c47> in <module>()

----> 1 {"a":"z"} < {"b":"a"}

TypeError: unorderable types: dict() < dict()

```

### 3、示例:

## 七、公共方法-02-切片

### 1、切片:

1)切片是使用 **索引值** 来限定范围,它适合于字符串、列表、元组,但不能用于字典。

2)因为**字符串**、**列表** 和 **元组** 都是 **有序** 的集合,都能够 **通过索引值** 获取到对应的数据。而**字典** 是一个 **无序** 的集合,是使用 **键值对** 保存数据。

### 2、切片示例代码:

```python

In [1]: [0,1,2,3,4][1:3]

Out[1]: [1, 2]

In [2]: (0,1,2,3,4)[1:3]

Out[2]: (1, 2)

In [3]: {"a":"a","b":"b"}[0:1]

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-3-64461804ba50> in <module>()

----> 1 {"a":"a","b":"b"}[0:1]

TypeError: unhashable type: 'slice'

```

### 3、示例:

## 八、公共方法-03-算数运算符及对比列表追加方法

### 1、运算符在字符串、列表、元组、字典中的应用

运算符

Python 表达式

结果

描述

支持的数据类型

+

[1, 2] + [3, 4]

[1, 2, 3, 4]

合并

字符串、列表、元组

*

["Hi!"] * 4

['Hi!', 'Hi!', 'Hi!', 'Hi!']

重复

字符串、列表、元组

in

3 in (1, 2, 3)

True

元素是否存在

字符串、列表、元组、字典

not in

4 not in (1, 2, 3)

True

元素是否不存在

字符串、列表、元组、字典

> >= == < <=

(1, 2, 3) < (2, 2, 3)

True

元素比较

字符串、列表、元组


### 2、**注意**

* `in` 在对 **字典** 操作时,判断的是 **字典的键**

* `in` 和 `not in` 被称为 **成员运算符**

### 3、在 ipython3中 演示运算符在字符串、列表、元组、字典中的应用 示例代码

```python

In [1]: [1,2,3] * 5

Out[1]: [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]

In [2]: (1,2,3) * 3

Out[2]: (1, 2, 3, 1, 2, 3, 1, 2, 3)

In [3]: {"a":"z"} * 3

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-3-db1c47d901b6> in <module>()

----> 1 {"a":"z"} * 3

TypeError: unsupported operand type(s) for *: 'dict' and 'int'

In [4]: "hello " + "python"

Out[4]: 'hello python'

In [5]: (1,2) + (3,4)

Out[5]: (1, 2, 3, 4)

In [6]: [1,2,3] + [4,5,6]

Out[6]: [1, 2, 3, 4, 5, 6]

In [7]: t_list = [1,2,3]

In [8]: t_list.extend([4,5,6])

In [9]: t_list

Out[9]: [1, 2, 3, 4, 5, 6]

In [10]: t_list.append(0)

In [11]: t_list

Out[11]: [1, 2, 3, 4, 5, 6, 0]

In [12]: t_list([8,9])

---------------------------------------------------------------------------

TypeError Traceback (most recent call last)

<ipython-input-12-673229cd2fa1> in <module>()

----> 1 t_list([8,9])

TypeError: 'list' object is not callable

In [13]: t_list.append([8,9])

In [14]: t_list

Out[14]: [1, 2, 3, 4, 5, 6, 0, [8, 9]]

```

### 4、示例:

## 九、公共方法-04-成员运算符

### 1、成员运算符 in 和 not in

1)成员运算符用于 **测试** 序列中是否包含指定的 **成员**。

2)in :如果在指定的序列中找到值返回 True,否则返回 False。

如: `3 in (1, 2, 3)` 返回 `True` 。

3)not in :如果在指定的序列中没有找到值返回 True,否则返回 False。

如: `3 not in (1, 2, 3)` 返回 `False` 。

4)注意:在对 **字典** 操作时,判断的是 **字典的键**。

### 2、在 ipython3中演示 成员运算符 in 和 not in 示例代码:

```python

In [1]: "a" in "abcde"

Out[1]: True

In [2]: "a" not in "abcde"

Out[2]: False

In [3]: 1 in [0,1,3]

Out[3]: True

In [4]: 1 not in [0,1,3]

Out[4]: False

In [5]: 1 in (1,2,3)

Out[5]: True

In [6]: 1 not in (1,2,3)

Out[6]: False

In [7]: "a" in {"a": "laowang"}

Out[7]: True

In [8]: "laowang" in {"a": "laowang"}

Out[8]: False

```

### 3、示例

## 十、公共方法-05-完整的for循环-for else

### 1、完整的 for 循环语法

* 在 `Python` 中完整的 `for 循环` 的语法如下:

```python

for 变量 in 集合:


循环体代码

else:

没有通过 break 退出循环,循环结束后,会执行的代码

```

### 2、完整的 for 循环语法 示例代码:

```python

# dzs_21_完整的for循环语法演练.py(05_高级数据类型)

for num in [1,3,5,7,9]:

print(num)

if num == 5:

break

else:

# 如果循环体内使用break退出循环,else下方代码就不会执行

print("会执行此行代码吗?")

print("循环结束")

```

### 3、示例:

`上一节关联链接请点击:`

19_Python基础到实战一飞冲天(二)-python基础(十九)--字典

Tags:

最近发表
标签列表