Python基本语法
算数运算符
运算符 描述 实例 + 加 - 减 * 乘 / 除 9 / 2 = 4.5 // 取整除 9 // 2 = 4 % 取余数 9 % 2 = 1 ** 幂 2 ** 3 = 8 在Python中
*
还可以用于字符串,计算结果就是字符串重复指定次数的结果1
2In [1]:"-" * 5
Out[1]"-----"
变量类型
数字型
整型 int
浮点型 float
布尔型 bool
True
False
复数型 complex
主要用于科学计算,例如:平面场问题、波动问题、电容电感等问题
非数字型
- 字符串
- 列表
- 元组
- 字典
提示:在Python2.x中,整数还可分为
int
和long
使用
type
函数可以查看一个变量类型- In [1]: type(name)
字符串之间可以用
+
进行拼接字符串可以和整数使用*重复拼接相同的字符串
数字型变量和字符串之间不能进行其他运算
变量的输入和输出
input()
字符串变量 = input("提示信息:")
input()
输入的内容都认为是一个字符串
类型转换函数
int(x)
将x转换为一个整数float(x)
将x装换为一个浮点数
变量的格式化输出
格式化字符 含义 %s 字符串 %d 有符号十进制整数, %06
表示输出的整数显示6位数,不足的地方用0补全%f 浮点数, %.02f
表示小数点后只显示两位%% 输出% print("Name:%s,Age:%d"% (name, age))
,name
变量中为姓名信息,age
变量中为年龄信息print("abc", end = "a")
在默认情况下,print输出后会自动在末尾添加换行,利用end可用end内容替代换行print("")
在一行输出后添加换行
转义字符
转义字符 描述 \\ 反斜杠符号 \` 单引号 \\“ 双引号 \n 换行 \t 横向制表符 \r 回车
函数的基本使用
函数的定义
1
2
3def function():
# 函数内容
print("hello")定义的函数只有被调用才会执行
模块
- 每一个以扩展名
.py
为结尾的python源文件都是一个模块 - 导入模块需要
import
- 模块名也是标识符,需要遵循标识符命名规则
.pyc
表示编译过文件
列表
查看列表
List
能使用的功能- 在ipython3中操作:
1
2In [1]:name_list.(+tab键)
name_list.append name_list.count等等序号 分类 关键字/函数/方法 说明 1 增加 列表.insert(索引,数据) 在指定位置插入数据 列表.append(数据) 在末尾追加数据 列表.extend(列表2) 将列表2的数据追加到列表 2 修改 列表[索引] = 数据 修改指定索引的数据 del 列表[索引] 删除指定索引的数据 列表.remove(数据) 删除第一个出现的指定数据 列表.pop 删除末尾数据 列表.pop(索引) 删除指定索引数据 列表.clear 情空列表 4 统计 len(列表) 列表长度 列表.count(数据) 数据在列表中出现次数 列表.index(数据) 返回数据索引 5 排序 列表.sort() 升序排序 列表.sort(reverse=True) 降序排序 列表.reverse() 逆转,反转
使用
del
关键字可以从内存中删除变量关键字后面不需要使用括号,函数需要
迭代循环
for num in nums
列表中可以存储不同类型数据
元组
Tuple
与列表类似,不同之处在于元组的元素不能修改- 元组表示多个元素组成的序列
- 元组在
Python
开发中有特定的应用场景
用于存储一串信息,数据之间使用
,
分隔元组用
()
定义元组的索引从0开始
创建空元组
()
查看元组能使用的功能方法如列表
可用
for in
遍历元组应用场景
- 函数的参数和返回值
- 格式化字符串
- 让列表不可被修改,以保护列表安全
list(元组)# 元组转换为列表
tuple(列表)# 列表转换为元组
字典
dictionary
(字典)可用于存储多个数据字典是无序对象合集,列表是有序对象合集
字典用
{}
定义字典使用键值对存储数据,键值之间使用
,
分隔- 键
key
是索引 - 值
value
是数据 - 键和值之间使用
:
分隔 - 键必须是唯一的
- 值可以取任何数据类型,但键只能使用字符串、数字和元组
- 键
举例:
1
2
3
4xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}key value name 小明 age 18 gender True height 1.75 字典取值使用
[]
- 例如:
pirnt(["name"])
- 例如:
xiaoming["GPA"] = 3.5
若key不存在则会新增键值对查看元组能使用的功能方法如列表
for k in xiaoming
变量k
是键值使用场景
- 使用多个键值对存储描述一个物体的相关信息
- 将多个字典放在一个列表中再进行遍历,再循环体内部针对每一个字典进行相同的处理
字符串
可以用
""
或''
定义字符串,使用''
往往用于定义字符串内有""
的情况str2 = 'my name is "logo"'
index("substring")
查询子字符串substring
不存在代码会报错判断类型
方法 | 说明 |
---|---|
string.isspace() |
若string只包含空格,返回True |
sting.isalnum() |
若string至少有一个字符并且所以字符或数字返回True |
string.isalpha() |
若string至少有一个并且所有字符都是字母返回True |
string.isdecimal() |
若string只包含数字则返回True(全角数字) |
string.isdigit() |
若string只包含数字则返回True(全角数字,(1),\u00b2 ) |
string.isnumeric() |
若string只包含数字则返回True(全角数字,汉字数字) |
string.istitle() |
若string是标题化的(每个单词首字母大写)则返回True |
string.islower() |
若string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回True |
string.isupper() |
若string中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回True |
- 查找和替换
方法 | 说明 |
---|---|
string.startswith(str) |
若string以str 开头则返回True |
string.endwith(str) |
若string以str 结尾则返回True |
string.find(str,start=0,end=len(string)) |
若str 在 string的start到end中则返回索引值,否则返回-1 |
string.rfind(str,start=0,end=len(string)) |
类似find() 函数,从右边开始 |
string.index(str,start=0,end=len(string)) |
与find() 类似,但是str 不在string中会报错 |
string.rindex(str,start=0,end=len(string)) |
类似于index() ,从右边开始 |
string.replace(old_str,new_str,num=string.count(old)) |
把string中old_str 替换为new_str ,若num 指定,则替换不超过num 次 |
- 大小写转换
方法 | 说明 |
---|---|
string.capitalize() |
把字符串第一个字符大写 |
string.title() |
把字符串每个单词首字母大写 |
string.lower() |
转换string所有大写字母为小写 |
string.upper() |
转换string所有小写字母为大写 |
string.swapcase() |
翻转string中的大小写 |
- 去除空白字符
方法 | 说明 |
---|---|
string.lstrip() |
截掉 string 左边(开始)的空白字符 |
string.rstrip() |
截掉 string 右边(末尾)的空白字符 |
string.strip() |
截掉 string 左右两边的空白字符 |
- 拆分和连接
方法 | 说明 |
---|---|
string.partition(str) |
把字符串 string 分成一个 3 元素的元组 (str 前面, str , str 后面) |
string.rpartition(str) |
类似于 partition() 方法,不过是从右边开始查找 |
string.split(str="", num) |
以 str 为分隔符拆分 string,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str 默认包含 ‘\r’, ‘\t’, ‘\n’ 和空格 |
string.splitlines() |
按照行(‘\r’, ‘\n’, ‘\r\n’)分隔,返回一个包含各行作为元素的列表 |
string.join(seq) |
以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
- 切片 方法适用于 字符串、列表、元组
- 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
- 字典 是一个 无序 的集合,是使用 键值对 保存数据
nums_str[开始索引:结束索引:步长]
- 注意:
- 指定的区间属于 左闭右开 型
[开始索引, 结束索引)
=>开始索引 >= 范围 < 结束索引
- 从
起始
位开始,到结束
位的前一位 结束(不包含结束位本身) - 从头开始,开始索引 数字可以省略,冒号不能省略
- 到末尾结束,结束索引 数字可以省略,冒号不能省略
- 步长默认为
1
,如果连续切片,数字和冒号都可以省略
- 指定的区间属于 左闭右开 型
- 索引的顺序和倒序
- 在 Python 中不仅支持 顺序索引,同时还支持 倒序索引,步长为-1
- 所谓倒序索引就是 从右向左 计算索引
- 最右边的索引值是 -1,依次递减
公共方法
- 内置函数
函数 | 描述 | 备注 |
---|---|---|
len(item) | 计算容器中元素个数 | |
del(item) | 删除变量 | del 有两种方式 |
max(item) | 返回容器中元素最大值 | 如果是字典,只针对 key 比较 |
min(item) | 返回容器中元素最小值 | 如果是字典,只针对 key 比较 |
cmp(item1, item2) |
比较两个值,-1 小于/0 相等/1 大于 | Python 3.x 取消了 cmp 函数 |
注意
- 字符串 比较符合以下规则: “0” < “A” < “a”
切片
描述 Python 表达式 结果 支持的数据类型 切片 “0123456789”[::-2] “97531” 字符串、列表、元组 - 切片 使用 索引值 来限定范围,从一个大的 字符串 中 切出 小的 字符串
- 列表 和 元组 都是 有序 的集合,都能够 通过索引值 获取到对应的数据
- 字典 是一个 无序 的集合,是使用 键值对 保存数据
运算符
运算符 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 元素比较 字符串、列表、元组 注意
in
在对 字典 操作时,判断的是 字典的键in
和not in
被称为 成员运算符
成员运算符
成员运算符用于 测试 序列中是否包含指定的 成员
运算符 描述 实例 in 如果在指定的序列中找到值返回 True,否则返回 False 3 in (1, 2, 3)
返回True
not in 如果在指定的序列中没有找到值返回 True,否则返回 False 3 not in (1, 2, 3)
返回False
注意:在对 字典 操作时,判断的是 字典的键
完整的 for 循环语法
- 在
Python
中完整的for 循环
的语法如下:
- 在
1 | for 变量 in 集合: |
应用场景
在 迭代遍历 嵌套的数据类型时,例如 一个列表包含了多个字典
需求:要判断 某一个字典中 是否存在 指定的 值
如果 存在,提示并且退出循环
如果 不存在,在 循环整体结束 后,希望 得到一个统一的提示
LINUX 上的 Shebang
符号(#!
)
#!
这个符号叫做Shebang
或者Sha-bang
Shebang
通常在Unix
系统脚本的中 第一行开头 使用- 指明 执行这个脚本文件 的 解释程序
- 使用 Shebang 的步骤
- 使用
which
查询python3
解释器所在路径
1 | $ which python3 |
- 修改要运行的 主 python 文件,在第一行增加以下内容
1 | #! /usr/bin/python3 |
- 修改 主 python 文件 的文件权限,增加执行权限
1 | $ chmod +x cards_main.py |
- 在需要时执行程序即可
1 | ./cards_main.py |