Skip to content
 
📑标签
🏷软件 🏷robot 🏷python

第0章 召唤仪式:安装Python

python
# 官方咒语下载站:https://www.python.org/downloads/
# 安装完成后在终端输入:
print("༼ つ ◕_◕ ༽つ 欢迎来到魔法世界!")  # 记得按回车键施法哦

第1章 初识咒语:变量与数据类型 ✨

变量就像神奇收纳盒,数据类型是盒中宝物:

python
# 数字型宝物
age = 18  # 整型(int)
pi = 3.14  # 浮点型(float)

# 文字型卷轴
name = "哈利·波特"  # 字符串(str)
spell = 'Expelliarmus'  # 单引号也OK

# 真伪之镜
is_wizard = True  # 布尔型(bool)

print(f"{name}今年{age}岁,掌握咒语{spell}!")  # f-string魔法

第2章 魔药配方:列表与字典

python
# 魔药材料清单(列表的魔法)
ingredients = ["曼德拉草根", "火蜥蜴血", "龙鳞粉末"]  # 基础材料就像坩埚三兄弟
ingredients.append("月光水")  # 用魔杖搅拌添加新材料(这步可能引发冒泡反应)
print(f"第三份材料是:{ingredients[2]}")  # 小心索引从0开始,拿错材料会炸成烟花哦🎆

# 当你想偷偷替换材料时...
ingredients[1] = "独角兽眼泪"  # 火蜥蜴血被替换了!斯内普教授正在提刀赶来
print("危险操作后的材料表:", ingredients)  # 输出:['曼德拉草根', '独角兽眼泪', '龙鳞粉末', '月光水']

# 巫师档案册(字典的奥秘)
wizard = {
    "name": "赫敏·格兰杰",
    "house": "格兰芬多",  # 分院帽的最终决定
    "pet": "克鲁克山",    # 这只猫可能比主人还聪明
    "OWLs": ["变形术", "魔药学", "黑魔法防御术"]  # 全优生的秘密武器
}

# 添加隐藏属性(动态扩展字段)
wizard["patronus"] = "水獭"  # 守护神形态需要魔法部登记吗?
print(f"{wizard['name']}的宠物是{wizard.get('pet', '未登记')}")  # get方法比直接访问更安全,就像施了盔甲护身

# 危险的直接访问(可能引发KeyError)
try:
    print(f"守护神形态:{wizard['Patronus']}")  # 注意大小写敏感!字典可不会自动校正拼写
except KeyError as e:
    print(f"触发警报!非法访问:{e}")  # 输出:'Patronus' 这个键就像消失柜一样不见了

🧪 魔药实验室小贴士

  1. 列表的隐藏配方
python
# 用切片实现材料克隆术(注意这是浅拷贝哦)
backup = ingredients[:2]  # 只保留前两份原始材料
print("备用材料罐:", backup)  # 输出:['曼德拉草根', '独角兽眼泪']
  1. 字典的魔法扩展
python
# 用update()合并两个魔法档案
extra_info = {"魔杖材质": "葡萄藤木+龙心弦", "血统": "麻瓜出身"}
wizard.update(extra_info)  # 像用胶带粘贴羊皮纸一样合并信息
print("完整档案:", wizard.keys())  # 输出所有键名:dict_keys(['name', 'house', ...])
  1. 危险材料处理指南
python
# 用pop()移除危险材料时要小心
popped_item = ingredients.pop(1)  # 移除索引1的材料(独角兽眼泪)
print(f"被没收的材料:{popped_item},剩余材料:{ingredients}")  # 现在材料表又安全了

🐍 Python冷知识:魔法世界的编程法则

  • 当列表遇到+=操作符时,会像被施了复制咒一样产生新对象
python
new_ingredients = ingredients + ["龙神经"]  # 安全操作
ingredients += ["凤凰羽毛"]  # 等价于 ingredients.extend(...) 原地修改
  • 字典的键顺序在Python3.7+后是有序的(像被施了时间定格咒)
python
print(wizard.keys())  # 输出顺序与添加顺序完全一致
  • setdefault()可以避免重复施法(类似先检查再添加的复合咒语)
python
wizard.setdefault("boggart", "麦格教授宣布考试不及格")  # 如果不存在才添加

现在试试用del wizard["house"]删除学院信息——但小心被费尔奇抓到关禁闭!

📚 Python 字符串操作全解析:30+ 实用方法速查手册 🐍

一、基础操作类 [1][3]

  1. 索引与切片

    python
    s = "HelloPython"
    print(s[0])      # H 
    print(s[-3:])    # hon 
    print(s[::2])    # Hloyh
  2. 拼接与重复

    python
    print("Py" + "thon")       # Python 
    print("*" * 5)             # *

二、大小写转换 [1][3][4]

方法示例输出说明
upper()"apple".upper()APPLE全大写 [1]
lower()"PYTHON".lower()python全小写 [1]
capitalize()"hello".capitalize()Hello首字母大写 [3]
swapcase()"PyThOn".swapcase()pYtHoN大小写互换 [1]
title()"hello world".title()Hello World单词首字母大写 [1]
casefold()"ß".casefold()ss更彻底的小写化(如德语)[3]

三、查找与替换 [1][3][4]

  1. 定位方法

    python
    s = "Python is cool"
    print(s.find("is"))       # 7 
    print(s.index("is"))      # 7(找不到报错)
    print(s.rfind("o"))       # 12(反向查找)
  2. 替换操作

    python
    print("Hello Java".replace("Java", "Python"))  # Hello Python 
    print("a-b-c".translate(str.maketrans("abc", "123")))  # 1-2-3
  3. 前缀/后缀处理(Python 3.9+)

    python
    print("test_file.py".removesuffix(".py"))  # test_file 
    print("Mr_John".removeprefix("Mr_"))       # John

四、分割与合并 [1][3][4]

  1. 分割方法

    python
    print("a|b|c".split("|"))          # ['a', 'b', 'c'] 
    print("line1\nline2".splitlines()) # ['line1', 'line2'] 
    print("key=value".partition("="))  # ('key', '=', 'value')
  2. 合并方法

    python
    print("-".join(["2024", "06", "20"]))  # 2024-06-20

五、格式化与填充 [1][3][4]

  1. 格式化方法

    python
    print("{} + {} = {}".format(2, 3, 5))         # 2 + 3 = 5 
    print(f"{3.1415:.2f}")                        # 3.14(f-string)
  2. 对齐与填充

    python
    print("Python".center(10, "*"))    # Python 
    print("42".zfill(5))               # 00042 
    print("Hello".ljust(8, "-"))       # Hello

六、验证与判断 [1][3][4]

方法示例输出说明
isalpha()"Python".isalpha()True全字母 [3]
isdigit()"2024".isdigit()True全数字 [1]
isalnum()"Py3.8".isalnum()False(含点号)[3]
startswith()"file.txt".startswith("file")True [3]
isspace()"\t \n".isspace()True [1]

七、高级技巧 [3][4]

  1. 制表符处理

    python
    print("a\tb".expandtabs(4))  # a   b
  2. 正则替换

    python
    import re
    print(re.sub(r"\d+", "X", "A1B2C3"))  # AXBXCX
  3. 快速统计

    python
    print("abracadabra".count("a"))  # 4

八、编码与解码 [3]

python
s = "中文"
encoded = s.encode("utf-8")  # b'\xe4\xb8\xad\xe6\x96\x87'
decoded = encoded.decode("utf-8")  # 中文

九、冷门但实用 [3][4]

  1. 快速反转字符串

    python
    print("Python"[::-1])  # nohtyP
  2. 多条件判断

    python
    if s.lower().strip() in ["yes", "y"]:
        print("Confirmed!")
  3. 生成翻译表

    python
    trans = str.maketrans("aeiou", "12345")
    print("apple".translate(trans))  # 1ppl2

十、综合应用案例 [1][3]

python
# 格式化日志处理
def format_log(level, msg):
    return f"[{level.upper():^7}] {msg.strip().capitalize()}"

print(format_log("error", "  file not found  "))  
# [ ERROR ] File not found
Python的print函数

一、基础咒语:print核心参数

python
# 基础施法 
print("霍格沃茨欢迎你!")  # 输出:霍格沃茨欢迎你!

# 多元素拼接(sep参数控制分隔符)
print("哈利", "罗恩", "赫敏", sep="💫")  # 哈利💫罗恩💫赫敏 

# 控制结束符(end参数)
print("魔法石", end="→")
print("密室", end="→")  # 魔法石→密室→

二、格式化秘术:三种高阶写法

python
# 1. 古法占卜符(%格式化) 
print("%s的魔杖长%.1f英寸" % ("哈利", 11.5))  # 哈利的魔杖长11.5英寸

# 2. 炼金术式(str.format) 
print("{}{}楼击败了巨怪".format("赫敏", 4))  # 赫敏在4楼击败了巨怪

# 3. 现代魔纹(f-string)
house, points = "格兰芬多", 150
print(f"{house} 获得 {points*10} 学院分!")  # 格兰芬多 获得 1500 学院分!

三、文件封印术:输出到日记本

python
with open("魔法日记.txt", "w") as f:
    print("伏地魔回来了...", file=f)  # 内容写入文件 

# 同时打印到屏幕和文件 
import sys
print("双面间谍模式启动", file=sys.stdout, flush=True)

四、动态视觉魔法:进度条特效

python
import time
for i in range(10):
    print(f"\r施法进度: {'🟩'*(i+1)}", end="")
    time.sleep(0.3)
# 输出动态增长的进度条

五、彩色符文绘制:终端变色术

python
# ANSI颜色代码 
RED = "\033[31m"
RESET = "\033[0m"
print(f"{RED}警告:摄魂怪接近!{RESET}")

六、高阶空间魔法:多维输出

python
# 打印生成器结果
print(*(x2 for x in range(5)))  # 0 1 4 9 16 

# 解包字典
spell_book = {"飞来咒": "Accio", "护盾咒": "Protego"}
print(*spell_book.items(), sep="\n")  # 分行输出键值对

七、特殊符号召唤术

python
print("不可饶恕咒:\n\t阿瓦达索命\n\t钻心剜骨") 
# 输出带缩进的列表 

print(r"原始字符串:\n\t不转义")  # 输出:原始字符串:\n\t不转义

八、综合实战:魔法学院成绩单

python
students = [
    ("哈利", 95, "O"), 
    ("德拉科", 89, "E"),
    ("纳威", 78, "A")
]

print(f"\n{'姓名':<6}{'分数':<6}{'评级':<6}")
print("-"*18)
for name, score, grade in students:
    print(f"{name:^6}{score:^6}{grade:^6}")

# 输出对齐的表格
✂️Python切片操作全解析:从一维到高维的魔法切割术

一、一维切片操作(列表/字符串)

  1. [-1]
    👉 取最后一个元素,Python的负索引魔法
python
X = [1,2,3,4,5]
print(X[-1])  # 输出:5
  1. [:-1]
    👉 排除最后一个元素,相当于"掐头去尾"
python
X = [1,2,3,4,5]
print(X[:-1])  # 输出:[1,2,3,4]
  1. [::-1]
    👉 逆序整个序列,镜像反转魔法
python
X = [1,2,3,4,5]
print(X[::-1])  # 输出:[5,4,3,2,1]
  1. [n::-1]
    👉 从索引n开始逆序到开头
python
X = [1,2,3,4,5]
print(X[3::-1])  # 输出:[4,3,2,1]

二、多维切片操作(适用于NumPy等库)

  1. [:, :, 0]
    👉 三维数组操作:前两维全选,第三维取索引0
python
import numpy as np
arr = np.arange(24).reshape(2,3,4)
print(arr[:, :, 0])  
# 输出:前两维全选,第三维取第0层的所有数据
  1. [..., 0]
    👉 省略号魔法:自动填充所有前置维度,最后一维取索引0
python
arr = np.arange(24).reshape(2,3,4)
print(arr[..., 0])  # 等效于 arr[:, :, 0]
  1. [..., ::-1]
    👉 省略号+逆序:保持其他维度不变,最后一维逆序
python
arr = np.arange(24).reshape(2,3,4)
print(arr[..., ::-1])  # 每个二维切片最后一维逆序

三、切片原理速记表 🧠

切片模式等价操作行为描述应用场景
[start:][start:len(seq):1]从起点到末尾截取后半段
[:end][0🔚1]从头到终点前一位截取前半段
[::2][0:len(seq):2]隔一个取一个取偶数位元素
[::-1][len(seq)-1👎-1]逆序整个序列数据反转
[3::-1][3:-len(seq)-1:-1]从第3个元素倒序到开头局部逆序提取
[...,0]自动填充前置维度高维数据最后一维操作多维数组切片

四、切片冷知识 ❄️

  • 负索引计算:X[-n] = X[len(X)-n] [2][4]
  • 缺省值逻辑:步长为正时,start默认0,end默认末尾;步长为负时,start默认末尾,end默认开头 [3][7]
  • 内存共享特性:切片生成的是原数据的视图(浅拷贝),修改切片会影响原数据 [4][7]
python
a = [1,2,3,4]
b = a[1:3]
b[0] = 99
print(a)  # 输出:[1,99,3,4] 😱

五、高维切片实战 🌌

python
# 四维时空数据切片示例(假设为时间×高度×纬度×经度)
weather_data = np.random.rand(365, 10, 180, 360)

# 取第0天所有高度层的北纬30度数据
slice1 = weather_data[0, :, 150, :]  

# 取所有时间的500hPa高度场逆序经度
slice2 = weather_data[:, 5, :, ::-1]  

# 取最后一天地表温度的第0个变量
slice3 = weather_data[-1, 0, ..., 0]

第3章 时间魔法:条件与循环

python
# 分院帽决策(if-elif-else)
score = 85
if score >= 90:
    print("拉文克劳!")
elif 70 <= score < 90:
    print("格兰芬多!")  # 会执行这个
else:
    print("阿兹卡班预备班...")

# 猫头鹰送信循环(for)
letters = ["霍格沃茨通知书", "韦斯莱把戏坊广告", "吼叫信"]
for letter in letters:
    if "吼叫信" in letter:
        print("Σ(っ °Д °;)っ 快跑!")
        break
    print(f"收到:{letter}")

# 熬制魔药(while)
bubble_count = 0
while bubble_count < 3:
    print("顺时针搅拌...")
    bubble_count += 1
print("魔药完成!")
for循环の九重天修炼手册

第1重:基础遍历术

python
# 遍历列表
fruits = ["苹果", "香蕉", "樱桃"]
for fruit in fruits:
    print(f"今天吃:{fruit}")  # 输出每个水果 

# 搭配range使用
for i in range(3):  # 生成0-2的序列
    print(f"第{i+1}次循环")  #

第2重:高阶迭代法

python
# 字典双杀技
user = {"name": "哈利", "age": 17, "house": "格兰芬多"}
for key in user:  # 遍历键
    print(key) 

for key, value in user.items():  # 键值双收
    print(f"{key}: {value}")  # 

# 枚举神器enumerate
for index, fruit in enumerate(fruits, 1):  # 从1开始计数
    print(f"第{index}个水果是{fruit}")  #

第3重:组合技zip

python
names = ["赫敏", "罗恩", "纳威"]
scores = [99, 85, 72]
for name, score in zip(names, scores):
    print(f"{name}考了{score}分")  # 自动对齐数据

第4重:推导式奥义

python
# 列表推导式
squares = [x2 for x in range(10)]  # 生成平方列表 

# 字典推导式
cube_dict = {x: x3 for x in range(5)}  # {0:0, 1:1...}

# 生成器表达式(内存友好)
big_data = (x*2 for x in range(1000000))  #

第5重:循环控制术

python
# break/continue妙用
for num in range(10):
    if num == 3:
        continue  # 跳过3 
    if num == 7:
        break     # 提前终止
    print(num)

# else子句(循环正常结束触发)
for n in range(2, 5):
    if n % 2 == 0:
        print(f"{n}是偶数")
else:
    print("遍历完成!")  #

第6重:嵌套循环阵

python
# 二维列表遍历
matrix = [[1,2,3], [4,5,6], [7,8,9]]
for row in matrix:
    for num in row:
        print(num, end=' ')
    print()  # 换行 

# 九九乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print(f"{j}×{i}={i*j}", end='\t')
    print()  #

第7重:高阶迭代术

python
# 反向遍历
for fruit in reversed(fruits):
    print(fruit)  # 樱桃、香蕉、苹果

# 同时遍历索引和元素(不用enumerate)
for i in range(len(fruits)):
    print(f"{i}:{fruits[i]}")  #

第8重:文件处理流

python
# 逐行读取文件
with open("magic_book.txt") as f:
    for line_num, line in enumerate(f, 1):
        print(f"{line_num}: {line.strip()}")  #

第9重:生成器秘术

python
# 自定义生成器
def fibonacci(limit):
    a, b = 0, 1
    while a < limit:
        yield a
        a, b = b, a+b

for num in fibonacci(1000):
    print(num)  # 生成斐波那契数列

第4章 咒语封装:函数魔法

python
def 飞来咒(物品, 次数=3):  # 默认参数
    """召唤物品的魔法(函数文档)"""
    for _ in range(次数):
        print(f"Accio {物品}!")
    return f"{物品}已抵达"

result = 飞来咒("火弩箭", 次数=2)
print(result)  # 输出:火弩箭已抵达

# 魔法石生成器(生成器)
def 数字魔法石(最大值):
    num = 0
    while num < 最大值:
        yield num  # yield就像暂停施法
        num += 1

for 魔法石 in 数字魔法石(5):
    print(f"获得{魔法石}号魔法石")

第5章 魔法模块:标准库探险

python
# 时间转换器
import datetime
now = datetime.datetime.now()
print(f"当前时间:{now.strftime('%Y/%m/%d %H:%M')}")

# 随机占卜
import random
tarot = ["正位恋人", "逆位死神", "正位太阳"]
print("今日运势:", random.choice(tarot))

# 文件魔法书
with open("咒语大全.txt", "w", encoding="utf-8") as f:
    f.write("荧光闪烁\n统统石化\n清水如泉")

with open("咒语大全.txt") as f:
    print(f.read())

第6章 综合实践:制作魔法日报

python
def 生成日报(日期, 头条新闻, 记者="预言家日报"):
    版面 = f"""
{记者}
    {日期} 星期{random.randint(1,7)}
    --------------------
    今日头条:{头条新闻}
    
    今日星运:
    {random.choice(["宜学习黑魔法防御", "忌挑衅斯内普教授", "幸运数字:7"])}
    """
    return 版面

print(生成日报("2023-09-01", "救世主再现!哈利击败匈牙利树蜂"))

💡 学习小贴士:

  1. 多动手实践,代码就像魔咒越用越熟练
  2. 善用print()调试,它是你的"摄神取念"
  3. 错误信息是学习的好帮手,不要害怕红色提示
  4. 记住:复制粘贴的代码就像别人的魔杖,自己敲才能建立连接

🎉 恭喜完成魔法启蒙!接下来可以:

  • 探索requests库(网络魔法)
  • 学习turtle库(绘画咒语)
  • 尝试用pygame制作小游戏 记住:最好的魔法是持续实践!✨
print(''.join(list)) 为什么用点号.
  1. 面向对象的方法调用
    .join() 是字符串类型(str)的方法,必须通过字符串实例调用。语法规则为:

    python
    "连接符".join(可迭代对象)
    • '' 是一个空字符串实例(调用者)
    • .join() 是方法名,属于字符串对象
    • list 是被操作的列表(必须包含字符串元素)

    示例:

    python
    fruits = ["apple", "banana", "cherry"]
    print(", ".join(fruits))  # 输出:apple, banana, cherry
  2. 逗号, 的用途
    逗号在Python中用于:

    • 分隔函数参数:print(a, b, c)
    • 定义元组:t = (1, 2, 3)
    • 多重赋值:x, y = 1, 2

拼接表格

方法语法性能适用场景注意事项
str.join()"sep".join(list)快速拼接可迭代对象元素必须为字符串
+ 拼接s1 + s2 + s3少量字符串拼接避免在循环中使用
print(*list, sep)print(*list, sep)直接输出不保存结果自动处理非字符串元素
f-stringf"{s1}{s2}{s3}"格式化字符串拼接Python 3.6+ 支持

FAQS

Q1:为什么 join() 属于字符串而不是列表?

  • 因为连接符(如空字符串''、逗号',')是字符串,逻辑上应由字符串提供拼接能力。

Q2:如何拼接非字符串列表?

  • 先转换为字符串:
    python
    nums = [1, 2, 3]
    print(''.join(map(str, nums)))  # 输出:123

Q3:join() 可以用于其他可迭代对象吗?

  • 可以!例如元组、集合、生成器:
    python
    print(''.join(("a", "b", "c")))      # 元组
    print(''.join({ "a", "b", "c" }))    # 集合(顺序随机)
    print(''.join(str(x) for x in range(3)))  # 生成器