<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>基础 on 老张开工了</title>
    <link>/%E5%9F%BA%E7%A1%80/</link>
    <description>Recent content in 基础 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Fri, 08 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="/%E5%9F%BA%E7%A1%80/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>循环结构与迭代</title>
      <link>/posts/2026/05/loops/</link>
      <pubDate>Fri, 08 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/loops/</guid>
      <description>条件判断让程序有了决策能力，而循环让程序能够重复执行代码块。循环是编程中最强大的工具之一——它让我们能用几行代码处理成千上万的数据。&#xA;Python 提供两种主要的循环结构：for 循环（用于遍历可迭代对象）和 while 循环（用于条件控制）。&#xA;for 循环 for 循环用于遍历可迭代对象（如列表、元组、字符串、字典、集合等）。&#xA;基本语法 # for 循环的基本结构 fruits = [&amp;#34;苹果&amp;#34;, &amp;#34;香蕉&amp;#34;, &amp;#34;橙子&amp;#34;] for fruit in fruits: print(f&amp;#34;我喜欢吃{fruit}&amp;#34;) # 输出： # 我喜欢吃苹果 # 我喜欢吃香蕉 # 我喜欢吃橙子 遍历不同类型的序列 # 遍历字符串 for char in &amp;#34;Python&amp;#34;: print(char, end=&amp;#34; &amp;#34;) print() # P y t h o n # 遍历元组 for color in (&amp;#34;red&amp;#34;, &amp;#34;green&amp;#34;, &amp;#34;blue&amp;#34;): print(color, end=&amp;#34; &amp;#34;) print() # red green blue # 遍历集合（顺序不确定） for num in {3, 1, 4, 1, 5, 9}: print(num, end=&amp;#34; &amp;#34;) print() # 1 3 4 5 9（自动去重，顺序可能不同） # 遍历字典（默认遍历键） student = {&amp;#34;name&amp;#34;: &amp;#34;张三&amp;#34;, &amp;#34;age&amp;#34;: 20, &amp;#34;score&amp;#34;: 85} for key in student: print(key, end=&amp;#34; &amp;#34;) print() # name age score # 遍历字典的键值对 for key, value in student.</description>
    </item>
    <item>
      <title>条件判断与分支控制</title>
      <link>/posts/2026/05/conditionals/</link>
      <pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/conditionals/</guid>
      <description>到目前为止，我们学习的程序都是按顺序从上到下逐行执行的。但在实际编程中，我们需要程序能够根据不同的条件做出不同的决策——这就要用到条件判断。条件判断是程序控制流的三大结构之一（顺序、分支、循环）。&#xA;if/elif/else 基本结构 Python 使用 if、elif、else 关键字来实现分支控制，最特别的是用缩进而不是花括号来划定代码块。&#xA;基本语法 # if 语句的基本结构 age = 18 if age &amp;gt;= 18: print(&amp;#34;你已成年&amp;#34;) print(&amp;#34;可以考驾照了&amp;#34;) print(&amp;#34;程序结束&amp;#34;) # 输出： # 你已成年 # 可以考驾照了 # 程序结束 if/else 二选一 # if/else 结构 age = 16 if age &amp;gt;= 18: print(&amp;#34;允许进入&amp;#34;) else: print(&amp;#34;禁止进入&amp;#34;) # 输出：禁止进入 if/elif/else 多选一 # 多条件分支 score = 85 if score &amp;gt;= 90: grade = &amp;#34;优秀&amp;#34; elif score &amp;gt;= 80: grade = &amp;#34;良好&amp;#34; elif score &amp;gt;= 70: grade = &amp;#34;中等&amp;#34; elif score &amp;gt;= 60: grade = &amp;#34;及格&amp;#34; else: grade = &amp;#34;不及格&amp;#34; print(f&amp;#34;成绩等级: {grade}&amp;#34;) # 成绩等级: 良好 # 注意：只会执行第一个满足条件的分支 score = 95 if score &amp;gt;= 90: print(&amp;#34;优秀&amp;#34;) # 只执行这个 elif score &amp;gt;= 80: print(&amp;#34;良好&amp;#34;) # 不会执行 elif score &amp;gt;= 60: print(&amp;#34;及格&amp;#34;) # 不会执行 Python 条件判断的特点 # 1.</description>
    </item>
    <item>
      <title>字典与集合</title>
      <link>/posts/2026/05/dict-set/</link>
      <pubDate>Wed, 06 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/dict-set/</guid>
      <description>上一篇文章我们学习了列表和元组这两种有序的序列类型。今天我们要学习的字典和集合则是以哈希表为基础的另一类数据结构，它们的特点是无序、高效，在实际编程中有着极其广泛的应用。&#xA;字典（Dict） 字典是一种键值对映射结构，通过键来快速查找对应的值。你可以把它想象成一本真正的字典——通过&amp;quot;词条&amp;quot;（键）来查找&amp;quot;释义&amp;quot;（值）。&#xA;创建字典 # 多种创建字典的方式 # 方式1：花括号 student = { &amp;#34;name&amp;#34;: &amp;#34;张三&amp;#34;, &amp;#34;age&amp;#34;: 20, &amp;#34;score&amp;#34;: 85 } print(student) # {&amp;#39;name&amp;#39;: &amp;#39;张三&amp;#39;, &amp;#39;age&amp;#39;: 20, &amp;#39;score&amp;#39;: 85} # 方式2：dict() 构造函数 person = dict(name=&amp;#34;李四&amp;#34;, age=25, city=&amp;#34;北京&amp;#34;) print(person) # {&amp;#39;name&amp;#39;: &amp;#39;李四&amp;#39;, &amp;#39;age&amp;#39;: 25, &amp;#39;city&amp;#39;: &amp;#39;北京&amp;#39;} # 方式3：由键值对列表创建 pairs = [(&amp;#34;name&amp;#34;, &amp;#34;王五&amp;#34;), (&amp;#34;age&amp;#34;, 30), (&amp;#34;city&amp;#34;, &amp;#34;上海&amp;#34;)] data = dict(pairs) print(data) # {&amp;#39;name&amp;#39;: &amp;#39;王五&amp;#39;, &amp;#39;age&amp;#39;: 30, &amp;#39;city&amp;#39;: &amp;#39;上海&amp;#39;} # 方式4：zip 创建 keys = [&amp;#34;name&amp;#34;, &amp;#34;age&amp;#34;, &amp;#34;city&amp;#34;] values = [&amp;#34;赵六&amp;#34;, 22, &amp;#34;广州&amp;#34;] info = dict(zip(keys, values)) print(info) # {&amp;#39;name&amp;#39;: &amp;#39;赵六&amp;#39;, &amp;#39;age&amp;#39;: 22, &amp;#39;city&amp;#39;: &amp;#39;广州&amp;#39;} # 方式5：字典推导式 squares = {x: x ** 2 for x in range(5)} print(squares) # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} # 空字典 empty_dict = {} empty_dict2 = dict() 访问字典元素 student = {&amp;#34;name&amp;#34;: &amp;#34;张三&amp;#34;, &amp;#34;age&amp;#34;: 20, &amp;#34;score&amp;#34;: 85} # 使用方括号访问（键不存在会报错） print(student[&amp;#34;name&amp;#34;]) # 张三 print(student[&amp;#34;age&amp;#34;]) # 20 # print(student[&amp;#34;grade&amp;#34;]) # KeyError!</description>
    </item>
    <item>
      <title>列表与元组详解</title>
      <link>/posts/2026/05/list-tuple/</link>
      <pubDate>Tue, 05 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/list-tuple/</guid>
      <description>前面我们学习了字符串，它是 Python 中的一种序列类型。今天我们将学习另外两种非常重要的序列类型——列表和元组。它们可以存储多个元素，是 Python 编程中使用最频繁的数据结构之一。&#xA;列表（List） 列表是 Python 中最灵活、最常用的序列类型。它是一个有序、可变的容器，可以存储任意类型的元素。&#xA;创建列表 # 创建列表的几种方式 empty_list = [] # 空列表 numbers = [1, 2, 3, 4, 5] # 整数列表 mixed = [1, &amp;#34;hello&amp;#34;, 3.14, True] # 混合类型 nested = [[1, 2], [3, 4], [5, 6]] # 嵌套列表（二维） # 使用 list() 构造 chars = list(&amp;#34;Python&amp;#34;) # [&amp;#39;P&amp;#39;, &amp;#39;y&amp;#39;, &amp;#39;t&amp;#39;, &amp;#39;h&amp;#39;, &amp;#39;o&amp;#39;, &amp;#39;n&amp;#39;] range_list = list(range(5)) # [0, 1, 2, 3, 4] # 列表推导式（创建列表的简洁方式） squares = [x ** 2 for x in range(10)] # [0, 1, 4, 9, .</description>
    </item>
    <item>
      <title>字符串操作深入</title>
      <link>/posts/2026/05/string-operations/</link>
      <pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/string-operations/</guid>
      <description>字符串是 Python 中使用最频繁的数据类型之一。无论是从用户获取输入、读写文件、处理网络数据，还是生成报告，字符串操作无处不在。Python 的字符串处理能力非常强大，掌握好字符串操作能让你在处理文本时事半功倍。&#xA;字符串基础 创建字符串 # 四种创建方式 s1 = &amp;#39;单引号字符串&amp;#39; s2 = &amp;#34;双引号字符串&amp;#34; s3 = &amp;#39;&amp;#39;&amp;#39;三单引号 支持换行&amp;#39;&amp;#39;&amp;#39; s4 = &amp;#34;&amp;#34;&amp;#34;三双引号 也支持换行&amp;#34;&amp;#34;&amp;#34; print(s1) # 单引号字符串 print(s2) # 双引号字符串 print(s3) # 三单引号\n支持换行 单引号 vs 双引号 两种方式完全等价，选择标准是方便性：&#xA;# 字符串本身包含单引号时，用双引号更省事 msg1 = &amp;#34;It&amp;#39;s a beautiful day&amp;#34; # 不用转义 msg2 = &amp;#39;It\&amp;#39;s a beautiful day&amp;#39; # 需要转义 # 字符串本身包含双引号时，用单引号更省事 msg3 = &amp;#39;他说：&amp;#34;你好&amp;#34;&amp;#39; msg4 = &amp;#34;他说：\&amp;#34;你好\&amp;#34;&amp;#34; 字符串索引与切片 索引 Python 字符串支持正索引（从 0 开始）和负索引（从 -1 开始）：&#xA;text = &amp;#34;Python&amp;#34; # 正索引（从 0 到 length-1） print(text[0]) # P print(text[1]) # y print(text[5]) # n # 负索引（从 -1 到 -length） print(text[-1]) # n（最后一个字符） print(text[-2]) # o（倒数第二个） print(text[-6]) # P（第一个字符） # 索引越界 # print(text[100]) # IndexError: string index out of range 切片（Slicing） 切片是 Python 最强大的特性之一，语法为 [start:stop:step]：</description>
    </item>
    <item>
      <title>运算符与表达式</title>
      <link>/posts/2026/05/operators-expressions/</link>
      <pubDate>Sun, 03 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/operators-expressions/</guid>
      <description>前面两篇文章我们学习了变量和数据类型，现在你已经能用变量存储各种数据了。但仅仅存储数据是不够的——我们需要对数据进行操作和计算。这就需要用到运算符和表达式。&#xA;在 Python 中，表达式是由变量、字面量和运算符组成的可求值代码片段。例如 2 + 3 是一个表达式，它的值是 5。&#xA;算术运算符 算术运算符用于执行数学计算，是编程中最基础的操作。&#xA;# 基本算术运算 a = 10 b = 3 print(f&amp;#34;a + b = {a + b}&amp;#34;) # 13 加法 print(f&amp;#34;a - b = {a - b}&amp;#34;) # 7 减法 print(f&amp;#34;a * b = {a * b}&amp;#34;) # 30 乘法 print(f&amp;#34;a / b = {a / b}&amp;#34;) # 3.3333333333333335 除法（结果总是浮点数） print(f&amp;#34;a // b = {a // b}&amp;#34;) # 3 整除（向下取整） print(f&amp;#34;a % b = {a % b}&amp;#34;) # 1 取余（模运算） print(f&amp;#34;a ** b = {a ** b}&amp;#34;) # 1000 幂运算 整除的细节 整除 // 的结果是&amp;quot;向下取整&amp;quot;，对于负数需要特别注意：</description>
    </item>
    <item>
      <title>变量与基本数据类型</title>
      <link>/posts/2026/05/variables-datatypes/</link>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <guid>/posts/2026/05/variables-datatypes/</guid>
      <description>在上一篇文章中，我们搭建好了开发环境并成功运行了第一个 Python 程序。从这篇文章开始，我们将正式进入 Python 编程的核心内容。今天要学习的是编程中最基础的概念——变量与数据类型。&#xA;变量 变量是用于存储数据的&amp;quot;容器&amp;quot;。你可以把它想象成一个贴了标签的盒子——标签是变量名，盒子里装的是数据。&#xA;变量的赋值 Python 中使用 = 进行赋值操作：&#xA;# 基本赋值 name = &amp;#34;小明&amp;#34; age = 25 height = 1.75 is_student = True # 输出变量 print(name) # 小明 print(age) # 25 print(height) # 1.75 print(is_student) # True Python 是动态类型语言，变量的类型在赋值时自动确定，且可以随时改变：&#xA;# 动态类型示例 x = 10 # x 是整数 print(type(x)) # &amp;lt;class &amp;#39;int&amp;#39;&amp;gt; x = &amp;#34;Hello&amp;#34; # x 现在是字符串 print(type(x)) # &amp;lt;class &amp;#39;str&amp;#39;&amp;gt; x = 3.14 # x 现在是浮点数 print(type(x)) # &amp;lt;class &amp;#39;float&amp;#39;&amp;gt; 多重赋值 Python 支持简洁的多重赋值语法：</description>
    </item>
    <item>
      <title>查询与过滤</title>
      <link>/posts/2025/02/query-and-filter/</link>
      <pubDate>Wed, 05 Feb 2025 10:00:00 +0800</pubDate>
      <guid>/posts/2025/02/query-and-filter/</guid>
      <description>SELECT 基础 创建练习表并插入数据 -- 创建练习数据库 CREATE DATABASE practice; \c practice -- 创建员工表 CREATE TABLE employees ( id SERIAL PRIMARY KEY, name VARCHAR(50) NOT NULL, department VARCHAR(30), salary NUMERIC(10,2), hire_date DATE, is_active BOOLEAN DEFAULT true ); -- 插入测试数据 INSERT INTO employees (name, department, salary, hire_date, is_active) VALUES (&amp;#39;张三&amp;#39;, &amp;#39;技术部&amp;#39;, 15000, &amp;#39;2023-01-15&amp;#39;, true), (&amp;#39;李四&amp;#39;, &amp;#39;技术部&amp;#39;, 18000, &amp;#39;2022-06-01&amp;#39;, true), (&amp;#39;王五&amp;#39;, &amp;#39;市场部&amp;#39;, 12000, &amp;#39;2023-03-10&amp;#39;, true), (&amp;#39;赵六&amp;#39;, &amp;#39;市场部&amp;#39;, 11000, &amp;#39;2024-01-20&amp;#39;, true), (&amp;#39;钱七&amp;#39;, &amp;#39;技术部&amp;#39;, 22000, &amp;#39;2021-09-01&amp;#39;, true), (&amp;#39;孙八&amp;#39;, &amp;#39;人事部&amp;#39;, 9000, &amp;#39;2024-07-15&amp;#39;, true), (&amp;#39;周九&amp;#39;, &amp;#39;人事部&amp;#39;, 9500, &amp;#39;2023-11-01&amp;#39;, true), (&amp;#39;吴十&amp;#39;, &amp;#39;技术部&amp;#39;, 16000, &amp;#39;2023-06-20&amp;#39;, false), (&amp;#39;郑一&amp;#39;, &amp;#39;市场部&amp;#39;, 10000, &amp;#39;2024-09-01&amp;#39;, true), (&amp;#39;陈二&amp;#39;, &amp;#39;财务部&amp;#39;, 13000, &amp;#39;2022-12-01&amp;#39;, true); 基本 SELECT -- 查询所有列 SELECT * FROM employees; -- 查询指定列 SELECT name, salary FROM employees; -- 列别名 SELECT name AS 姓名, salary AS 工资 FROM employees; -- 列计算 SELECT name, salary, salary * 1.</description>
    </item>
    <item>
      <title>建表与数据类型</title>
      <link>/posts/2025/02/table-and-datatypes/</link>
      <pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate>
      <guid>/posts/2025/02/table-and-datatypes/</guid>
      <description>数据类型概览 PostgreSQL 支持丰富的数据类型，是 SQL 标准实现最全面的数据库之一。&#xA;数值类型 -- 整数类型 SMALLINT -- 2字节，范围 -32768 ~ 32767 INTEGER -- 4字节，范围 -21亿 ~ 21亿 BIGINT -- 8字节，范围超大 -- 精确小数 NUMERIC(10,2) -- 总共10位，小数点后2位，精确计算 DECIMAL(10,2) -- NUMERIC 的别名 -- 浮点类型 REAL -- 4字节，6位十进制精度 DOUBLE PRECISION -- 8字节，15位十进制精度 -- 自增类型 SMALLSERIAL -- 2字节自增 SERIAL -- 4字节自增（常用） BIGSERIAL -- 8字节自增 字符串类型 CHAR(n) -- 定长字符串，不足补空格 VARCHAR(n) -- 变长字符串，有长度限制（最常用） TEXT -- 不限长度字符串（无性能损失） 经验：不要被 CHAR 的&amp;quot;性能优势&amp;quot;迷惑。在 PostgreSQL 中，VARCHAR 和 TEXT 几乎没有性能差异。大多数场景直接使用 TEXT 最省心。如果需要限制长度，用 VARCHAR(n)。</description>
    </item>
  </channel>
</rss>
