python中变量不直接存储值_零基础学python看完这篇文章你的python基础就差不多了干货2...

原标题:零基础学python看完这篇文章你的python基础就差不多了干货2

3. 运算符

3.1 算数运算符

是完成基本的算术运算使用的符号,用来处理四则运算,而“+”和“*”还可以用来处理字符串。

c95eb337cf0445259a41886211d6a6e1.jpeg

3.2 比较(关系)运算符

200385f19bdf47d886e24a225e7506a5.jpeg

Python 2.x 中判断 不等于 还可以使用 <> 运算符

!= 在 Python 2.x 中同样可以用来判断 不等于

3.3 赋值运算符

在 Python 中,使用 = 可以给变量赋值。在算术运算时,为了简化代码的编写,Python 还提供了一系列的 与 算术运算符 对应的 赋值运算符,注意:赋值运算符中间不能使用空格。

bdb878046abf41c081701c429830bd5d.jpeg

3.4 身份运算符

身份运算符比较两个对象的内存位置。常用的有两个身份运算符,如下所述:

be2c080f1bb743a9aef68656e4c79870.jpeg

辨析

is 用于判断 两个变量引用的对象是否为同一个

== 用于判断 引用变量的值 是否相等

3.5 成员运算符

Python成员运算符测试给定值是否为序列中的成员。 有两个成员运算符,如下所述:

fca8123af06d4ebd8aa2486d47e784bc.jpeg

3.6 逻辑运算符

f8955bf4186d4442bce42290f9de7416.jpeg

3.7 运算符优先级

以下表格的算数优先级由高到最低顺序排列:

e6dc99b33ad74ccd9dcae553554c95a6.jpeg

72c42760dc534569b4236c87a5e93c5e.jpeg

操作系统会首先让 CPU 把 Python 解释器 的程序复制到 内存 中

Python 解释器 根据语法规则,从上向下 让 CPU 翻译 Python 程序中的代码

CPU 负责执行翻译完成的代码

Python 的解释器有多大?

执行以下终端命令可以查看 Python 解释器的大小

# 1. 确认解释器所在位置

$ which python

# 2. 查看 python 文件大小(只是一个软链接)

$ ls -lh /usr/bin/python

# 3. 查看具体文件大小

$ ls -lh /usr/bin/python2.7

4. 变量

4.1 变量定义

在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建

可以用 其他变量的计算结果 来定义变量

变量名 只有在 第一次出现 才是 定义变量

变量名 = 值

使用交互式方式,如果要查看变量内容,直接输入变量名即可,不需要使用 print 函数

使用解释器执行,如果要输出变量的内容,必须要要使用 print 函数

4.2 变量的类型

在 Python 中定义变量是 不需要指定类型(在其他很多高级语言中都需要),Python 可以根据 = 等号右侧的值,自动推导出变量中存储数据的类型

数据类型可以分为 数字型 和 非数字型数字型

整型 (int):Python3中的所有整数都表示为长整数。 因此,长整数没有单独的数字类型。

浮点型(float)

布尔型(bool) :真 True 非 0 数 —— 非零即真,假 False 0。

复数型 (complex):复数是由x + yj表示的有序对的实数浮点数组成,其中x和y是实数,j是虚数单位。

非数字型:有些运算符还支持这些数据类型,详见4.4.5.3 运算符。

字符串(str):加号(+)是字符串连接运算符,星号(*)是重复运算符。

列表(list)

元组(tuple)

字典(dict)

提示:在 Python 2.x 中,整数 根据保存数值的长度还分为:

int(整数)

long(长整数)

使用 type 函数可以查看一个变量的类型

In [1]: type(name)

<补>不同类型变量之间的计算

数字型变量 之间可以直接计算

在 Python 中,两个数字型变量是可以直接进行 算数运算的

如果变量是 bool 型,在计算时

True 对应的数字是 1

False 对应的数字是 0

字符串变量 之间使用 + 拼接字符串

字符串变量 可以和 整数 使用 * 重复拼接相同的字符串

数字型变量 和 字符串 之间 不能进行其他计算

<补>从键盘获取输入信息:input

在 Python 中可以使用 input 函数从键盘等待用户的输入

用户输入的 任何内容 Python 都认为是一个 字符串

字符串变量 = input("提示信息:")

<补>类型转换函数

1c59b85b3e7d41099162d77bbe5e6757.jpeg

price = float(input("请输入价格:"))

<补>格式化输出:print

如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符

% 被称为 格式化操作符,专门用于处理字符串中的格式

包含 % 的字符串,被称为 格式化字符串

% 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符

d7ff913eaafb49d6b2a41daee3bf3a7a.jpeg

语法格式如下:

print("格式化字符串" % 变量1)

print("格式化字符串" % (变量1, 变量2...))

4.3 变量的命名

4.3.1 标识符和关键字

标示符就是程序员定义的 变量名、函数名

标示符可以由 字母、下划线 和 数字 组成

不能以数字开头

不能与关键字重名

关键字 就是在 Python 内部已经使用的标识符

关键字 具有特殊的功能和含义

开发者 不允许定义和关键字相同的名字的标识符

通过以下命令可以查看 Python 中的关键字

In [1]: import keyword

In [2]: print(keyword.kwlist)

4.3.2 变量的命名规则

命名规则 可以被视为一种 惯例,并无绝对与强制

目的是为了 增加代码的识别和可读性

注意 Python 中的 标识符 是 区分大小写的

在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格

在 Python 中,如果 变量名 需要由 二个 或 多个单词 组成时,可以按照以下方式命名:每个单词都使用小写字母,单词与单词之间使用 _下划线 连接,例如:first_name、last_name、qq_number、qq_password。

当然,还有驼峰命名法:

小驼峰式命名法:第一个单词以小写字母开始,后续单词的首字母大写,例如:firstName、lastName。

大驼峰式命名法,每一个单词的首字母都采用大写字母,例如:FirstName、LastName、CamelCase 。

4.4 高级变量类型

在 Python 中,所有 非数字型变量 都支持以下特点:

1. 都是一个 序列 sequence,也可以理解为 容器

2. 取值 []

3. 遍历 for in

4. 计算长度len、最大/最小值max/min、比较、删除del

5. 链接 + 和 重复 *

6. 切片

4.4.1 列表(list)

List(列表) 是 Python 中使用 最频繁 的数据类型,在其他语言中通常叫做 数组,专门用于存储 一串 信息,列表用 [] 定义,数据 之间使用 , 分隔,列表的 索引 从 0 开始。

索引 就是数据在 列表 中的位置编号,索引 又可以被称为 下标

注意:从列表中取值时,如果 超出索引范围,程序会报错

name_list = ["zhangsan", "lisi", "wangwu"]

270b83208ce14b3ebf35bfcb548c3c70.jpeg

<补>del 关键字

使用 del 关键字(delete) 同样可以删除列表中元素

del 关键字本质上是用来 将一个变量从内存中删除的

如果使用 del 关键字将变量从内存中删除,后续的代码就不能再使用这个变量了

In [1]: l = [1,2,3,4]

In [2]: del l[1]

In [3]: l[1]

Out[3]: 3

在日常开发中,要从列表删除数据,建议 使用列表提供的方法

<补>函数与方法

函数 封装了独立功能,可以直接调用

函数名(参数)

函数需要死记硬背

方法 和函数类似,同样是封装了独立的功能

方法 需要通过 对象 来调用,表示针对这个 对象 要做的操作

对象.方法名(参数)

在变量后面输入 .,然后选择针对这个变量要执行的操作,记忆起来比函数要简单很多

<补>循环遍历

遍历 就是 从头到尾 依次 从 列表 中获取数据,在 循环体内部 针对 每一个元素,执行相同的操作。

在 Python 中为了提高列表的遍历效率,使用 for 就能够实现迭代遍历。

# for 循环内部使用的变量 in 列表

for name in name_list:

循环内部针对列表元素进行操作

print(name)

1ca7660d55dd4e78938df3cba357a734.jpeg

for-in循环流程图

尽管 Python 的 列表 中可以 存储不同类型的数据

但是在开发中,更多的应用场景是

列表 存储相同类型的数据

通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作

4.4.2 元组(tuple)

Tuple(元组)与列表类似,不同之处在于元组的 元素不能修改元组 表示多个元素组成的序列

元组 在 Python 开发中,有特定的应用场景

用于存储 一串 信息,数据 之间使用 , 分隔

元组用 () 定义,元组的 索引 从 0 开始,索引 就是数据在 元组 中的位置编号。

info_tuple = ("zhangsan", 18, 1.75)

创建空元组:

info_tuple = ()

元组中 只包含一个元素 时,需要 在元素后面添加逗号:

info_tuple = (50, )

9df54d6ea840426686ffa0eec8c05630.jpeg

元组示意图

在 Python 中,可以使用 for 循环遍历所有非数字型类型的变量:列表、元组、字典以及 字符串

提示:在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多

在开发中,更多的应用场景是:

函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据

格式字符串,格式化字符串后面的 () 本质上就是一个元组

让列表不可以被修改,以保护数据安全

<补>元组和列表之间的转换

使用 list 函数可以把元组转换成列表

list(元组)

使用 tuple 函数可以把列表转换成元组

tuple(列表)

4.4.3 字典(dict)

dict(字典) 是 除列表以外 Python 之中 最灵活 的数据类型。

字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体 的相关信息

和列表的区别:

列表 是 有序 的对象集合

字典 是 无序 的对象集合

字典用 {} 定义。

字典使用 键值对 存储数据,键值对之间使用逗号 , 分隔:

键 key 是索引

值 value 是数据

键 和 值 之间使用冒号 : 分隔

键必须是唯一的

值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组

xiaoming = {"name": "小明",

"age": 18,

"gender": True,

"height": 1.75}

9dfcf68e7ec64b80b822268ccf4e82cc.jpeg

字典的遍历 就是 依次 从 字典 中获取所有键值对:

# for 循环内部使用的 `key 的变量` in 字典

for k in xiaoming:

print("%s: %s" % (k, xiaoming[k]))

提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多

尽管可以使用 for in 遍历 字典

但是在开发中,更多的应用场景是:

使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息

将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理

card_list = [{"name": "张三",

"qq": "12345",

"phone": "110"},

{"name": "李四",

"qq": "54321",

"phone": "10086"}

]

4.4.4 字符串(str)

字符串 就是 一串字符,是编程语言中表示文本的数据类型

在 Python 中可以使用 一对双引号 " 或者 一对单引号 ' 定义一个字符串

虽然可以使用 " 或者 ' 做字符串的转义,但是在实际开发中:

如果字符串内部需要使用 ",可以使用 ' 定义字符串

如果字符串内部需要使用 ',可以使用 " 定义字符串

可以使用 索引 获取一个字符串中 指定位置的字符,索引计数从 0 开始

也可以使用 for 循环遍历 字符串中每一个字符

大多数编程语言都是用 " 来定义字符串

string = "Hello Python"for c in string: print(c)

efecf54b58fd4e32b25374a341328fd3.jpeg

提示:在 python 中对字符串操作,内置提供的方法足够多,使得在开发时,能够针对字符串进行更加灵活的操作!应对更多的开发需求!

1) 判断类型 - 9

869fd65dcaeb404da3e4676a59be3315.jpeg

2) 查找和替换 - 7

d40921163daf49218101ca27bdad7105.jpeg

3) 大小写转换 - 5

d50b3204029a4a378ae0c222c380b2dc.jpeg

4) 文本对齐 - 3

742a08bf72a34a4480b7761897759b71.jpeg

5) 去除空白字符 - 3

503057cfbe6d41e790237a53fc6770f0.jpeg

6) 拆分和连接 - 5

fe530958b8f247558869af6eed44ff95.jpeg

<补>字符串的切片

切片 方法适用于 字符串、列表、元组切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串

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

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

b1d120b6c21a4acdaa84b56f3577c04b.jpeg

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

注意:

指定的区间属于 左闭右开 型 [开始索引, 结束索引) => 开始索引 <= 范围 < 结束索引从 起始 位开始,到 结束位的前一位 结束(不包含结束位本身)

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

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

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

<补>索引的顺序和倒序

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

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

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])

4.4.5 公共方法和变量的高级应用

4.4.5.1 内置函数

Python 包含了以下内置函数:

63c2af847ad4466e9dee102077735cd0.jpeg

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

4.4.5.2 切片

ac578aca87174d2e9c0e1554e1d5630e.jpeg

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

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

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

4.4.5.3 运算符

eb3a3df713b04f849291c2e9115d19f5.jpeg

注意

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

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

4.4.5.4 内置函数完整的 for 循环语法

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

for 变量 in 集合:

循环体代码

else:

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

应用场景:

在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典

需求:要判断 某一个字典中 是否存在 指定的 值

如果 存在,提示并且退出循环

如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示

4.4.5.5 变量的引用

变量 和 数据 都是保存在 内存 中的

在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引用 传递的

在 Python 中:变量 和 数据 是分开存储的,数据 保存在内存中的一个位置,变量 中保存着数据在内存中的地址,就叫做 引用,使用 id() 函数可以查看变量中保存数据所在的 内存地址。

注意:如果变量已经被定义,当给一个变量赋值的时候,本质上是 修改了数据的引用

变量 不再 对之前的数据引用

变量 改为 对新赋值的数据引用

在 Python 中,变量的名字类似于 便签纸 贴在 数据 上:

定义一个整数变量 a,并且赋值为 1

在 Python 中,函数的 实参/返回值 都是是靠 引用 来传递来的

3366839024c6436e872b8fbb4340a5af.jpeg

结果

fcb27f41926a40df96141638dbf829b0.jpeg

结果

4.4.5.6 可变和不可变类型

不可变类型,内存中的数据不允许被修改:

数字类型 int, bool, float, complex, long(2.x)

字符串 str

元组 tuple

可变类型,内存中的数据可以被修改:

列表 list

字典 dict

注意:字典的 key 只能使用不可变类型的数据

注意

可变类型的数据变化,是通过 方法 来实现的

如果给一个可变类型的变量,赋值了一个新的数据,引用会修改变量 不再 对之前的数据引用

变量 改为 对新赋值的数据引用

<补>哈希 (hash)

Python 中内置有一个名字叫做 hash(o) 的函数:接收一个 不可变类型 的数据作为 参数,返回 结果是一个 整数。

哈希 是一种 算法,其作用就是提取数据的 特征码(指纹),相同的内容 得到 相同的结果,不同的内容 得到 不同的结果。

在 Python 中,设置字典的 键值对 时,会首先对 key 进行 hash 已决定如何在内存中保存字典的数据,以方便 后续 对字典的操作:增、删、改、查:键值对的 key 必须是不可变类型数据,键值对的 value 可以是任意类型的数据。

4.4.5.7 局部变量和全局变量

局部变量 是在 函数内部 定义的变量,只能在函数内部使用;函数执行结束后,函数内部的局部变量,会被系统回收;不同的函数,可以定义相同的名字的局部变量,但是 彼此之间 不会产生影响;局部变量一般临时 保存 函数内部需要使用的数据。

全局变量 是在 函数外部定义 的变量(没有定义在某一个函数内),所有函数 内部 都可以使用这个变量。

提示:在其他的开发语言中,大多 不推荐使用全局变量 —— 可变范围太大,导致程序不好维护!

注意:函数执行时,需要处理变量时 会:

首先 查找 函数内部 是否存在 指定名称 的局部变量,如果有,直接使用

如果没有,查找 函数外部 是否存在 指定名称 的全局变量,如果有,直接使用

如果还没有,程序报错!

注意:函数不能直接修改全局变量的引用,如果要修改,必须要用global声明该变量是全局变量。

26dfd12b62274b3e9d9419a86be252fd.jpeg

在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!

注意:为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:全局变量名前应该增加 g_ 或者 gl_ 的前缀。

5. 判断(分支)

5.1 if 语句语法

1、if 判断语句基本语法:

if 要判断的条件: 条件成立时,要做的事情 ……

注意:代码的缩进为一个 tab 键,或者 4 个空格 —— 建议使用空格

在 Python 开发中,Tab 和空格不要混用!

2、如果需要在 不满足条件的时候,做某些事情,该如何做呢?

if 要判断的条件: 条件成立时,要做的事情 ……else: 条件不成立时,要做的事情 ……

在程序开发中,通常 在判断条件时,会需要同时判断多个条件,只有多个条件都满足,才能够执行后续代码,这个时候需要使用到 逻辑运算符。

Python 中的 逻辑运算符 包括:与 and/或 or/非 not 三种

条件1 and 条件2 :两个条件同时满足,返回 True

条件1 or 条件2:两个条件只要有一个满足,返回 True

not 条件:非,不是

3、如果希望 再增加一些条件,条件不同,需要执行的代码也不同 时,就可以使用 elif :

if 条件1: 条件1满足执行的代码 ……elif 条件2: 条件2满足时,执行的代码 ……elif 条件3: 条件3满足时,执行的代码 ……else: 以上条件都不满足时,执行的代码 ……

注意

elif 和 else 都必须和 if 联合使用,而不能单独使用

可以将 if、elif 和 else 以及各自缩进的代码,看成一个 完整的代码块

4、在开发中,使用 if 进行条件判断,如果希望 在条件成立的执行语句中 再 增加条件判断,就可以使用 if 的嵌套:

if 条件 1: 条件 1 满足执行的代码 …… if 条件 1 基础上的条件 2: 条件 2 满足时,执行的代码 …… # 条件 2 不满足的处理 else: 条件 2 不满足时,执行的代码 # 条件 1 不满足的处理else: 条件1 不满足时,执行的代码 ……

5.2 if语句的应用

5.2.1 随机数的处理

在 Python 中,要使用随机数,首先需要导入 随机数 的 模块 —— “工具包”

import random

导入模块后,可以直接在 模块名称 后面敲一个 . 然后按 Tab 键,会提示该模块中包含的所有函数

random.randint(a, b) ,返回 [a, b] 之间的整数,包含 a 和 b

例如:

random.randint(12, 20) # 生成的随机数n: 12 <= n <= 20

random.randint(20, 20) # 结果永远是 20

random.randint(20, 10) # 该语句是错误的,下限必须小于上限

5.2.2 石头剪刀布

# 导入随机工具包# 注意:在导入工具包的时候,应该将导入的语句,放在文件的顶部# 因为,这样可以方便下方的代码,在任何需要的时候,使用工具包中的工具import random# 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)player = int(input("请输入您要出的拳 石头(1)/剪刀(2)/布(3):"))# 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能computer = random.randint(1, 3)print("玩家选择的拳头是 %d - 电脑出的拳是 %d" % (player, computer))# 比较胜负# 1 石头 胜 剪刀# 2 剪刀 胜 布# 3 布 胜 石头# if (()# or ()# or ()):if ((player == 1 and computer == 2) or (player == 2 and computer == 3) or (player == 3 and computer == 1)): print("欧耶,电脑弱爆了!")# 平局elif player == computer: print("真是心有灵犀啊,再来一盘")# 其他的情况就是电脑获胜else: print("不服气,我们决战到天明!")

6. 循环

6.1 程序执行的三大流程

在程序开发中,一共有三种流程方式:

顺序 —— 从上向下,顺序执行代码

分支 —— 根据条件判断,决定执行代码的 分支

循环 —— 让 特定代码 重复 执行

c1d072395e62417396aa787512d1385b.jpeg

程序执行的三大流程

6.2 while 循环基本使用

while 语句基本语法:

初始条件设置 —— 通常是重复执行的 计数器while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做的事情3 ...(省略)... 处理条件(计数器 + 1)

由于程序员的原因,忘记 在循环内部 修改循环的判断条件,导致循环持续执行,程序将陷入死循环而无法终止!

计数器 +1 :可以通过赋值运算符简化代码的编写。

常见的计数方法有两种,可以分别称为:

自然计数法(从 1 开始)—— 更符合人类的习惯

程序计数法(从 0 开始)—— 几乎所有的程序语言都选择从 0 开始计数

因此,大家在编写程序时,应该尽量养成习惯:除非需求的特殊要求,否则 循环 的计数都从 0 开始

6.3 break 和 continue

break 和 continue 是专门在循环中使用的关键字

break :某一条件满足时,退出循环,不再执行后续的代码

continue :某一条件满足时,不执行后续的代码直接进入下一次循环

break 和 continue 只针对 当前所在循环 有效

6.4 while 循环嵌套

while 嵌套就是:while 里面还有 while,每一次循环中还要做完一个循环。

while 条件 1:

条件满足时,做的事情1

条件满足时,做的事情2

条件满足时,做的事情3

...(省略)...

while 条件 2:

条件满足时,做的事情1

条件满足时,做的事情2

条件满足时,做的事情3

...(省略)...

处理条件 2

处理条件 1

示例:

"""打印 9 行小星星:*********************************************"""# 定义起始行row = 1# 最大打印 9 行while row <= 9: # 定义起始列 col = 1 # 最大打印 row 列 while col <= row: # end = "",表示输出结束后,不换行 # " " 可以在控制台输出一个制表符,协助在输出文本时对齐 print("%d * %d = %d" % (col, row, row * col), end=" ") # 列数 + 1 col += 1 # 一行打印完成的换行 print("") # 行数 + 1 row += 1

<补>字符串中的转义字符

在控制台输出一个 制表符,协助在输出文本时 垂直方向 保持对齐

在控制台输出一个 换行符

制表符 的功能是在不使用表格的情况下在 垂直方向 按列对齐文本

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值