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”可以不写,代表降序