Python学习笔记(3)|数据类型、变量与运算符:夯实基础,从入门到避坑(附图解+代码)

文章目录

前言

在《第2章 Python编程基础》中,我们搭建了IPO模型,认识了print和input。但真正存储数据、处理数据的主角,是变量数据类型。它们就像盖房子用的砖块和水泥,决定了代码的稳固与功能。今天,我们就彻底吃透《第3章 数据类型和运算符》!

一、变量与常量:给数据安个"家"

1.1 变量:不是盒子,是标签

在Python中,a = 10 这行代码,我们常说"把10赋值给变量a"。但更准确的理解是:在内存中创建了一个值为10的整数对象,然后把标签'a'贴在这个对象上。

python 复制代码
a = 10
print(a, type(a))  # 输出: 10 <class 'int'>
print(id(a))      # 输出对象的内存地址,例如: 140723456789
a = 'Python'    # 标签'a'被撕下来,贴到了一个新的字符串对象上
print(a, type(a))  # 输出: Python <class 'str'>


重点: Python是动态类型语言 ,同一个变量名a可以先后指向不同类型的对象。

1.2 常量:约定俗成的不可变

Python没有语法上的常量(如C语言的const),但我们用全大写字母和下划线来表示一个"不应被修改"的变量,作为一种约定。

python 复制代码
PI = 3.1415926  # 圆周率,视为常量
# PI = 3.14      # 可以修改,但强烈不建议

二、基本数据类型:数据的DNA

Python有三大基本数据类型:数值、字符串、布尔。

2.1 数值类型:精度的艺术
  • 整数 :理论范围无限。支持二进制(0b)、八进制(0o)、十六进制(0x)。

  • 浮点数 :带小数点的数。注意!浮点数计算存在精度误差

    python 复制代码
    print(0.1 + 0.2)  # 输出: 0.30000000000000004 ❌ 并不是预期的0.3
    print(round(0.1 + 0.2, 1))  # 输出: 0.3 ✅ 用round函数解决
  • 复数x = 123 + 456j,科学计算中常用。
2.2 字符串类型:不可变的字符序列
  • 定义 :用单引号'、双引号"或三引号'''括起来。

  • 索引与切片

    python 复制代码
    s = "HELLOWORLD"
    print(s[0])      # 正向索引:H
    print(s[-1])     # 反向索引:D
    print(s[2:7])    # 切片:LLOWO (从索引2到6,不包括7)
    print(s[::2])    # 步长为2的切片:HLOOL
  • 转义字符\n换行,\t制表符,\\反斜杠本身。若字符串前加rR,则转义字符失效。
2.3 布尔类型:逻辑的真与假
  • 只有TrueFalse两个值。

  • 布尔值与数字True是1,False是0。

    python 复制代码
    print(True + 10)   # 输出: 11
    print(False + 10)  # 输出: 10
  • 对象的布尔值 :任何对象都可以被测试布尔值。为False的情况:
    • FalseNone
    • 数字0, 0.0, 0j
    • 空序列:'', (), [], {}, set()

三、数据类型转换:打通任督二脉

函数 作用 示例与注意
int(x) 转为整数 int('3.14')会报错!int('3')可以。浮点转整数截断小数部分。
float(x) 转为浮点数 float('3') -> 3.0
str(x) 转为字符串 str(3.14) -> '3.14'
chr(x) 整数转字符 chr(65) -> 'A'
ord(x) 字符转整数 ord('A') -> 65
eval(s) 执行字符串中的有效Python表达式 eval('10+20') -> 30慎用,存在安全风险。

四、运算符:让数据动起来

4.1 算术运算符

+ - * / (结果为浮点) // (整除) % (取余) ** (幂运算)

4.2 赋值运算符

= += -= *= /= //= %= **=

python 复制代码
a = 10
a += 5  # 等价于 a = a + 5
print(a) # 输出: 15
4.3 比较运算符

> < == (等于) != (不等于) >= <=

4.4 逻辑运算符

and (与) or (或) not (非)
短路求值8>7 and 10/0 不会报错,因为8>7True,但and需要两边都为True,所以计算到10/0,报错!改为8<7 and 10/0则不会计算10/0

4.5 位运算符

& (与) | (或) ^ (异或) ~ (取反) << (左移) >> (右移)(了解即可)

4.6 运算符优先级(从高到低)

算术运算符 > 位运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符

  • 第一级** (幂运算)
  • 第二级~ +x -x (正负号、位取反)
  • 第三级* / % //
  • ... (省略中间) ...
  • 最后级= 赋值运算符
    建议:永远使用**括号`**来明确你的运算顺序,提高代码可读性!

五、本章实战与坑点总结

实战一:从键盘获取一个4位整数,分别输出个位、十位、百位、千位上的数字。

python 复制代码
num = eval(input("请输入一个四位整数: "))
print(f"个位: {num % 10}")
print(f"十位: {num // 10 % 10}")
print(f"百位: {num // 100 % 10}")
print(f"千位: {num // 1000}")


常见坑点:

  1. 浮点数精度 :永远不要用==直接比较两个浮点数是否相等。用abs(a-b) < 0.00001这种方式。
  2. input()类型input()永远返回字符串。进行数值运算前,必须用int()eval()转换。eval()更强大,但如果输入了恶意代码有风险,推荐用int()等明确类型函数。
  3. 变量命名 :不要用Python的保留字(False, True, and等)做变量名。
  4. 链式赋值与解包a = b = 10是链式赋值。a, b = 10, 20是序列解包赋值,可以很方便地交换变量:a, b = b, a
相关推荐
菜的不敢吱声16 分钟前
swift学习第4天
服务器·学习·swift
吃茄子的猫4 小时前
quecpython中&的具体含义和使用场景
开发语言·python
孙严Pay4 小时前
快捷支付:高效安全的在线支付新选择
笔记·科技·计算机网络·其他·微信
じ☆冷颜〃4 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
想进部的张同学4 小时前
hilinux-3599---设备学习---以及部署yolo
学习·yolo·海思
数据大魔方4 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
APIshop4 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨4 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai
效率客栈老秦4 小时前
Python Trae提示词开发实战(8):数据采集与清洗一体化方案让效率提升10倍
人工智能·python·ai·提示词·trae
哈里谢顿5 小时前
一条 Python 语句在 C 扩展里到底怎么跑
python