Advertisement

Python编程基础概念

阅读量:

学习任何编程语言之前所涉及的编程基础概念属于基本知识范畴。
这些基本知识不仅限于Python语言的学习内容,在其他编程语言的学习中同样适用。
以下列举了一些常见的核心知识点:这些知识点涵盖了数据类型、循环结构、条件判断等程序控制基础。

1. 变量

  • 定义:变量用于保存数据的标志符。
    • 命名规则

      • 变量名允许使用的字符包括字母、数字以及下划线。
      • 为了避免歧义性,请确保变量名不以数字开头。
      • 建议区分大小写字母来明确区分不同情况下的变量含义。
      • 为了一致性和可读性,请不要将Python的关键字用于变量命名(例如if, else, for等)。
    • 示例

复制代码
    x = 10

    name = "Alice"
    is_student = True

1.1、变量的定义

变数亦即是一个能够变化的数量单位,在任何时刻都可以被更改其值。

系统是用来操作数据的对象集合,在其中每个变数都被赋以特定的数据类型。

复制代码
    # 重复的值 比较麻烦
    
    # 不使用变量
    print("树木丛生,百草丰茂")
    print("树木丛生,百草丰茂")
    print("树木丛生,百草丰茂")
    print("树木丛生,百草丰茂")
    
    
    # 使用变量
    # 变量的格式 : 变量的名称 = 变量的值
    word = "树木丛生,百草丰茂aaa"
    
    print(word)
    print(word)
    print(word)
    print(word)
在这里插入图片描述

2. 标识符与关键字

2.1 标识符

2.1.1 写法
  • 标识符由字母、下划线和数字构成,并且不允许以数字开头。
    • 区分大小写的字符必须严格区分。
    • 避免使用 reserved keywords。
复制代码
    # 标识符由字母、下划线和数字组成,且数字不能开头。
    # a_1_$ = 1
    # print(a_1_$)
    
    # 严格区分大小写。
    # Animal = 1
    # print(animal)
    
    # 不能使用关键字。
    # for = 1
    # print(for)
2.1.2 命名规范
  • 标识符命名需遵循顾名思义的原则
    • 必须遵守特定的命名规范
      • 大驼峰与小驼峰两种主要方法

        • 其中大驼峰方法较为常见
        • 而小驼峰方法则具有特殊适用性
      • 还有一种命名法是用下划线“_”来连接所有的单词,比如send_buf

2.2、关键字

一些特定功能的标识符即为这些关键词,在Python编程语言中已由官方机构正式采用。这些关键词已被Python官方机构正式采用。
因此禁止开发者自行定义与这些关键词名称相同的标识符。

在这里插入图片描述

3. 数据类型

程序中: 在 Python 里为了应对不同的业务需求,也把数据分为不同的类型。

在这里插入图片描述

查看数据类型

一旦定义了一个变量且其包含数据后,在Python中其类型已经确定下来无需咱们开发者主动去声明其类型。换句话说,在使用时,“变量自身没有明确的类型”。

例如,在示例中,a 的类型可以根据数据确定为某种情况,但变量 b 的类型无法被预测.

在这里插入图片描述

为了随时获取一个变量存储的数据类型时, 通常会调用 type 函数, 并传递该变量的名称

在这里插入图片描述

以下是 Python 中常见的数据类型及其用法:

3.1、 数值类型

  • 整型 (int) :表示整数。
复制代码
    a = 10
    b = -5
  • 浮点型 (float) :表示小数。
复制代码
    c = 3.5
    d = -2.8
  • 复数 (complex) : 表示复数,形式为 a + bj,其中 a 是实部,b 是虚部。
复制代码
    e = ,
    f = -2 + 3j
  • 长整数 (long ) 现在没有了

在 Python 3版本中已无长整型数据。而在 Python 2时代替了int和long为两个不同种类的整数值: int型适用于较小数值而 long 型则适用于极大数值。

长型数据类型的使用方式包括直接附带字母 L 或者当其值超出特定范围时会自动转换生成。

自 Python 3.0起,int类型的整合使得统一后的 int 能够容纳任何大小的数值,仅受系统内存限制。

复制代码
    # Python 2
    b = 100000000000000000000000000000000000000000000000L  # 在 Python 2 中,L 表示 long 类型
    print(b)  # 输出一个长整数
    
    # 转换为 Python 3
    b = 100000000000000000000000000000000000000000000000  # 在 Python 3 中,L 后缀不再需要
    print(b)  # 输出同样的结果,但现在是 int 类型

3.2、 字符串 (str)

  • 表示文本。
  • 可以使用单引号 ’ ’ 或双引号 " " 来定义字符串。
复制代码
    greeting = "Hello, World!"
    name = 'Alice'

字符串操作

  • 拼接:
复制代码
    full_name = "John" + " " + "Doe"
  • 格式化:
复制代码
    age = 30
    message = f"Name: {name}, Age: {age}"

常见操作:
* len(s):计算字符串长度
* s.upper():将字符串转成大写字母
* s.lower():将字符串转成小写字母
* s.strip():删除前后空白字符
* s.split(sep):将字符串分割成多个部分
* s.replace(old, new):用指定内容替代原有部分

3.3、 布尔型 (bool)

  • 布尔型 (bool) :表示真 (True) 或假 (False)。
复制代码
    is_true = True
    is_false = False
  • 布尔运算
    • and:逻辑与。
    • or:逻辑或。
    • not:逻辑非。
复制代码
    result = (x > 0) and (y < 5)

3.4、 序列类型

  • 列表 (list) * 有序排列的集合(即列表),其中包含不同类型的元素。
  • 元素可通过指定的位置(索引)访问,并且该列表允许切片操作以获取连续子序列。
复制代码
    numbers = [1, 2, 3]
    mixed = [1, "two", 3.0, True]
    i = [1, 2, 3]
    j = ["apple", "banana", "cherry"]
  • 元组 (tuple) * 顺序固定且无法修改的元素集合。
  • 通过索引获取这些元素,并允许进行切片操作。
复制代码
    k = (1, 2, 3)
    l = ("apple", "banana", "cherry")
    coordinates = (4, 0.25)
    colors = ("red", "green", "blue")
  • 范围 (range) * 生成一个整数序列。
    • 通常用于循环中。
复制代码
    r = range(1, 10)  # 生成 1 到 9 的整数序列
    for i in r:
    print(i)

range 用于生成可迭代的数值序列;它能够接收三个参数:起始值、终止值和步长。

参数名称 说明 备注
start 计数起始位置 整数参数,可省略。省略时默认从0开始计数
end 计数终点位置 不可省略的整数参数。计数迭代的序列中不包含stop
step 步长 可省略的整数参数,默认时步长为1
复制代码
    for i in range(2, 10, 3):
    print(i)
在这里插入图片描述

3.5、 映射类型

  • 字典 (dict) 是键-值对的结构。
  • 键仅限于不可变类型(常见于字符串或整数类型),而值则可为任意数据类型。
复制代码
    person = {"name": "Alice", "age": 25}
    scores = {1: "one", 2: "two"}
  • 常见操作:
  • 使用len(d)可计算字典元素数量。
  • 调用d.keys()即可获取全部键信息。
  • 执行d.values()可提取全部数据项。
  • 调用d.items()能够获得完整的键值对列表。
  • 调用d.get(key, default)可检索指定键的相关数据项,并在无对应键时返回预设值。
  • 使用d.update(other_dict)将可将另一个字典的内容整合到当前字典中。

3.6、 集合类型

  • 集合(set) 是一种不受顺序影响,并且不允许有重复元素的数据结构。
  • 支持数学上的集合操作,例如包括并集运算符∪, 交集运算符∩, 差集运算符∖等。
复制代码
    unique_numbers = {1, 2, 3}
    fruits = {"apple", "banana", "cherry"}

常规操作:
* len(s):计算集合的大小
* s.add(element):向集合中添加元素
* s.remove(element):从集合中删除元素
* s.union(other_set):求两个集合的并集
* s.intersection(other_set):求两个集合的交集
* s.difference(other_set): 求两个集合的差集

3.7、 None 类型

  • 表示空值。
复制代码
    value = None

示例代码
以下是一些示例代码,展示了上述数据类型的使用:

复制代码
    # 整型
    a = 10
    b = -5
    
    # 浮点型
    c = 3.14
    d = -2.8
    
    # 复数
    e = 3 + 4j
    f = -2 + 3j
    
    # 字符串
    greeting = "Hello, World!"
    name = 'Alice'
    
    # 布尔型
    is_true = True
    is_false = False
    
    # 列表
    numbers = [1, 2, 3]
    mixed = [1, "two", 3.0, True]
    
    # 元组
    coordinates = (4, 0.25)
    colors = ("red", "green", "blue")
    
    # 范围
    r = range(1, 10)
    for i in r:
    print(i)
    
    # 字典
    person = {"name": "Alice", "age": 25}
    scores = {1: "one", 2: "two"}
    
    # 集合
    unique_numbers = {1, 2, 3}
    fruits = {"apple", "banana", "cherry"}
    
    # None 类型
    value = None
    
    # 字符串操作
    full_name = "John" + " " + "Doe"
    age = 30
    message = f"Name: {name}, Age: {age}"
    
    # 字典操作
    print(person["name"])  # 输出: Alice
    person["age"] = 26  # 修改字典中的值
    person["email"] = "alice@example.com"  # 添加新的键值对
    print(person)  # 输出: {'name': 'Alice', 'age': 26, 'email': 'alice@example.com'}
    
    # 集合操作
    set1 = {1, 2, 3}
    set2 = {2, 3, 4}
    union = set1.union(set2)  # 并集
    intersection = set1.intersection(set2)  # 交集
    difference = set1.difference(set2)  # 差集
    print(union)  # 输出: {1, 2, 3, 4}
    print(intersection)  # 输出: {2, 3}
    print(difference)  # 输出: {1}

3.8 数据类型高级

1、字符串高级

字符串的常见操作包括:

  • 获取字符串长度:可以通过len函数获取给定字符串的长度。
  • 查找特定内容的存在性:通过find方法查找指定内容是否存在于目标字符串中。
  • 判断字符位置:使用startswith或endswith方法判断目标字符串是以特定字符开头还是结尾。
  • 统计出现次数:使用count方法统计目标字符在特定范围内的出现次数。
  • 替换指定内容:通过replace方法将目标字符替换为指定字符,并限制替换次数。
  • 基于参数切割:使用split方法将目标字符串按照指定分隔符分割成多个子串。
  • 大小写转换操作:通过upper或lower方法对目标字符串执行大小写的转换操作。
  • 字符串拼接操作:使用join方法将多个目标字符串连接成一个完整的主串。
复制代码
    # len
    s = 'china'
    print(len(s))
    
    s1 = 'china'
    print(s1.find('a'))
    
    s2 = 'china'
    print(s2.startswith('h'))
    print(s2.endswith('n'))
    
    s3 = 'artfdhdrfsaa'
    print(s3.count('a'))
    
    s4 = 'cdgdsdseea'
    print(s4.replace('d','o'))
    
    s5 = '1#@#2#3#4#856'
    print(s5.split('#'))
    
    s6 = 'china'
    print(s6.upper())
    
    s7 = 'CHINA'
    print(s7.lower())
    
    s8 = '     ar  e  '
    print(len(s8))
    print(len(s8.strip()))
    
    s9 = 'a'
    print(s9.join('hello'))
2、列表高级

列表(有序可重复)的增删改查

2.1、添加元素
复制代码
    # append 在末尾添加元素
    food_list = ['铁锅','大鹅','五花肉']
    print(food_list)
    
    food_list.append('酸菜')
    print(food_list)
    
    # insert 在指定位置插入元素
    char_list = ['a','b','c']
    print(char_list)
    
    # insert(index, object) 在指定位置index前插入元素object
    char_list.insert(1,'h')
    print(char_list)
    
    # extend 合并两个列表
    num_list = [1,2,3]
    num1_list = [4,5,6]
    
    num_list.extend(num1_list)
    print(num_list)
2.2、修改元素

在操作过程中(在编程逻辑中)(在处理列表数据时)(在编写代码时)(在实际应用中)(在技术实现中)(在执行更新操作时)(在设置索引值时)(在获取特定元素的位置时)(在进行数据变更操作时)(在明确目标位置时)(在确定具体索引值时)(在定位到特定元素的位置时),我们需要使用索引方式来访问并修改列表中的某个元素;具体来说就是:先确定目标位置并找到对应的索引值;然后将该位置的目标赋值给该变量即可完成更新

复制代码
    city_list = ['北京','上海','武汉','西安']
    print(city_list)
    
    city_list[3] = '大连'
    print(city_list)
2.3、查询元素
复制代码
    # in 判断某一个元素,是否在列表中
    city_list = ['北京','上海','武汉','西安']
    
    # 判断在控制台输入的数据,是否在列表中
    city = input('请输入现在待的城市:')
    
    if city in city_list:
    print('呆着呢')
    else:
    print('玩去了')
    
    
    
    # not in 判断某一个元素,是否不在列表中
    food_list = ['酸菜','大鹅','五花肉']
    
    # 判断在控制台输入的数据,是否不在列表中
    food = input('请输入食材:')
    
    if food not in food_list:
    print('不吃')
    else:
    print('吃美了')
2.4、删除元素

列表元素的常用删除方法有:

2.4.1、del:根据下标进行删除
复制代码
    a_list = [1,2,3,4,5,6]
    print(a_list)
    
    del a_list[2]
    print(a_list)
2.4.2、pop:删除最后一个元素
复制代码
    food_list = ['酸菜','大鹅','五花肉']
    print(food_list)
    food_list.pop()
    print(food_list)
2.4.3、remove:根据元素的值进行删除
复制代码
    food_list = ['酸菜','大鹅','五花肉','火锅']
    food_list.remove('五花肉')
    print(food_list)
3、元组高级

Python中的元组与列表在结构上类似于其他数据类型,在主要区别在于元组中的元素无法被修改 。元组使用圆括号来表示其内容,而列表则使用方括号。

复制代码
    a_tuple = (a,2,3,4,5)
    print(a_tuple[0])
    print(a_tuple[2])
    
    # a_tuple[3] = 5
    # print(a_tuple)
    
    a_list = [sa,3,5,df,3,y]
    a_list[2] = 246
    print(a_list)
    
    b_tuple = (11,)
    print(type(b_tuple))

生成元组的过程非常简便。通过将一组值用逗号分隔开来就可以轻松地生成一个空的元组。对于只包含单个元素的情况,在书写时必须在该元素后面紧跟一个逗号符号。

4、切片
  • 切片是指被操作的对象从中获取其中一部分的操作。

    • 这些常见的序列类型如字符串、列表和元组均支持切片操作。
      作为一种基本的数据访问方式,在处理序列数据时(如列表、元组和字符串),我们通常基于下标索引从指定范围中提取元素。
      其语法通常表示为[起始位置:结束位置:步长]的形式。
  • start_index:表示起始位置(包含该位置),若省略,则默认从对象的末端开始。

  • end_index:表示终止位置(不包括该位置本身),若省略,则默认延伸至数据的末端。

  • step:(步长) ,正负均可调节切片的方向与密度。未指定步长时,默认步长为1。
    当step设定为正值时,则切片方向朝向数据序列的末尾;设定负值则相反。

复制代码
    s = 'Hello World!'
    print(s)
    print(s[4])  # o 字符串里的第4个元素
    print(s[3:7])  # lo W 包含下标 3,不含下标 7
    print(s[1:])  # ello World! 从下标为1开始,取出 后面所有的元素(没有结束位)
    print(s[:4])  # Hell 从起始位置开始,取到 下标为4的前一个元素(不包括结束位本身)
    print(s[1:5:2])  # el 从下标为1开始,取到下标为5的前一个元素,步长为2(不包括结束位本身)
5、字典高级(无序)
5.1、查看元素
复制代码
    使用key查找数据,还可以使用get来获取数据`
    person = {'name':'武器' ,'age':23 }
    print(person['name'])
    print(person['age'])
    
    print(person.get('name'))
    print(person.get('age'))
    
    # print(info['sex']) # 获取不存在的key,会发生异常
    print(info.get('sex'))  # 获取不存在的key,获取到空的内容,不会出现异常
    print(info.get('sex', '男'))  # 获取不存在的key, 可以提供一个默认值。
5.2、修改元素

字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改

复制代码
    person = {'name':'张三' ,'age':23 }
    print(person)
    person['name'] = '法外'
    print(person)
5.3、添加元素

如果在对变量名[‘键字段’] = 数据执行赋值操作时,则该键字段不在字典中会导致新增该元素。

复制代码
    person = {'name':'牛奶' }
    print(person)
    person['age']=18
    person['name'] = '大团购'
    print(person)
5.4、删除元素

对字典进行删除操作,有一下几种:

复制代码
    person = {'name':'牛奶','age': 12 }
    print(person)
    del person['age']
    print(person)
    
    person1 = {'name':'牛奶','age': 12 }
    del person1
    print(person1)
    
    person2 = {'name':'牛奶','age': 12 }
    person2.clear()
    print(person2)
5.5、字典的遍历
  • 遍历字典的key(键)
复制代码
    person = {'name':'牛奶','age': 12,'sex':'nan' }
    
    for test in person.keys():
    print(test)
  • 遍历字典的value(值)
复制代码
    person = {'name':'牛奶','age': 12,'sex':'nan' }
    
    for value in person.values():
    print(value)
  • 遍历字典的项(元素)
复制代码
    person = {'name':'牛奶','age': 12,'sex':'nan' }
    
    for item in person.items():
    print(item)
  • 遍历字典的key-value(键值对)
复制代码
    person = {'name':'牛奶','age': 12,'sex':'nan' }
    
    for key,value in person.items():
    print(key,value)

4. 类型转换

函数 说明
int(x) 将x转换为一个整数
float(x) 将x转换为一个浮点数
str(x) 将对象 x 转换为字符串
bool(x) 将对象x转换成为布尔值

4.1 整数

4.1.1 转换成整型
复制代码
    print(int("123")) # 123 将字符串转换成为整数
    print(int(123.78)) # 123 将浮点数转换成为整数
    print(int(True)) # 1 布尔值True转换成为整数是 1
    print(int(False)) # 0 布尔值False转换成为整数是 0
    
    # 转换为整型
    # str --> int
    a = '123'
    print(type(a))
    # 将字符串转换为整数
    b = int(a)
    print(type(b))
    
    # float --> int
    c = 1.23
    print(type(c))
    # 将float转换为整数,返回的是小数点前面的数据
    d = int(c)
    print(d)
    print(type(d))
    
    
    # boolean --> int
    e = True
    print(type(e))
    f = int(e)
    print(f)
    print(type(f))
4.1.2 以下两种情况将会转换失败
复制代码
    # 123.456 和 12ab 字符串,都包含非法字符,不能被转换成为整数,会报错
    print(int("123.456"))
    print(int("12ab"))

4.2 浮点数

4.2.1 转换成为浮点数
复制代码
    f1 = float("12.34")
    print(f1) # 12.34
    print(type(f1)) # float 将字符串的 "12.34" 转换成为浮点数 12.34
    f2 = float(23)
    print(f2) # 23.0
    print(type(f2)) # float 将整数转换成为了浮点数

4.3 字符串

4.3.1 转换成为字符串
复制代码
    # 转换为字符串
    a = 80
    print(type(a))
    # 强制类型转换为字符串
    b = str(a)
    print(b)
    print(type(b))
    
    str1 = str(45)
    str2 = str(34.56)
    str3 = str(True)
    print(type(str1),type(str2),type(str3))

4.4 布尔值

4.4.1 转换成为布尔值
复制代码
    # 如果对非0的整数进行bool类型的转换,那么全都是True
    e = -1
    print(type(e))
    f = bool(e)
    print(f)
    
    print(bool(''))
    print(bool(""))
    print(bool(0))
    print(bool({}))
    print(bool([]))
    print(bool(()))

5. 运算符

5.1、 算术运算符

用于执行常见的数学运算。

  • + 运算
    • plus
    • 加法运算
    • plus operator
  • - 减法
    • subtraction
    • minus operation
  • * 乘法
    • multiplication
    • multiply operator
  • / 除法(结果为浮点型)
    • floating-point result division
  • // 整除(结果为整数值)
    • integer result division
  • % 取模(返回余数值)
    • modulus operation returns remainder
  • ** 幂(指数计算)
    • exponentiation calculation
复制代码
    a = 10
    b = 0.25
    
    # 加法
    print(a + b)  # 10.25
    
    # 减法
    print(a - b)  # 9.75
    
    # 乘法
    print(a * b)  # 2.5
    
    # 除法
    print(a / b)  # 40.0
    
    # 整除
    print(a // b)  # 40
    
    # 取模
    print(a % b)  # 0.˜
    
    # 幂
    print(a ** 2)  # 100

取a=9 b=2

运算符 描述 实例
+ 两个对象相加 a + b 输出结果 11
- 两个对象相加 a - b 输出结果 7
* 两个对象相加 a * b 输出结果 18
/ 两个对象相加 a / b 输出结果 4.5
// 取整除 两个对象相加 a // b 输出结果 4
% 求余 两个对象相加 a % b 输出结果 1
** 指数 两个对象相加 a ** b 输出结果 81
() 小括号 提高运算优先级
在这里插入图片描述

复合运算中的计算顺序:幂运算是所有乘法、除法以及取模和整除操作之前执行的,在加减法之前也需注意优先级差异。
为此建议在表达时特别指出括号的作用以避免计算顺序的歧义。
此外,在涉及不同数据类型的算术操作时需要注意的是整数值会被自动转换为浮点型数据参与后续的计算过程。

算数运算符在字符串里的使用

当两个字符串进行加法运算时,在结果中就会生成一个新的字符串。

复制代码
    a = "hello"
    b = " "
    c = "world"
    print(a + b + c)
在这里插入图片描述
  • 如果是数字和字符串做加法运算,会直接报错
复制代码
    a = "hello"
    b = 12
    c = "world"
    print(a + b + c)
  • 如果是数字和字符串做乘法运算,会将这个字符串重复多次
复制代码
    a = "hello"
    b = 10
    print(a*b)

5.2、比较运算符

用于比较两个值的关系,结果为布尔值 True 或 False。

  • == 等于
  • != 不等于
  • > 大于
  • < 小于
  • >= 大于等于
  • <= 小于等于
运算符 描述 实例
== 等于:比较对象是否相等 (a == b) 返回 False
!= 不等于:比较两个对象是否不相等 (a != b) 返回 true
“>” 大于:返回x是否大于y (a > b) 返回 False
“>=” 大于等于:返回x是否大于等于y (a >= b) 返回 False
< 小于:返回x是否小于y。 所有比较运算符返回1表示真,返回0表示假。这分别与特 殊的变量True和False等价 (a < b) 返回 true
<= 小于等于:返回x是否小于等于y (a <= b) 返回 true
复制代码
    x = 5
    y = 10
    
    # 等于
    print(x == y)  # False
    
    # 不等于
    print(x != y)  # True
    
    # 大于
    print(x > y)  # False
    
    # 小于
    print(x < y)  # True
    
    # 大于等于
    print(x >= y)  # False
    
    # 小于等于
    print(x <= y)  # True

5.3、 逻辑运算符

用于组合条件表达式。

  • $\&$ 运算符用于进行逻辑与操作(仅当所有参与操作的条件均为真时,运算结果才为真)
    • $\vert$ 运算符执行逻辑或操作(只要有一个参与操作的条件为真时,运算结果即为真)
    • 非运算符用于对布尔值进行求反处理
运算符 逻辑表达式 描述 实例
and x and y 只要有一个运算数是False,结果就是False; 只有所有的运算数都为True时,结果才是True 做取值运算时,取第一个为False的值,如果所有的值 都为True,取最后一个值 True and True and False–> 结果为False True and True and True–> 结果为True
or x or y 只要有一个运算数是True,结果就是True; 只有所有的运算数都为False时,结果才是False 做取值运算时,取第一个为True的值,如果所有的值都 为False,取最后一个值 False or False or True–>结 果为True False or False or False–>结 果为False
not not x 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not True --> False
复制代码
    p = True
    q = False
    
    # 逻辑与
    print(p and q)  # False
    
    # 逻辑或
    print(p or q)  # True
    
    # 逻辑非
    print(not p)  # False

5.4、位运算符

用于对整数的二进制位进行操作。

  • &按位与
  • | 按位或
  • ^按位异或
  • ~按位取反
  • << 左移
  • >> 右移
复制代码
    m = 60  # 二进制 0011 1100
    n = 13  # 二进制 0000 1101
    
    # 按位与
    print(m & n)  # 12 (二进制 0000 1100)
    
    # 按位或
    print(m | n)  # 61 (二进制 0011 1101)
    
    # 按位异或
    print(m ^ n)  # 49 (二进制 0011 0001)
    
    # 按位取反
    print(~m)  # -61 (取决于机器的位宽)
    
    # 左移
    print(m << 2)  # 240 (二进制 1111 0000)
    
    # 右移
    print(m >> 2)  # 15 (二进制 0000 1111)

5.5、 赋值运算符

所以我们可以用复合赋值运算符来给变量赋予值。这些运算符整合了算术、位以及其它相关的操作。

  • 简单赋值:a = b
  • 加法运算:a += b
  • 减法运算:a -= b
  • 乘法运算:a *= b
  • 除法运算:a /= b
  • 整除运算:a //= b
  • 取模运算:a %= b
  • 幂运算:a **= b
  • 按位与操作:a &= b
  • 按位或操作:a |= b
  • 按位异或操作:a ^= b
  • 按位右移操作:a >>= b
  • 按位左移操作:a <<= b
运算符 描述 实例
= 赋值运算符 把 = 号右边的结果 赋给 左边的变量,如 num = 1 + 2 * 3,结果num的值为7

复合赋值运算符

运算符 描述 实例
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c * *= a 等效于 c = c ** a
复制代码
    i = 10
    
    # 加法赋值
    i += 3  # 相当于 i = i + 3
    print(i)  # 13
    
    # 乘法赋值
    i *= 2  # 相当于 i = i 
    print(i)  # 26
    
    # 取模赋值
    i %= 5  # 相当于 i = i % 5
    print(i)  # 1

5.6、 成员运算符

用于测试序列(如列表、元组、字典)中是否存在某个值。

  • in 运算符用于判断给定的变量是否属于该序列集合,并返回真值或假值。*
复制代码
    my_list = [1, 2, 3, 4, 5]
    
    # 检查成员
    print(3 in my_list)  # True
    print(6 not in my_list)  # True

5.7、 身份运算符

用于比较两个对象的身份,而不是它们的值。

  • is 如果两个变量引用同一个对象则返回 True 否则返回 False
  • is not 如果两个变量引用不同的对象则返回 True 否则返回 False
复制代码
    x = [1, 2, 3]
    y = [1, 2, 3]
    z = x
    
    # 检查身份
    print(x is z)  # True
    print(x is y)  # False,尽管 x 和 y 有相同的值,但它们不是同一个对象
    print(x is not y)  # True

6. 控制流语句

6.1、 条件语句

条件语句允许程序根据不同的条件执行不同的代码块。

if 语句

复制代码
    age = 20
    
    if age < 18:
    print("你是未成年人。")
    elif age >= 18 and age < 60:
    print("你是成年人。")
    else:
    print("你是老年人。")

6.2、 循环语句

循环语句允许重复执行一段代码直到满足特定条件。

for 循环

复制代码
    # 遍历列表
    fruits = ["apple", "banana", "cherry"]
    for fruit in fruits:
    print(fruit)
    
    # 使用 range() 函数
    for i in range(5):  # 0 到 4
    print(i)

while 循环

复制代码
    count = 0
    while count < 5:
    print(count)
    count += 1  # count = count + 1

6.3、 跳转语句

跳转语句用于改变程序的执行流程。

break 语句

复制代码
    for i in range(10):
    if i == 5:
        break  # 当 i 等于 5 时退出循环
    print(i)

continue 语句

复制代码
    for i in range(10):
    if i % 2 == 0:  # 如果 i 是偶数
        continue  # 跳过当前循环的剩余部分
    print(i)  # 只打印奇数

pass 语句

复制代码
    def my_function():
    pass  # 占位符,将来可能会在这里写代码
    
    for letter in 'Python':
    if letter == 'h':
        pass  # 不做任何事情,只是保持语法结构
    print('当前字母:', letter)

6.4、 异常处理

异常处理确保程序在遇到错误时能优雅地处理错误。

try-except-else-finally 语句

复制代码
    try:
    result = 10 / 0
    except ZeroDivisionError:
    print("除数不能为零!")
    else:
    print("结果是:", result)
    finally:
    print("无论是否发生异常,都会执行这里。")

6.5、with 语句

with 语句用于管理资源,确保在进入和退出代码块时执行特定的操作。

复制代码
    # 使用 with 语句打开文件
    with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
    # 文件在 with 语句结束时自动关闭

6.6、 assert 语句

assert 语句被用来作为调试手段以验证某个条件是否成立,并且如果该条件不成立则会触发AssertionError。

复制代码
    def divide(a, b):
    assert b != 0, "除数不能为零"
    return a / b
    
    # 如果 b 为 0,将会抛出 AssertionError
    result = divide(10, 0)

6.7、 match-case 语句(Python 3.10+)

match-case 语句用于模式匹配,类似于其他语言中的 switch 语句。

复制代码
    def get_day_name(day):
    match day:
        case 1:
            return "周一"
        case 2:
            return "周二"
        case 3:
            return "周三"
        case 4:
            return "周四"
        case 5:
            return "周五"
        case 6:
            return "周六"
        case 7:
            return "周日"
        case _:
            return "无效的天数"
    
    print(get_day_name(3))  # 输出: 周三

6.8、 yield 语句

yield 语句用于定义生成器函数,生成器可以逐个生成一系列的值。

复制代码
    def simple_generator():
    yield 1
    yield 2
    yield 3
    
    gen = simple_generator()
    for value in gen:
    print(value)
    # 输出:
    # 1
    # 2
    # 3

6.9、 lambda 表达式

lambda 表达式用于创建匿名函数,通常在需要一个简单函数的地方使用。

复制代码
    # 使用 lambda 创建一个简单的函数
    square = lambda x: x * x
    print(square(5))  # 输出: 25

6.10、 列表推导式

列表推导式是一种简洁的方式来创建列表。

复制代码
    # 创建一个平方数的列表
    squares = [x * x for x in range(10)]
    print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

6.11、 return 语句

return 语句用于从函数中返回值,并终止函数的执行。

复制代码
    def add(a, b):
    return a + b
    
    result = add(3, 4)
    print(result)  # 输出: 7

6.12、 import 和 from … import … 语句

这些语句用于导入模块或模块中的特定部分。

复制代码
    # 导入整个模块
    import math
    
    # 从模块中导入特定的函数或类
    from datetime import datetime
    
    # 使用导入的模块和函数
    print(math.sqrt(16))  # 输出: 4.0
    print(datetime.now())  # 输出当前日期和时间

6.13、 del 语句

del 语句用于删除变量或对象,释放它们占用的资源。

复制代码
    my_list = [1, 2, 3]
    del my_list[0]  # 删除第一个元素
    print(my_list)  # 输出: [2, 3]
    
    # 删除整个列表
    del my_list
    # 再次访问 my_list 会导致 NameError

7. 函数

7.1 函数基本概念

7.1.1、定义

定义函数的格式如下

复制代码
    def 函数名():
    	代码
7.1.2、调用函数
  • 定义了函数后就等同于拥有了一个具备特定功能的代码块,要让这段代码得以运行就需要进行相应的调用操作. 这种操作非常简单,只需按照"函数名()"的方式即可完成.
  • 函数建立完成后,其内部编码是不会自动执行的,若希望执行其中的内容就需要主动地去使用该功能. 每次运行该功能时系统都会重新启动内部编码,当这一系列指令全部处理完毕后就意味着整个操作已经结束.
复制代码
    # 定义函数
    def f1():
    print("欢迎光临")
    print("两位")
    
    # 调用函数
    f1()
7.1.3、函数参数

编程过程中定义一个函数时,在参数位置上指定等待被赋值的变量名,并将其标记为"形参"如sum(a,b)所示。
当调用该函数时,在参数位置上传递实际需要执行运算的数据,并将其标记为"实参"如sum(100,200)所示。

复制代码
    # 定义函数
    def sum(a,b):
    c = a + b
    print(c)
    
    # 位置参数  按照位置一一对应的关系来传递参数
    sum(100,200)
    
    
    # 关键字传参
    sum(b= 300,a= 200)
7.1.4、函数返回值

想要在函数中把结果返回给调用者,需要在函数中使用return

复制代码
    # 返回值的关键字是return,存在函数中
    def buy():
    return '冰激凌'
    
    # 使用一个变量接收函数的返回值
    food = buy()
    print(food)
    
    
    def sum(a,b):
    c = a + b
    return c
    
    a = sum(125,68)
    print(a)
7.1.5、局部变量

local variables are those declared within a function, with their scope confined to the internal workings of that function. they cannot be accessed or utilized outside of its boundaries.

复制代码
    def f1():
    a = 1
    print(a)
    
    f1()
    print(a)
7.1.6、全局变量

当一个变量既可以在一个函数内使用,也可以在其他函数内使用时,这样的变量被称为全局变量。

在函数外边定义的变量叫做 全局变量

全局变量能够在所有的函数中进行访问

复制代码
    a = 1
    print(a)
    def f1():
    print(a)
    
    f1()

在满足条件的情况下,使用影响最小的

7.2、函数类型总结

  • 标准功能:明确的功能定义允许接收输入并可能返回结果。
    • 匿名功能(Lambda功能):简洁且一次性完成的任务由其设计。
    • 生成器功能:通过yield语句按顺序生成一系列值。
    • 递归功能:在内部调用自身以解决可分解为相似子任务的问题。
    • 高级功能:既接收又返回新功能作为其操作的基础。
    • 装饰器:一种特殊的高级功能类型用于增强其他功能的行为。
    • 内置功能:Python预装的功能如print()、len()和type()等。
    • 方法:属于类或对象的操作程序,在处理对象状态时被使用。
    • 静态与类方法:与类直接关联的操作程序无需实例化即可运行。
    • 特殊方法(魔术方法):实现特定行为的功能名称如init、str等。

7.3、常用内置函数

  • print() 的作用是用来输出结果至控制台。
  • len() 的功能是用来计算容器的长度。
  • type() 的作用是判断对象的数据类型。
  • input() 的用途是获取用户输入数据。
  • 类型转换功能包括:int(), float(), str(), 和 bool() 四个函数。
  • 容器创建函数主要有:list(), tuple(), set()dict() 四种形式。
  • 常用的数学运算功能有:max()(最大值)、min()(最小值)以及sum()(总和)三个函数。
  • 排序相关功能由sorted() 函数负责实现。
  • 实现枚举操作的功能由enumerate() 函数提供。
  • 组合操作主要通过zip() 函数来完成数据配对。
  • 生成序列的方式可使用range() 函数来设定起始值、终止值以及步长值。
  • 进行数值运算的功能包含:abs()(绝对值)、round()(四舍五入)两个常用方法。
  • 在逻辑判断中常用的方法有:all()(全部为真)、any()(任意一个为真)两个逻辑操作符。
  • 执行筛选与映射操作分别由filter()map() 两个内置函数完成任务。
  • 累积计算功能则需要通过导入自定义模块中的reduce() 函数来实现操作过程中的逐步累加效果。
  • 实现文件读写的主控接口是通过调用open() 方法来进行文件操作过程中的文件打开与关闭操作流程管理。
  • 提供帮助信息的功能由调用帮助方法实现的内容即为使用帮助文档或调用帮助模块中的方法来获取相关参数设置指导信息的功能模块组成整体结构的一部分内容

额外说明

  • 闭包:这是一种特殊的编程机制,在调用其他地方定义的相同名称的函数时仍能访问内部变量。
  • 泛型功能:在编程中能够处理多种数据类型的功能被称为泛型功能。
  • 函数注解:自Python3.0起,默认支持参数和返回值的类型标注。

7.4、具体函数

输入/输出函数
  • print(): 用于输出信息到控制台。
复制代码
    print("Hello, World!")
  • input(): 从标准输入读取一行文本。
复制代码
    name = input("请输入你的名字: ")
    print(f"你好, {name}!")
容器操作
  • len(): 返回容器(如列表、字符串、字典等)的长度。
复制代码
    my_list = [1, 2, 3]
    print(len(my_list))  # 输出: 3
  • list(), tuple(), set(), dict(): 用于创建容器类型。
复制代码
    my_list = list((1, 2, 3))
    my_tuple = tuple([1, 2, 3])
    my_set = set([1, 2, ¾, 3])  # 注意这里修正了½为¾,因为½不是有效的Python语法
    my_dict = dict(name="Alice", age=30)
    print(my_list, my_tuple, my_set, my_dict)
数值操作
  • int(), float(), str(), bool(): 用于类型转换。
复制代码
    x = int("10")
    y = float("3.14")
    z = str(100)
    w = bool(0)  # False
    print(x, y, z, w)
  • max(), min(): 返回容器中的最大值或最小值。
复制代码
    numbers = [1, 2, 3, 4, 5]
    print(max(numbers))  # 输出: 5
    print(min(numbers))  # 输出: 1
  • sum(): 返回容器中所有数值的总和。
复制代码
    numbers = [1, 2, 3, 4, 5]
    print(sum(numbers))  # 输出: 15
  • abs(): 返回数字的绝对值。
复制代码
    x = -10
    print(abs(x))  # 输出: 10
  • round(): 四舍五入到指定的小数位数。
复制代码
    x = 3.14159
    print(round(x, 2))  # 输出: 3.14
迭代器和生成器
  • enumerate(): 返回一个枚举对象,其中包含索引和对应的元素。
复制代码
    fruits = ["apple", "banana", "cherry"]
    for index, fruit in enumerate(fruits):
    print(index, fruit)
  • zip(): 将多个可迭代对象打包成一个元组的列表。
复制代码
    names = ["Alice", "Bob", "Charlie"]
    ages = [25, 30, 35]
    for name, age in zip(names, ages):
    print(f"{name} is {age} years old.")
  • range(): 生成一个整数序列。
复制代码
    for i in range(5):
    print(i)  # 输出: 0, 1, 2, 3, 4
高级操作

函数名称:all()any()是Python编程中常用的内置函数。它们都被用于对可迭代对象中的元素执行逻辑判断并返回布尔值结果。具体来说:

  • all()函数会返回布尔值True当且仅当所有输入参数均为True或输入参数列表为空。
  • any()函数则会返回布尔值True当且仅当至少一个输入参数的值为True。
复制代码
    print(all([True, True, True]))  # 输出: True
    print(any([False, False, True]))  # 输出: True
  • filter(): 使用函数过滤可迭代对象,返回一个迭代器。
复制代码
    numbers = [1, 2, 3, 4, 5]
    even_numbers = filter(lambda x: x % 2 == 0, numbers)
    print(list(even_numbers))  # 输出: [2, 4]
  • map(): 对可迭代对象中的每个元素应用函数,返回一个迭代器。
复制代码
    numbers = [1, 2, 3, 4, 5]
    squared = map(lambda x: x ** 2, numbers)
    print(list(squared))  # 输出: [1, 4, 9, 16, 25]

reduce()是一个常见的函数,在Python中属于functools模块的一部分。该函数用于对序列中的元素进行累积地应用,并接受一个二元运算符作为参数。

复制代码
    from functools import reduce
    numbers = [1, 2, 3, 4, 5]
    product = reduce(lambda x, y: x * y, numbers)
    print(product)  # 输出: 120
文件操作
  • open(): 打开一个文件,并返回一个文件对象。
复制代码
    with open('example.txt', 'r') as file:
    content = file.read()
    print(content)
帮助和调试
  • help(): 获取对象的帮助文档。
复制代码
    help(print)

8. 注释

  • 单行注释 :使用 # 符号
复制代码
    # 这是一个单行注释
  • 多行注释 :使用三引号"""'''
复制代码
    """
    这是一个
    多行注释
    """

8.1、单行注释

通过带有#符号的标记开始,在Markdown语法中,默认情况下右侧的部分内容会被看作注释或其他辅助信息使用,默认情况下会被视为非执行性内容,并作为注释或其他辅助信息使用。通常用于对代码或其他内容进行简要标注

复制代码
    # 单行注释
    print("国庆出去玩")  # 单行注释
在这里插入图片描述

6.2、多行注释

以 ‘’’ 开始,并以** ‘’'** 结束,我们称之为多行注释。

复制代码
    # 多行注释
    '''
    东临碣石,
    以观沧海。
    水何澹澹,
    山岛竦峙。
    print("树木丛生,百草丰茂")
    print("秋风萧瑟,洪波涌起")
    '''
在这里插入图片描述
8.2.1、单引号('''
复制代码
    '''
    这是多行注释,用三个单引号
    这是多行注释,用三个单引号 
    这是多行注释,用三个单引号
    '''
    print("Hello, World!")
8.2.2、双引号("""
复制代码
    """
    这是多行注释(字符串),用三个双引号
    这是多行注释(字符串),用三个双引号 
    这是多行注释(字符串),用三个双引号
    """
    print("Hello, World!")

9. 输入输出

  • 输出:使用 print() 函数
复制代码
    print("Hello, World!")
  • 输入:使用 input() 函数
复制代码
    user_input = input("请输入您的名字: ")

9.1 输出

python中变量的输出情况是这样的:使用print函数时,默认会在行末显示换行符。如果希望避免换行,则需要在print语句末尾加上逗号符号

9.1.1 普通输出
复制代码
    print('hello')
在这里插入图片描述
9.1.2 格式化输出
使用%来格式化

格式化符号大全

符 号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串 就是强转 ----->str(变量)
%d 格式化整数 ------->int(变量)
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度,且四舍五入 ‘%.2f’ % s ,表示将变量s保留2位小数且四舍五入
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g 浮点型数据 会去掉多余的零 至多保留6位
%G 浮点型数据 会去掉多余的零 至多保留6位
%p 用十六进制数格式化变量的地址
复制代码
    print('%s' % 'hello world')  # 字符串输出
    hello world
    #就是将非字符串%后面的字符串替换成'%s'

格式化操作符辅助指令:

符 号 描述
‘*’ 定义宽度或者小数点精度
'- 用做左对齐
'+ 在正数前面显示加号( + )
< sp > 在正数前面显示空格
'# 在八进制数前面显示零(‘0’),在十六进制前面显示’0x’或者’0X’(取决于用的是’x’还是’X’)
0 显示的数字前面填充’0’而不是默认的空格
% ‘%%‘输出一个单一的’%’
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

format用法

符 号 描述
‘b’ 二进制。 将数字以2为基数进行输出。
‘c’ 字符。 在打印之前将整数转换成对应的Unicode字符串。
‘d’ 十进制整数。 将数字以10为基数进行输出。
‘o’ 八进制。 将数字以8为基数进行输出。
‘x’ 十六进制。 将数字以16为基数进行输出,9以上的位数用小写字母。
‘e’ 幂符号。 用科学计数法打印数字。用’e’表示幂。
‘g’ 一般格式。 将数值以fixed-point格式输出。当数值特别大的时候,用幂形式打印。
‘f’ 浮点数。 将数字以浮点数形式输出,默认6位小数。
‘n’ 数字。 当值为整数时和’d’相同,值为浮点数时和’g’相同。不同的是它会根据区域设置插入数字分隔符。
‘%’ 百分数。 将数值乘以100然后以fixed-point(‘f’)格式打印,值后面会有一个百分号。
复制代码
    >>> print('{0:b}'.format(3))
    11
    >>> print('{:c}'.format(20))
    
    >>> print('{:d}'.format(20))
    20
    >>> print('{:o}'.format(20))
    24
    >>> print('{:x}'.format(20))
    14
    >>> print('{:e}'.format(20))
    2.000000e+01
    >>> print('{:g}'.format(20.1))
    20.1
    >>> print('{:f}'.format(20))
    20.000000
    >>> print('{:n}'.format(20))
    20
    >>> print('{:%}'.format(20))
    2000.000000%
f-String格式化

Python 3.6推出了新型字符串格式化功能以提升应用体验这一新功能的应用体验非常出色这种格式化的应用方法是以f开头的方式进行的在程序运行时会将括号内的变量替换为其对应的值

复制代码
    name = 'Bertram'
    age = 30
    print(f"hello,{name},you are {age}")
在这里插入图片描述

9.2 输入

在Python编程语言中,默认情况下...的方法用于捕获键盘输入的数据。该函数将用户的任意输入视为字符串形式处理。

复制代码
    password = input("请输入密码:")
    print('您刚刚输入的密码是:%s' % password)
在这里插入图片描述

10. 异常处理

捕获异常:使用 try-except 语句

复制代码
    try:
    # 可能引发异常的代码
    except ExceptionType as e:
    # 处理异常的代码
    finally:
    # 无论是否发生异常都会执行的代码

示例代码
以下是一些示例代码,展示了上述概念的应用:

复制代码
    # 变量
    x = 10
    y = 3.14
    name = "Alice"
    is_student = True
    
    # 数据类型
    numbers = [1, 2, 3]
    coordinates = (4, 0.25)
    person = {"name": "Bob", "age": 30}
    fruits = {"apple", "banana", "cherry"}
    
    # 运算符
    result = x + y
    is_greater = x > y
    logical_and = (x > 0) and (y < 5)
    
    # 控制流语句
    if x > y:
    print("x is greater than y")
    elif x < y:
    print("x is less than y")
    else:
    print("x is equal to y")
    
    for fruit in fruits:
    print(fruit)
    
    i = 0
    while i < 5:
    print(i)
    i += 1
    
    # 函数
    def greet(name):
    return f"Hello, {name}!"
    
    message = greet("Alice")
    print(message)
    
    # 输入输出
    user_input = input("请输入您的名字: ")
    print(f"您好, {user_input}!")
    
    # 异常处理
    try:
    number = int(input("请输入一个数字: "))
    result = 10 / number
    print(f"结果是: {result}")
    except ValueError:
    print("输入的不是有效的数字")
    except ZeroDivisionError:
    print("除数不能为零")
    finally:
    print("程序结束")

全部评论 (0)

还没有任何评论哟~