Python入门教程(新手必看)(终)

简介: 教程来源 https://app-acda5zfcddz5.appmiaoda.com 从控制流(if/while/for)、四大数据结构(列表、元组、字典、集合),到函数定义与作用域、文件读写、异常处理、模块导入,最后通过学生成绩管理系统实战整合所学,强调动手实践,助力初学者扎实入门。

四、控制流:让程序有逻辑

4.1 条件语句(if-elif-else)

# 基本if语句
age = 18
if age >= 18:
    print("成年人")
else:
    print("未成年人")

# 多重条件
score = 85
if score >= 90:
    grade = "优秀"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"
print(f"成绩等级:{grade}")

# 嵌套条件
has_ticket = True
has_id = False
if has_ticket:
    if has_id:
        print("可以入场")
    else:
        print("请出示身份证")
else:
    print("请先购票")

4.2 循环语句
for循环:用于遍历序列

# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我喜欢吃{fruit}")

# 使用range()生成数字序列
for i in range(5):  # 0,1,2,3,4
    print(f"第{i}次循环")

for i in range(1, 10, 2):  # 1,3,5,7,9
    print(f"奇数:{i}")

# 遍历字符串
for char in "Python":
    print(char)

while循环:条件满足时重复执行

# 基本while循环
count = 0
while count < 5:
    print(f"计数:{count}")
    count += 1

# 无限循环(需要break退出)
while True:
    user_input = input("输入'exit'退出:")
    if user_input == "exit":
        break  # 退出循环
    print(f"你输入了:{user_input}")

# continue:跳过本次循环
for i in range(10):
    if i % 2 == 0:
        continue  # 跳过偶数
    print(f"奇数:{i}")

五、数据结构

5.1 列表(List)
列表是Python中最常用的数据结构,可以存储任意类型的元素:

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

# 访问元素
print(fruits[0])      # 苹果(索引从0开始)
print(fruits[-1])     # 橙子(负数表示从后往前)
print(fruits[1:3])    # ['香蕉', '橙子'](切片)

# 修改元素
fruits[1] = "葡萄"
print(fruits)         # ['苹果', '葡萄', '橙子']

# 常用操作
fruits.append("西瓜")      # 末尾添加
fruits.insert(1, "草莓")   # 指定位置插入
fruits.remove("苹果")      # 删除指定元素
last = fruits.pop()        # 删除并返回最后一个
print(f"列表长度:{len(fruits)}")

# 列表推导式(高级用法)
squares = [x ** 2 for x in range(10)]  # 生成0-9的平方
even_numbers = [x for x in range(20) if x % 2 == 0]  # 筛选偶数

5.2 元组(Tuple)
元组是不可变的列表,创建后不能修改:

# 创建元组
point = (10, 20)
colors = ("红", "绿", "蓝")
single = (1,)  # 单元素元组需要逗号

# 访问元素
print(point[0])      # 10
print(colors[1])     # 绿

# 解包
x, y = point
print(f"x={x}, y={y}")

# 元组不可修改
# point[0] = 5  # 错误!

5.3 字典(Dictionary)
字典存储键值对,类似于现实中的词典:

# 创建字典
person = {
    "name": "张三",
    "age": 25,
    "city": "北京"
}

# 访问值
print(person["name"])      # 张三
print(person.get("age"))   # 25
print(person.get("gender", "未知"))  # 不存在时返回默认值

# 修改/添加
person["age"] = 26         # 修改
person["job"] = "工程师"    # 添加新键值对

# 删除
del person["city"]
age = person.pop("age")    # 删除并返回值

# 遍历
for key, value in person.items():
    print(f"{key}: {value}")

for key in person.keys():   # 遍历键
    print(key)

for value in person.values(): # 遍历值
    print(value)

5.4 集合(Set)
集合存储无序、不重复的元素:

# 创建集合
fruits = {"苹果", "香蕉", "橙子"}
numbers = set([1, 2, 3, 2, 1])  # 结果为 {1, 2, 3}

# 添加/删除
fruits.add("葡萄")
fruits.remove("香蕉")

# 集合运算
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
print(a & b)  # 交集:{3, 4}
print(a | b)  # 并集:{1, 2, 3, 4, 5, 6}
print(a - b)  # 差集:{1, 2}
print(a ^ b)  # 对称差:{1, 2, 5, 6}

六、函数

6.1 定义和调用函数

# 基本函数
def greet(name):
    """打印问候语"""  # 文档字符串
    print(f"你好,{name}!")

# 调用函数
greet("李四")

# 带返回值的函数
def add(a, b):
    """计算两数之和"""
    return a + b

result = add(5, 3)
print(result)  # 8

# 多个返回值
def get_person():
    return "张三", 25, "北京"  # 返回元组

name, age, city = get_person()
print(name, age, city)

6.2 参数类型

# 位置参数(必须按顺序传递)
def power(base, exponent):
    return base ** exponent

print(power(2, 3))  # 8

# 默认参数
def greet(name, greeting="你好"):
    print(f"{greeting},{name}")

greet("张三")           # 你好,张三
greet("李四", "早上好")  # 早上好,李四

# 关键字参数
def introduce(name, age, city):
    print(f"我是{name},今年{age}岁,来自{city}")

introduce(age=25, city="北京", name="王五")  # 顺序可以任意

# 可变参数
def sum_all(*args):
    """接收任意数量参数"""
    total = 0
    for num in args:
        total += num
    return total

print(sum_all(1, 2, 3, 4, 5))  # 15

# 关键字可变参数
def print_info(**kwargs):
    """接收任意数量关键字参数"""
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="张三", age=25, city="北京")

6.3 变量作用域

# 全局变量
global_var = 100

def test_scope():
    # 局部变量
    local_var = 50
    print(f"函数内访问全局变量:{global_var}")
    print(f"函数内访问局部变量:{local_var}")

    # 修改全局变量需要使用global
    global global_var
    global_var = 200

test_scope()
print(f"函数外访问全局变量:{global_var}")
# print(local_var)  # 错误!无法访问局部变量

七、文件操作

7.1 读取文件

# 读取整个文件
with open("test.txt", "r", encoding="utf-8") as file:
    content = file.read()
    print(content)

# 逐行读取
with open("test.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line.strip())  # strip()去除换行符

# 读取所有行到列表
with open("test.txt", "r", encoding="utf-8") as file:
    lines = file.readlines()
    print(f"文件共有{len(lines)}行")

7.2 写入文件

# 覆盖写入
with open("output.txt", "w", encoding="utf-8") as file:
    file.write("第一行\n")
    file.write("第二行\n")

# 追加写入
with open("output.txt", "a", encoding="utf-8") as file:
    file.write("第三行(追加)\n")

# 写入多行
lines = ["苹果", "香蕉", "橙子"]
with open("fruits.txt", "w", encoding="utf-8") as file:
    file.writelines(line + "\n" for line in lines)

八、异常处理

8.1 try-except语句

try:
    # 可能出错的代码
    num = int(input("请输入一个数字:"))
    result = 10 / num
    print(f"结果是:{result}")
except ValueError:
    # 输入不是数字
    print("输入无效,请输入数字")
except ZeroDivisionError:
    # 除数为0
    print("除数不能为0")
except Exception as e:
    # 其他所有异常
    print(f"发生错误:{e}")
else:
    # 没有异常时执行
    print("计算成功完成")
finally:
    # 无论是否异常都执行
    print("程序结束")

8.2 自定义异常

class AgeError(Exception):
    """年龄错误异常"""
    pass

def check_age(age):
    if age < 0:
        raise AgeError("年龄不能为负数")
    elif age > 150:
        raise AgeError("年龄太大,不合理")
    return age

try:
    age = int(input("请输入年龄:"))
    check_age(age)
    print(f"年龄{age}有效")
except AgeError as e:
    print(f"年龄验证失败:{e}")
except ValueError:
    print("请输入有效的数字")

九、模块与包

9.1 导入模块

# 导入整个模块
import math
print(math.sqrt(16))  # 4.0

# 导入特定函数
from random import randint, choice
print(randint(1, 10))  # 1-10随机整数
print(choice(["苹果", "香蕉", "橙子"]))  # 随机选择一个

# 导入所有内容(不推荐)
from datetime import *
print(datetime.now())

# 使用别名
import numpy as np
import pandas as pd

9.2 常用标准库
image.png
9.3 创建自己的模块
mymodule.py:

# 自定义模块
def say_hello(name):
    return f"你好,{name}"

PI = 3.14159

class Person:
    def __init__(self, name):
        self.name = name

main.py:

# 导入自定义模块
import mymodule
print(mymodule.say_hello("张三"))
print(mymodule.PI)

p = mymodule.Person("李四")
print(p.name)

十、实战案例

将所学知识整合,创建一个简单的学生成绩管理系统:

# student_management.py
import json
import os

class StudentManager:
    """学生成绩管理系统"""

    def __init__(self, filename="students.json"):
        self.filename = filename
        self.students = self.load_data()

    def load_data(self):
        """加载数据"""
        if os.path.exists(self.filename):
            with open(self.filename, "r", encoding="utf-8") as f:
                return json.load(f)
        return []

    def save_data(self):
        """保存数据"""
        with open(self.filename, "w", encoding="utf-8") as f:
            json.dump(self.students, f, ensure_ascii=False, indent=2)
        print("数据保存成功!")

    def add_student(self):
        """添加学生"""
        print("\n--- 添加学生 ---")
        name = input("姓名:")
        try:
            chinese = float(input("语文成绩:"))
            math = float(input("数学成绩:"))
            english = float(input("英语成绩:"))
        except ValueError:
            print("成绩输入无效,请重新输入")
            return

        student = {
            "name": name,
            "scores": {
                "chinese": chinese,
                "math": math,
                "english": english
            }
        }
        self.students.append(student)
        self.save_data()
        print(f"学生{name}添加成功!")

    def show_all(self):
        """显示所有学生"""
        if not self.students:
            print("暂无学生数据")
            return

        print("\n--- 学生成绩列表 ---")
        for i, student in enumerate(self.students, 1):
            name = student["name"]
            scores = student["scores"]
            total = sum(scores.values())
            avg = total / 3
            print(f"{i}. {name} - 语文:{scores['chinese']} 数学:{scores['math']} 英语:{scores['english']} 总分:{total:.1f} 平均:{avg:.1f}")

    def search_student(self):
        """搜索学生"""
        name = input("请输入要搜索的学生姓名:")
        found = False
        for student in self.students:
            if student["name"] == name:
                scores = student["scores"]
                total = sum(scores.values())
                avg = total / 3
                print(f"\n姓名:{name}")
                print(f"语文:{scores['chinese']}")
                print(f"数学:{scores['math']}")
                print(f"英语:{scores['english']}")
                print(f"总分:{total:.1f}")
                print(f"平均:{avg:.1f}")
                found = True
                break
        if not found:
            print(f"未找到学生:{name}")

    def delete_student(self):
        """删除学生"""
        name = input("请输入要删除的学生姓名:")
        for i, student in enumerate(self.students):
            if student["name"] == name:
                self.students.pop(i)
                self.save_data()
                print(f"学生{name}已删除")
                return
        print(f"未找到学生:{name}")

    def run(self):
        """运行主程序"""
        while True:
            print("\n" + "="*30)
            print("学生成绩管理系统")
            print("="*30)
            print("1. 添加学生")
            print("2. 显示所有学生")
            print("3. 搜索学生")
            print("4. 删除学生")
            print("5. 退出系统")

            choice = input("请选择操作(1-5):")

            if choice == "1":
                self.add_student()
            elif choice == "2":
                self.show_all()
            elif choice == "3":
                self.search_student()
            elif choice == "4":
                self.delete_student()
            elif choice == "5":
                print("感谢使用学生成绩管理系统!")
                break
            else:
                print("无效选择,请重新输入")

# 启动程序
if __name__ == "__main__":
    manager = StudentManager()
    manager.run()

对于初学者而言,最重要的是动手实践。不要停留在阅读文档,尽快创建你的第一个Python程序,然后逐步增加功能。随着一个个小项目的完成,你对Python的理解会越来越深入,编写代码也会越来越得心应手。
来源:
https://app-acda5zfcddz5.appmiaoda.com

相关文章
|
11天前
|
人工智能 安全 Linux
【OpenClaw保姆级图文教程】阿里云/本地部署集成模型Ollama/Qwen3.5/百炼 API 步骤流程及避坑指南
2026年,AI代理工具的部署逻辑已从“单一云端依赖”转向“云端+本地双轨模式”。OpenClaw(曾用名Clawdbot)作为开源AI代理框架,既支持对接阿里云百炼等云端免费API,也能通过Ollama部署本地大模型,完美解决两类核心需求:一是担心云端API泄露核心数据的隐私安全诉求;二是频繁调用导致token消耗过高的成本控制需求。
5557 13
|
18天前
|
人工智能 JavaScript Ubuntu
5分钟上手龙虾AI!OpenClaw部署(阿里云+本地)+ 免费多模型配置保姆级教程(MiniMax、Claude、阿里云百炼)
OpenClaw(昵称“龙虾AI”)作为2026年热门的开源个人AI助手,由PSPDFKit创始人Peter Steinberger开发,核心优势在于“真正执行任务”——不仅能聊天互动,还能自动处理邮件、管理日程、订机票、写代码等,且所有数据本地处理,隐私完全可控。它支持接入MiniMax、Claude、GPT等多类大模型,兼容微信、Telegram、飞书等主流聊天工具,搭配100+可扩展技能,成为兼顾实用性与隐私性的AI工具首选。
22111 118

热门文章

最新文章