Python3 基础:变量、数据类型和基本运算

一、变量:Python 中的小盒子

想象一下,变量就像是带标签的盒子,你可以在里面放东西,以后需要时再拿出来用。在 Python 中创建变量非常简单:

# 创建一个名为 name 的变量,里面放入字符串 "小明"
name = "小明"

# 创建一个名为 age 的变量,里面放入数字 18
age = 18

# 使用这些变量
print(f"大家好,我是{name},今年{age}岁")

变量的特点

  1. 无需声明类型:Python 是动态类型语言,不需要提前声明变量类型

  2. 可以随时改变内容:就像换盒子里的东西一样简单

    x = 10      # x 现在是整数
    x = "hello" # x 现在是字符串
    x = [1, 2, 3] # x 现在是列表
    
  3. 命名规则

    • 只能包含字母、数字和下划线
    • 不能以数字开头
    • 不能使用 Python 关键字(如 if, for, while 等)
    • 区分大小写(nameName 是不同的变量)
  4. Python 命名习惯:多个单词用下划线连接(snake_case)

    user_name = "python_lover"
    first_name = "小"
    last_name = "明"
    

二、数据类型:Python 的百宝箱

Python 有几种基本的数据类型,就像不同形状的积木,我们可以用它们构建复杂的结构。

数字类型:计算的基础

1. 整数(int)

整数就是没有小数部分的数字,可以是正数、负数或零。

age = 25
temperature = -5
count = 0

# 大整数也不在话下
big_number = 1234567890123456789
2. 浮点数(float)

浮点数是有小数部分的数字。

height = 1.75
pi = 3.14159
small = 0.000001

# 科学计数法
large = 6.022e23  # 6.022 × 10²³
3. 复数(complex)

是的,Python 内置支持复数!

c = 3 + 4j  # 其中 j 表示虚数单位

文本类型:字符串(str)

字符串是用引号(单引号或双引号)括起来的文本。

name = "小明"
message = '你好,世界!'

# 三引号可以创建多行字符串
poem = """
床前明月光,
疑是地上霜。
举头望明月,
低头思故乡。
"""
字符串的一些有趣操作
# 连接字符串
greeting = "你好" + "," + "世界!"

# 重复字符串
stars = "*" * 10  # **********

# 获取单个字符(索引从0开始)
first_char = name[0]  # 小

# 字符串切片
substring = message[0:2]  # 你好

# 字符串格式化
info = f"{name}说:{message}"

布尔类型(bool):真与假

布尔值只有两个可能的值:TrueFalse

is_student = True
has_car = False

# 布尔运算
can_drive = is_student and has_car  # False
is_working = not is_student  # False

容器类型:收纳多个值

1. 列表(list):有序可变集合

列表用方括号 [] 表示,元素之间用逗号分隔。

# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", True, 3.14]

# 访问列表元素
first_fruit = fruits[0]  # 苹果

# 修改列表元素
fruits[1] = "草莓"  # 现在 fruits 是 ["苹果", "草莓", "橙子"]

# 添加元素
fruits.append("西瓜")  # 现在 fruits 是 ["苹果", "草莓", "橙子", "西瓜"]

# 列表长度
fruit_count = len(fruits)  # 4
2. 元组(tuple):有序不可变集合

元组用圆括号 () 表示,创建后不能修改。

# 创建元组
coordinates = (10, 20)
rgb = (255, 0, 0)  # 红色

# 访问元组元素
x = coordinates[0]  # 10

# 不能修改元组元素
# rgb[0] = 128  # 这会导致错误!
3. 字典(dict):键值对集合

字典用花括号 {} 表示,每个元素是一个键值对。

# 创建字典
person = {
    "name": "小明",
    "age": 18,
    "is_student": True
}

# 访问字典值
person_name = person["name"]  # 小明

# 修改字典值
person["age"] = 19

# 添加新的键值对
person["hobby"] = "编程"
4. 集合(set):无序不重复集合

集合也用花括号 {} 表示,但只有值,没有键。

# 创建集合
unique_numbers = {1, 2, 3, 4, 5}
fruits_set = {"苹果", "香蕉", "橙子"}

# 添加元素
fruits_set.add("西瓜")

# 删除元素
fruits_set.remove("香蕉")

# 集合运算
A = {1, 2, 3, 4}
B = {3, 4, 5, 6}
union = A | B  # 并集:{1, 2, 3, 4, 5, 6}
intersection = A & B  # 交集:{3, 4}
difference = A - B  # 差集:{1, 2}

特殊类型

None 类型

None 表示不存在任何值,类似于其他语言中的 null

result = None

三、基本运算:Python 的魔法操作

算术运算符

# 加法
sum_result = 5 + 3  # 8

# 减法
difference = 10 - 7  # 3

# 乘法
product = 4 * 6  # 24

# 除法(返回浮点数)
quotient = 10 / 3  # 3.3333...

# 整除(返回整数部分)
integer_quotient = 10 // 3  # 3

# 取余
remainder = 10 % 3  # 1

# 幂运算
power = 2 ** 3  # 8 (2的3次方)

比较运算符

比较运算符返回布尔值 TrueFalse

# 等于
is_equal = (5 == 5)  # True

# 不等于
is_not_equal = (5 != 10)  # True

# 大于
is_greater = (10 > 5)  # True

# 小于
is_less = (5 < 10)  # True

# 大于等于
is_greater_equal = (5 >= 5)  # True

# 小于等于
is_less_equal = (5 <= 10)  # True

逻辑运算符

# 与运算:两个条件都为真时结果为真
both_true = (True and True)  # True
one_false = (True and False)  # False

# 或运算:至少一个条件为真时结果为真
at_least_one_true = (True or False)  # True
both_false = (False or False)  # False

# 非运算:取反
not_true = not True  # False
not_false = not False  # True

赋值运算符

# 基本赋值
x = 10

# 复合赋值
x += 5  # 等同于 x = x + 5,现在 x 是 15
x -= 3  # 等同于 x = x - 3,现在 x 是 12
x *= 2  # 等同于 x = x * 2,现在 x 是 24
x /= 6  # 等同于 x = x / 6,现在 x 是 4.0

四、类型转换:变形记

有时候需要将一种数据类型转换为另一种:

# 字符串转整数
age_str = "25"
age_int = int(age_str)  # 25 (整数)

# 整数转字符串
count = 100
count_str = str(count)  # "100" (字符串)

# 浮点数转整数(截断小数部分)
pi = 3.14159
pi_int = int(pi)  # 3

# 字符串转浮点数
price_str = "19.99"
price = float(price_str)  # 19.99 (浮点数)

# 转换为布尔值
# 0、空字符串、空列表等被视为 False,其他都是 True
bool(0)    # False
bool("")   # False
bool([])   # False
bool(1)    # True
bool("hi") # True

五、实用技巧和有趣示例

1. 同时给多个变量赋值

# 同时给多个变量赋相同的值
x = y = z = 0

# 一次性给多个变量赋不同的值
a, b, c = 1, 2, 3

# 交换两个变量的值(无需临时变量)
x, y = 10, 20
x, y = y, x  # 现在 x=20, y=10

2. 使用 f-字符串格式化输出

name = "小明"
age = 18
height = 1.75

# 格式化字符串
intro = f"我叫{name},今年{age}岁,身高{height:.2f}米"
print(intro)  # 我叫小明,今年18岁,身高1.75米

3. 链式比较

# 检查一个数是否在一个范围内
age = 25
is_adult = 18 <= age < 65  # True

# 相当于:
# is_adult = (18 <= age) and (age < 65)

4. 三元运算符

# 条件表达式的简写形式
age = 20
status = "成年" if age >= 18 else "未成年"

5. 探索变量类型

x = 42
print(type(x))  # <class 'int'>

y = "Hello"
print(type(y))  # <class 'str'>

z = [1, 2, 3]
print(type(z))  # <class 'list'>

六、动手实践:变量与数据类型的游戏

尝试一下这个简单的个人信息收集程序:

# 收集用户信息
name = input("请输入你的名字:")
age_str = input("请输入你的年龄:")
age = int(age_str)
height_str = input("请输入你的身高(米):")
height = float(height_str)
hobbies_str = input("请输入你的爱好(用逗号分隔):")
hobbies = hobbies_str.split(",")

# 创建用户信息字典
user_info = {
    "name": name,
    "age": age,
    "height": height,
    "hobbies": hobbies,
    "is_adult": age >= 18
}

# 输出用户信息
print("\n===== 用户信息 =====")
print(f"姓名:{user_info['name']}")
print(f"年龄:{user_info['age']}岁")
print(f"身高:{user_info['height']:.2f}米")
print(f"爱好:{', '.join(user_info['hobbies'])}")
print(f"成年状态:{'已成年' if user_info['is_adult'] else '未成年'}")

小结

在 Python 中,变量是存储数据的容器,而数据类型决定了数据的性质和可执行的操作。Python 的动态类型系统使得编码更加灵活,但同时也要注意数据类型的正确使用。

基本运算符让我们能够对数据进行操作,不同类型的数据可以使用不同的运算符。通过类型转换,我们可以在不同数据类型之间自由切换。

掌握这些基础知识后,你就有了用 Python 进行更复杂编程的坚实基础!


思考题

  1. 如果 a = 5b = 2,那么 a / ba // b 的结果各是什么?有什么区别?
  2. 列表和元组有什么主要区别?
  3. 如何检查一个变量是否是某个特定的数据类型?
问题1: 如果 a = 5 和 b = 2,那么 a / b 和 a // b 的结果各是什么?有什么区别?
a = 5
b = 2

print(a / b)   # 输出: 2.5
print(a // b)  # 输出: 2

区别:

  • a / b浮点除法,返回一个浮点数结果,即使两个操作数都是整数。
  • a // b整数除法(地板除法),返回商的整数部分(向下取整),舍弃小数部分。
  • 当操作数为负数时,区别更明显:例如 -5 // 2 结果是 -3,而不是 -2.5 向下取整到 -2
问题2: 列表和元组有什么主要区别?
特性列表 (List)元组 (Tuple)
可变性可变 (mutable)不可变 (immutable)
语法使用方括号 [1, 2, 3]使用圆括号 (1, 2, 3)
方法有多种修改方法如 append(), insert(), remove()方法较少,无修改元素的方法
性能操作较慢操作较快
内存使用较大较小
使用场景需要经常修改的数据集合固定数据,如坐标、配置项
哈希性不可哈希,不能用作字典键如果元素都是可哈希的,则元组可哈希,可用作字典键
问题3: 如何检查一个变量是否是某个特定的数据类型?

在Python中,有几种方法可以检查变量的数据类型:

  1. 使用 type() 函数
x = 5
if type(x) == int:
    print("x 是整数")
  1. 使用 isinstance() 函数(推荐)
x = 5
if isinstance(x, int):
    print("x 是整数")

isinstance()type() 更好,因为它考虑了继承关系:

class MyClass:
    pass

class ChildClass(MyClass):
    pass

obj = ChildClass()

# 检查是否是特定类的实例
print(isinstance(obj, ChildClass))  # True
print(isinstance(obj, MyClass))     # True - 考虑了继承关系
print(type(obj) == MyClass)         # False - 不考虑继承关系
  1. 检查多种类型
x = 5
if isinstance(x, (int, float)):
    print("x 是数字类型")
  1. 使用类型注解和 typing 模块(Python 3.5+)
from typing import List, Dict, Union

def process_data(data: List[int]) -> None:
    if not isinstance(data, list):
        raise TypeError("Expected a list")
    # 处理数据

isinstance() 通常是检查数据类型的最佳选择,因为它尊重类的继承层次结构,并且可以同时检查多种类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值