Python学习笔记
一、Python编写规则
1. 缩进要求
Python中对缩进的要求比较严格,缩进便代表了执行的层级,尤其是在嵌套循环中,缩进不一样可能导致执行结果千差万别。标准的缩进由四个空格组成,有的文本编辑器按键盘Tab键是制表符,有的是四个空格,需要根据不同编辑器选择不同方法输入缩进。
2. 注释
单行注释以“#”开始;多行注释用成对的“’’’”或“"""”括起来;
# 这是单行注释
'''
这是多行注释
这是多行注释
'''
"""
这是多行注释
这是多行注释
"""
3. 打印
print("待打印字符") # 形式1
print("总计%s个。" % num) # Python 3.6之前版本支持的格式化方法
print(f"总计{num}个。") # Python 3.6版本开始支持f-string格式化方式
二、数据类型
在Python中,不同数据类型之间的转换是一个常见的需求。Python提供了一些内置函数来实现这些转换。以下是一些常见的数据类型转换示例:
1. 整数 (int) 与 浮点数 (float)
-
整数转浮点数
num_int = 10 num_float = float(num_int) # 10.0 -
浮点数转整数(注意:这会丢失小数部分)
num_float = 10.5 num_int = int(num_float) # 10
2. 字符串 (str) 与 整数/浮点数
-
字符串转整数
num_str = "10" num_int = int(num_str) # 10 -
字符串转浮点数
num_str = "10.5" num_float = float(num_str) # 10.5 -
整数/浮点数转字符串
num_int = 10 num_str_int = str(num_int) # "10" num_float = 10.5 num_str_float = str(num_float) # "10.5"
3. 字符串 (str) 与 布尔值 (bool)
-
字符串转布尔值(空字符串为
False,非空字符串为True)str_empty = "" bool_empty = bool(str_empty) # False str_non_empty = "Hello" bool_non_empty = bool(str_non_empty) # True -
布尔值转字符串
bool_val = True str_val = str(bool_val) # "True" bool_val = False str_val = str(bool_val) # "False"
4. 列表 (list) 与 元组 (tuple)
-
列表转元组
lst = [1, 2, 3] tpl = tuple(lst) # (1, 2, 3) -
元组转列表
tpl = (1, 2, 3) lst = list(tpl) # [1, 2, 3]
5. 集合 (set) 与 列表/元组
-
列表/元组转集合(注意:集合是无序且不包含重复元素的)
lst = [1, 2, 2, 3]
set_from_lst = set(lst) # {1, 2, 3}
tpl = (1, 2, 2, 3)
set_from_tpl = set(tpl) # {1, 2, 3}
- **集合转列表/元组**
```python
set_val = {1, 2, 3}
lst_from_set = list(set_val) # [1, 2, 3](顺序可能不同)
tpl_from_set = tuple(set_val) # (1, 2, 3)(顺序可能不同)
6. 字典 (dict) 与 其他类型
-
字典的键和值可以转换为列表
d = {'a': 1, 'b': 2, 'c': 3} keys = list(d.keys()) # ['a', 'b', 'c'] values = list(d.values()) # [1, 2, 3] items = list(d.items()) # [('a', 1), ('b', 2), ('c', 3)] -
其他类型转字典(通常需要通过手动构造或特定逻辑)
注意事项
- 转换过程中可能会引发异常(如
ValueError),特别是在字符串转数字时,如果字符串格式不正确,会抛出异常。 - 集合是无序的,所以转换为列表或元组时,元素的顺序可能会不同。
通过这些内置函数,可以方便地在Python中进行不同类型的数据转换。
三. 运算符
1. 算数运算符
| 运 算 符 | 功 能 | 运 算 符 | 功 能 |
|---|---|---|---|
| ** | 乘方运算符 | * | 乘法运算符 |
| / | 除法运算符 | // | 整除运算符 |
| % | 取余运算符 | + | 加法运算符 |
| − | 减法运算符 |
2. 位运算符
| 运算符 | 功 能 | 举 例 |
|---|---|---|
| & | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a & b) 的输出结果12,二进制解释:0000 1100 |
| | | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | (a | b) 的输出结果61,二进制解释:0011 1101 |
| ^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a ^ b)的输出结果49,二进制解释:0011 0001 |
| ~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a )的输出结果−61,二进制解释:1100 0011,一个有符号二进制数的补码形式 |
| « | 左移动运算符:运算数的各二进位全部左移若干位,由"«“右边的数指定移动的位数,高位丢弃,低位补0 | a « 2的输出结果240,二进制解释:1111 0000 |
| » | 右移动运算符:把”»“左边的运算数的各二进位全部右移若干位,"»“右边的数指定移动的位数 | a » 2的输出结果15,二进制解释:0000 1111 |
3. 比较运算符
==、!=、>、<、>=、<=。重点注意“==”与“=”的区别。
4. 赋值运算符
a=b=1,将1赋给a和b;a,b,c=1,2,3,分别赋值;
四、字符串处理
1. 截取字符串
语法:str[start:end]
要求:1. 括号内三个元素只要要写一个;2. 位数从第0位开始计;3. start和end可以用负数表示倒着数;4. 特别地:str[2]表示截取第三个字符,str[::-1]表示创造一个与原字符串顺序相反的新字符串。
2. 字符串处理
| 字符串处理函数 | 描 述 |
|---|---|
| string.capitalize() | 将字符串的第一个字母大写 |
| string.count() | 获得字符串中某一子字符串的数目 |
| string.find() | 获得字符串中某一子字符串的起始位置,无则返回−1 |
| string.isalnum() | 检测字符串是否仅包含0~9、A~Z和a~z |
| string.isalpha() | 检测字符串是否仅包含A~Z和a~z |
| string.isdigit() | 检测字符串是否仅包含数字 |
| string.islower() | 检测字符串是否均为小写字母 |
| string.isspace() | 检测字符串中所有字符是否均为空白字符 |
| string.istitle() | 检测字符串中的单词是否为首字母大写 |
| string.isupper() | 检测字符串是否均为大写字母 |
| string.join() | 连接字符串 |
| string.lower() | 将字符串全部转换为小写 |
| string.split() | 分割字符串 |
| string.swapcase() | 将字符串中大写字母转换为小写,小写字母转换为大写 |
| string.title() | 将字符串中的单词首字母大写 |
| string.upper() | 将字符串中全部字母转换为大写 |
| len(string) | 获取字符串长度 |
五、条件语句与循环语句
1. 条件语句
语法:if……elif……elif……else,其中elif和else都可略去,只执行满足条件的情况。
简介写法:
# 条件运算符的嵌套
score = float(input("请输入您的成绩:"))
print("等级A") if score >= 90 else print("等级B") if score >= 60 else print("等级C")
print("等级A" if score >= 90 else ("等级B" if score >= 60 else "等级C"))
2. 循环语句
-
包含for语句和while语句。for循环可以迭代不同的序列对象,如字符串、列表、元组;while循环既可以迭代序列对象,也可以运用比较表达式;
-
else的使用:else中的语句会在循环正常执行完(即for不是通过break跳出而中断的)的情况下执行。例如:
for num in range(10,20): #循环迭代10 到 20 之间的数字 for i in range(2,num): #根据因子迭代 if num%i == 0: #确定第一个因子 j=num/i #计算第二个因子 print ('%d 等于 %d * %d' % (num,i,j)) break # 跳出当前循环 else: # 如果上面的条件不成立,则执行循环中的else部分 print (num, '是一个质数') #输出这是一个质数 -
while语句要注意防止死循环;
3. 循环控制语句
- break:跳出当前层循环,如果只有一层,那么循环便中止了;如果外部还有循环,将跳出内层,执行外层下一次循环;
- continue:跳过当前循环后面的语句,继续执行同层下一轮循环;
- pass:不具备任何功能,占位语句,仅为了保持程序结构的完整性而推出的语句。
六、列表
1. 访问元素
list=["a","b","c","d"]
print(list[0]) # 打印列表中第1个值
print(list[1:3]) # 打印列表中第2个道第3个值
print(list[-1]) # 打印列表最后一个值
2. 插入元素
list=["a","b","c","d"]
list.insert(1,"e") # 在列表第1个后插入新值
list.append("e") # 在列表最后插入新值
3. 删除元素
list=["a","b","c","d"]
del list[0] # 删除列表中的第一个值
list.pop(0) # 删除列表中的第一个值
a=list.pop(0) # 删除列表中的第一个值,并将该值赋给变量a,先pop再访问删除的值则得到的不是第一次删除的值
list.remove("a") # 删除列表中第一个值为“a”的元素
4. 元素排序
list=["a","b","c","d"]
list.sort(reverse=True) # 括号内的“reverse=True”可以不写,代表降序