跳到主要内容
Python 初学者必会的常用代码示例与算法解析 | 极客日志
Python AI 算法
Python 初学者必会的常用代码示例与算法解析 Python 及数据结构算法的 18 个核心代码示例,涵盖循环控制、列表操作、枚举、素数判断及顺序表处理等基础知识点。内容包含代码实现、逻辑解析及复杂度分析,旨在帮助初学者理解编程基本结构,掌握常见算法思想,为后续深入学习爬虫、数据分析或人工智能打下坚实基础。
flc 发布于 2025/2/6 更新于 2026/6/2 19 浏览Python 编程入门:18 个核心代码示例与算法解析
前言
对于编程初学者而言,理解基础语法和常见算法模式是构建技术大厦的基石。许多新手往往被复杂的英文术语和庞大的代码库所吓倒,但实际上,绝大多数程序都是由基础的语句和逻辑组合而成的。本文精选了 18 个在 Python 及数据结构中极具代表性的代码示例,涵盖循环控制、列表操作、枚举使用、素数判断以及顺序表算法等核心知识点。通过深入分析这些示例,读者可以掌握编程的基本逻辑,为后续学习爬虫、数据分析或人工智能打下坚实基础。
一、Python 基础语法示例
1. for 循环中的 else 条件
在 Python 中,for...else 结构常用于遍历查找。当循环正常结束(未被 break 中断)时执行 else 块。这非常适合用于'查找是否存在'的场景。
numbers = [2 , 4 , 6 , 8 , 1 ]
for number in numbers:
if number % 2 == 1 :
print (number)
break
else :
print ("No odd numbers" )
解析 :如果找到奇数,打印并跳出循环,else 不执行;如果遍历完所有数字都没找到奇数,则执行 else 输出提示。
2. 数字求和
处理用户输入并进行计算是编程中最常见的任务之一。注意处理输入类型转换。
num1 = input ('输入第一个数字:' )
num2 = input ('输入第二个数字:' )
sum_result = float (num1) + float (num2)
print ('数字 {0} 和 {1} 相加结果为:{2}' .format (num1, num2, sum_result))
解析 :input() 返回字符串,必须转换为 float 或 int 才能进行数学运算。使用 format 方法格式化输出更清晰。
3. 随机数生成
利用标准库 random 模块可以轻松生成指定范围内的随机整数。
import random
print (random.randint(0 , 9 ))
解析 :randint(a, b) 函数返回一个包含 a 和 b 的随机整数。每次运行可能得到不同结果,适用于模拟、游戏或测试数据生成。
4. 将列表中的所有元素作为参数传递给函数 my_list = [1 , 2 , 3 , 4 ]
print (my_list)
print (*my_list)
解析 :*my_list 将列表元素解包,使得它们可以作为独立参数传递给函数,例如 print(*list) 等同于 print(1, 2, 3, 4)。
5. 获取列表的所有中间元素 _, *elements_in_the_middle, _ = [1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ]
print (elements_in_the_middle)
解析 :_ 丢弃首尾元素,*elements_in_the_middle 捕获中间所有剩余元素。这是一种简洁的切片替代写法。
6. 使用一行代码赋值多个变量 Python 支持多重赋值,可在一行内完成多个变量的初始化。
a, b, c = 1 , 2 , 3
print (a, b, c)
解析 :右侧元组按顺序赋值给左侧变量,无需分步声明,提高了代码简洁性。
7. Python 清空列表 使用内置方法 clear() 可以高效清空列表内容。
RUNOOB = [6 , 0 , 4 , 1 ]
print ('清空前:' , RUNOOB)
RUNOOB.clear()
print ('清空后:' , RUNOOB)
解析 :clear() 方法直接修改原列表对象,将其长度置为 0,比重新赋值为空列表更高效。
8. 通过 Enum 枚举同一标签或一系列常量的集合 枚举类型用于定义一组相关的常量,增强代码可读性和安全性。
from enum import Enum
class Status (Enum ):
NO_STATUS = -1
NOT_STARTED = 0
IN_PROGRESS = 1
COMPLETED = 2
print (Status.IN_PROGRESS.name)
print (Status.COMPLETED.value)
解析 :通过类继承 Enum 定义状态,成员可通过 .name 或 .value 访问,避免魔法数字的使用。
9. 重复字符串 name = "Banana"
print (name * 4 )
解析 :这是 Python 特有的语法糖,常用于生成占位符、分隔线或重复文本模式。
10. 计算每个月天数 利用 calendar 模块可以获取特定年月历法信息。
import calendar
monthRange = calendar.monthrange(2016 , 9 )
print (monthRange)
解析 :monthrange(year, month) 返回元组 (weekday, days)。第一个元素表示当月第一天是星期几(0-6),第二个元素是该月总天数。
11. 输出指定范围内的素数 素数判断是经典的算法入门题,涉及嵌套循环和取模运算。
lower = int (input ("输入区间最小值: " ))
upper = int (input ("输入区间最大值: " ))
for num in range (lower, upper + 1 ):
if num > 1 :
for i in range (2 , num):
if (num % i) == 0 :
break
else :
print (num)
解析 :外层循环遍历范围,内层循环检查因子。若内层循环未触发 break(即找到因子),则说明是素数。注意 for...else 在此处的妙用。
12. 计算两数差值 函数定义中可使用命名参数来明确参数含义,防止顺序错误。
def subtract (a, b ):
return a - b
print (subtract(1 , 3 ))
print (subtract(b=3 , a=1 ))
解析 :调用时使用 b=3, a=1 可以忽略位置顺序,提高代码的可读性和健壮性。
二、数据结构与算法示例 以下示例展示了 C/C++ 风格的数据结构操作,体现了算法设计中对时间和空间复杂度的考量。
13. 奇数移到偶数前 要求时间复杂度 O(n),空间复杂度 O(1)。采用双指针法,从两端向中间扫描并交换。
void move (SqList &L)
{
int i = 0 , j = L.length - 1 , k;
ElemType temp;
while (i < j)
{
while (L.data[i] % 2 == 1 )
i++;
while (L.data[j] % 2 == 0 )
j--;
if (i < j)
{
temp = L.data[i];
L.data[i] = L.data[j];
L.data[j] = temp;
}
}
}
解析 :左指针找偶数停下,右指针找奇数停下,交换后继续。直到指针相遇。此算法只需遍历一次数组。
14. 顺序表元素逆置 void reverse (SqList &L)
{
int i;
ElemType x;
for (i = 0 ; i < L.length / 2 ; i++)
{
x = L.data[i];
L.data[i] = L.data[L.length - i - 1 ];
L.data[L.length - i - 1 ] = x;
}
}
解析 :首尾对称交换。只需遍历到中间位置即可,避免了重复交换。
15. 删除顺序表最小值元素 bool Delete_Min (SqList &L, ElemType &value)
{
if (L.length == 0 )
return false ;
value = L.data[0 ];
int pos = 0 ;
int i;
for (i = 1 ; i < L.length; i++)
{
if (L.data[i] < value)
{
value = L.data[i];
pos = i;
}
}
L.data[pos] = L.data[L.length - 1 ];
L.length--;
return true ;
}
解析 :先遍历找到最小值及其下标,然后将最后一个元素覆盖该位置,最后长度减一。
16. 删除值在 x~y 之间的所有数据 void del_xy (SqList &L, ElemType x, ElemType y)
{
int i = 0 , k = 0 ;
while (i < L.length)
{
if (L.data[i] >= x && L.data[i] <= y)
k++;
else
L.data[i - k] = L.data[i];
}
L.length = L.length - k;
}
解析 :使用计数器 k 记录被删除的元素个数。保留有效元素时,将其向前移动 k 位。最终更新长度为原长减去删除数。
17. 打印九九乘法表 for i in range (1 , 10 ):
for j in range (1 , i + 1 ):
print ('{}x{}={} ' .format (j, i, i * j), end='' )
print ()
解析 :外层控制行数,内层控制列数。end='' 保证不换行,每行结束后单独 print()。
三、最佳实践与学习建议
1. 变量命名规范 虽然代码允许随意命名,但良好的命名习惯能极大提升维护效率。建议使用有意义的缩写,如 VoltageValue 而非 abc。遵循驼峰命名法或下划线命名法保持一致。
2. 异常处理 在实际开发中,输入可能不符合预期。建议在关键输入处增加 try-except 块,防止程序因非法输入崩溃。
3. 性能优化 对于大数据量处理,应关注算法的时间复杂度。例如上述顺序表操作均为 O(n),优于 O(n^2) 的暴力解法。在 Python 中,尽量使用内置函数而非手写循环,因为底层实现通常经过优化。
4. 持续学习路径 编程能力的提升依赖于持续的练习。建议按照以下阶段进阶:
基础语法 :掌握数据类型、流程控制、函数定义。
数据结构 :深入理解列表、字典、栈、队列及链表。
算法思维 :练习排序、搜索、动态规划等经典问题。
项目实战 :尝试编写爬虫、数据分析脚本或小型 Web 应用。
结语 编程并非高不可攀的技能,而是逻辑思维的训练工具。通过掌握上述基础代码片段和算法思想,你已经迈出了坚实的一步。记住,代码的正确性不仅在于运行无误,更在于逻辑清晰、易于维护。希望这份整理能帮助你在编程之路上走得更稳更远。
相关免费在线工具 加密/解密文本 使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
RSA密钥对生成器 生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
Mermaid 预览与可视化编辑 基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
随机西班牙地址生成器 随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online
Gemini 图片去水印 基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online