HTML实现的python程序员英语学习小工具

HTML实现的python程序员英语学习小工具

本小工具为无英语基础或英语基础弱的同学学习python奠定基础,本小工具发音原理是有道词典的在线发音API。

【Python程序员的英语要求高不高?

英语水平高,当然方便些。基础场景下,初中级英语即可满足:

Python的关键字(如if、for、class)、内置函数(如print()、len())均为基础英文单词,初中级英语水平即可掌握,无需专门学习。

常见错误(如NameError、TypeError)的英文提示多为固定短语,通过积累可快速识别(如undefined variable即变量未定义),无需完整理解长句。

Python官方文档是英文版的,同时也提供中文版的。

常用库(如numpy、pandas)的API文档虽为英文,但函数名(如pd.read_csv())和参数(如index_col)多为缩写或直观词汇,配合中文社区教程(如官方文档的中文翻译、CSDN/掘金等平台的中文文章)可快速上手。

现在有AI呀,可以借助AI翻译处理。】

运行界面如下:

发音机制说明

  1. API调用:

· 使用有道词典的公开API:http://dict.youdao.com/dictvoice?type=1\&audio=单词

· 需要联网才能使用发音功能

· type=1 表示使用美式发音,type=0 表示英式发音

· 将需要发音的单词作为参数传递给API

2. 实现方式:

· 通过HTTP请求获取发音,支持大多数常见英语单词

· 使用JavaScript创建Audio对象

· 设置音频源为有道API返回的发音

源码如下(参考改进自网络):

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>程序员python英语学习</title>
    <style>
        body {
            font-family: 'Segoe UI', Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 20px;
            background-color: #f0f3f9;
            color: #333;
        }
        h1, h2 {
            color: #2c3e50;
        }
        .section {
            background: white;
            border-radius: 10px;
            padding: 20px;
            margin-bottom: 25px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 15px 0;
        }
        th, td {
            padding: 12px;
            border: 1px solid #ddd;
            text-align: left;
        }
        th {
            background-color: #3498db;
            color: white;
        }
        tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        a {
            color: #2980b9;
            text-decoration: none;
        }
        code {
            background: #f4f4f4;
            padding: 2px 5px;
            border-radius: 3px;
            font-family: 'Courier New', monospace;
        }
        .pronounce-btn {
            display: inline-block;
            width: 24px;
            height: 24px;
            background: url('data:image/svg+xml;utf8,<svg viewBox="0 0 24 24" fill="%233498db" xmlns="http://www.w3.org/2000/svg"><path d="M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z"/></svg>') no-repeat center;
            cursor: pointer;
            vertical-align: middle;
            margin-left: 8px;
            opacity: 0.7;
            transition: opacity 0.3s;
        }
        .pronounce-btn:hover {
            opacity: 1;
        }
        .category {
            background: white;
            border-radius: 10px;
            padding: 20px;
            margin-bottom: 25px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
    </style>
</head>
<body>
    <h1>程序员python英语强化学习</h1>
 
    <!-- 导航锚点 -->
    <div class="section">
        <h2>快速导航</h2>
        <ul>
            <li><a href="#part1">第一部分:音标系统学习</a></li>
            <li><a href="#part2">第二部分:Python核心词汇</a></li>
        </ul>
    </div>
 
    <!-- 第一部分:音标学习 -->
    <div class="section" id="part1">
        <h2>&#128218; 第一部分:音标系统学习</h2>
         
        <h3>单元音(12个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(器官动作)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/i&#720;/</td><td>舌前部抬高近硬腭,舌尖抵下齿,双唇向两侧展开,下颌微开(约1mm)</td><td>read</td><td>/ri&#720;d/</td></tr>
            <tr><td>/&#618;/</td><td>舌前部稍低于/i&#720;/,舌尖轻触下齿,唇形稍放松,下颌开度2-3mm</td><td>if</td><td>/&#618;f/</td></tr>
            <tr><td>/e/</td><td>舌前部抬至中高位置,舌尖抵下齿,双唇稍扁,下颌开度4-5mm</td><td>let</td><td>/let/</td></tr>
            <tr><td>/&#230;/</td><td>舌前部低平,舌尖紧贴下齿,口张大(上下齿距约1.5cm),唇形自然</td><td>add</td><td>/&#230;d/</td></tr>
            <tr><td>/ɑ&#720;/</td><td>舌身后缩,舌尖远离下齿,舌背低平,口全开(上下齿距约2cm)</td><td>class</td><td>/klɑ&#720;s/</td></tr>
            <tr><td>/&#594;/</td><td>舌身后缩,舌背微隆,双唇稍圆,下颌半开(上下齿距约1cm)</td><td>log</td><td>/l&#594;ɡ/</td></tr>
            <tr><td>/&#596;&#720;/</td><td>舌身后缩,舌背明显隆起,双唇用力收圆,下颌半闭(上下齿距5mm)</td><td>call</td><td>/k&#596;&#720;l/</td></tr>
            <tr><td>/&#650;/</td><td>舌身后缩,舌背隆起,双唇稍圆(不突出),下颌微开(3-4mm)</td><td>put</td><td>/p&#650;t/</td></tr>
            <tr><td>/u&#720;/</td><td>舌身后缩至极限,舌背高隆,双唇紧圆前突,下颌几乎闭合</td><td>loop</td><td>/lu&#720;p/</td></tr>
            <tr><td>/&#652;/</td><td>舌中部微隆,舌尖轻触下齿,口半开(上下齿距约1cm),唇形自然</td><td>run</td><td>/r&#652;n/</td></tr>
            <tr><td>/&#604;&#720;/</td><td>舌身平放,中部微隆,双唇自然扁平,下颌半开(上下齿距8mm)</td><td>learn</td><td>/l&#604;&#720;n/</td></tr>
            <tr><td>/&#601;/</td><td>舌身完全放松,中部微隆,双唇自然,下颌微开(3-4mm)</td><td>about</td><td>/&#601;&#712;ba&#650;t/</td></tr>
        </table>
 
        <h3>双元音(8个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(动态动作)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/e&#618;/</td><td>从/e/开始:舌前中高位 → 滑向/&#618;/:舌前稍降,下颌渐闭合</td><td>name</td><td>/ne&#618;m/</td></tr>
            <tr><td>/a&#618;/</td><td>从/a/开始:舌身低平 → 滑向/&#618;/:舌前部渐抬起,口渐闭</td><td>type</td><td>/ta&#618;p/</td></tr>
            <tr><td>/&#596;&#618;/</td><td>从/&#596;&#720;/开始:舌身后缩 → 滑向/&#618;/:舌前抬起,唇形渐展</td><td>join</td><td>/d&#658;&#596;&#618;n/</td></tr>
            <tr><td>/a&#650;/</td><td>从/a/开始:口全开 → 滑向/&#650;/:舌身后缩,双唇渐圆</td><td>out</td><td>/a&#650;t/</td></tr>
            <tr><td>/&#601;&#650;/</td><td>从/&#601;/开始:舌中微隆 → 滑向/&#650;/:舌身后缩,双唇收圆</td><td>code</td><td>/k&#601;&#650;d/</td></tr>
            <tr><td>/&#618;&#601;/</td><td>从/&#618;/开始:舌前稍高 → 滑向/&#601;/:舌身放松,下颌略降</td><td>here</td><td>/h&#618;&#601;/</td></tr>
            <tr><td>/e&#601;/</td><td>从/e/开始:舌前中高 → 滑向/&#601;/:舌中部微隆,口略张大</td><td>error</td><td>/&#712;e&#601;r&#601;/</td></tr>
            <tr><td>/&#650;&#601;/</td><td>从/&#650;/开始:舌身后缩 → 滑向/&#601;/:舌前部渐降,唇形渐展</td><td>secure</td><td>/s&#618;&#712;kj&#650;&#601;/</td></tr>
        </table>
    </div>
 
    <!-- 辅音部分 -->
    <div class="category">
        <h2>二、辅音音标(24个)</h2>
 
        <h3>爆破音(6个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(三维定位)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/p/</td><td>双唇爆破清音:双唇闭合 → 气流蓄压 → 突然释放,声带不振动</td><td>print</td><td>/pr&#618;nt/</td></tr>
            <tr><td>/b/</td><td>双唇爆破浊音:动作同/p/,但声带振动</td><td>bool</td><td>/bu&#720;l/</td></tr>
            <tr><td>/t/</td><td>齿龈爆破清音:舌尖抵上齿龈 → 气流突破阻碍,声带不振动</td><td>true</td><td>/tru&#720;/</td></tr>
            <tr><td>/d/</td><td>齿龈爆破浊音:动作同/t/,但声带振动</td><td>data</td><td>/&#712;de&#618;t&#601;/</td></tr>
            <tr><td>/k/</td><td>软腭爆破清音:舌后部隆起抵软腭 → 突然放开,声带不振动</td><td>class</td><td>/klɑ&#720;s/</td></tr>
            <tr><td>/ɡ/</td><td>软腭爆破浊音:动作同/k/,但声带振动</td><td>get</td><td>/ɡet/</td></tr>
        </table>
 
        <h3>摩擦音(9个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(阻碍方式)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/f/</td><td>唇齿摩擦清音:下唇轻触上齿,气流从缝隙挤出,声带不振动</td><td>false</td><td>/f&#596;&#720;ls/</td></tr>
            <tr><td>/v/</td><td>唇齿摩擦浊音:动作同/f/,但声带振动</td><td>void</td><td>/v&#596;&#618;d/</td></tr>
            <tr><td>/θ/</td><td>齿间摩擦清音:舌尖伸于上下齿间,气流摩擦,声带不振动</td><td>thread</td><td>/θred/</td></tr>
            <tr><td>/&#240;/</td><td>齿间摩擦浊音:动作同/θ/,但声带振动</td><td>this</td><td>/&#240;&#618;s/</td></tr>
            <tr><td>/s/</td><td>齿龈摩擦清音:舌尖近上齿龈,舌两侧贴臼齿,气流从中央窄缝挤出</td><td>string</td><td>/str&#618;&#331;/</td></tr>
            <tr><td>/z/</td><td>齿龈摩擦浊音:动作同/s/,但声带振动</td><td>zero</td><td>/&#712;z&#618;&#601;r&#601;&#650;/</td></tr>
            <tr><td>/&#643;/</td><td>硬腭摩擦清音:舌叶上抬近硬腭前部,双唇稍圆,声带不振动</td><td>push</td><td>/p&#650;&#643;/</td></tr>
            <tr><td>/&#658;/</td><td>硬腭摩擦浊音:动作同/&#643;/,但声带振动</td><td>closure</td><td>/&#712;kl&#601;&#650;&#658;&#601;/</td></tr>
            <tr><td>/h/</td><td>声门摩擦清音:声门略收,气流摩擦通过,口腔形状随后续元音变化</td><td>hash</td><td>/h&#230;&#643;/</td></tr>
        </table>
 
        <h3>破擦音(2个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(复合动作)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/t&#643;/</td><td>硬腭破擦清音:先/t/的舌位 → 立即转为/&#643;/的摩擦,声带不振动</td><td>catch</td><td>/k&#230;t&#643;/</td></tr>
            <tr><td>/d&#658;/</td><td>硬腭破擦浊音:动作同/t&#643;/,但声带振动</td><td>judge</td><td>/d&#658;&#652;d&#658;/</td></tr>
        </table>
 
        <h3>鼻音(3个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(鼻腔通路)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/m/</td><td>双唇鼻音:双唇闭合,软腭下垂,气流从鼻腔流出,声带振动</td><td>import</td><td>/&#712;&#618;mp&#596;&#720;t/</td></tr>
            <tr><td>/n/</td><td>齿龈鼻音:舌尖抵上齿龈,气流从鼻腔流出,声带振动</td><td>none</td><td>/n&#652;n/</td></tr>
            <tr><td>/&#331;/</td><td>软腭鼻音:舌后抵软腭,口腔完全封闭,气流从鼻腔流出,声带振动</td><td>string</td><td>/str&#618;&#331;/</td></tr>
        </table>
 
        <h3>其他辅音(4个)</h3>
        <table class="phonetic-table">
            <tr><th>音标</th><th>发音要点(特殊机制)</th><th>示例词</th><th>发音</th></tr>
            <tr><td>/l/</td><td>齿龈边音:舌尖抵上齿龈,舌两侧下陷,气流从舌侧通过,声带振动</td><td>loop</td><td>/lu&#720;p/</td></tr>
            <tr><td>/r/</td><td>齿龈近音:舌尖卷向硬腭(但不接触),舌身两侧收拢,声带振动</td><td>return</td><td>/r&#618;&#712;t&#604;&#720;n/</td></tr>
            <tr><td>/j/</td><td>硬腭近音:舌前部向硬腭抬起,形成狭窄通道,声带振动</td><td>yield</td><td>/ji&#720;ld/</td></tr>
            <tr><td>/w/</td><td>唇软腭近音:双唇收圆前突,舌后部向软腭抬起,声带振动</td><td>while</td><td>/wa&#618;l/</td></tr>
        </table>
    </div>
 
    <!-- Python词汇部分 -->
    <div class="category" id="part2">
        <h2>三、Python核心词汇(100词精选)</h2>
 
        <!-- 1. 数据类型与结构 -->
        <h3>1. 数据类型与结构(20词)</h3>
        <table class="vocabulary-table">
            <tr><th>英文</th><th>音标</th><th>中文</th><th>代码示例</th></tr>
            <tr><td>integer</td><td>/&#712;&#618;nt&#618;d&#658;&#601;r/</td><td>整数</td><td><code>num = 42</code></td></tr>
            <tr><td>float</td><td>/fl&#601;&#650;t/</td><td>浮点数</td><td><code>pi = 3.14</code></td></tr>
            <tr><td>boolean</td><td>/&#712;bu&#720;li&#601;n/</td><td>布尔值</td><td><code>is_valid = True</code></td></tr>
            <tr><td>string</td><td>/str&#618;&#331;/</td><td>字符串</td><td><code>s = "Hello"</code></td></tr>
            <tr><td>list</td><td>/l&#618;st/</td><td>列表</td><td><code>nums = [1, 2, 3]</code></td></tr>
            <tr><td>tuple</td><td>/&#712;tu&#720;p&#601;l/</td><td>元组</td><td><code>point = (3, 5)</code></td></tr>
            <tr><td>dict</td><td>/d&#618;kt/</td><td>字典</td><td><code>user = {'name': 'Alice'}</code></td></tr>
            <tr><td>set</td><td>/set/</td><td>集合</td><td><code>unique = {1, 2, 3}</code></td></tr>
            <tr><td>frozenset</td><td>/&#712;fr&#601;&#650;z&#601;nset/</td><td>不可变集合</td><td><code>fs = frozenset([1,2])</code></td></tr>
            <tr><td>bytes</td><td>/ba&#618;ts/</td><td>字节</td><td><code>b = b'data'</code></td></tr>
            <tr><td>bytearray</td><td>/&#712;ba&#618;t&#601;re&#618;/</td><td>可变字节</td><td><code>arr = bytearray(5)</code></td></tr>
            <tr><td>none</td><td>/n&#652;n/</td><td>空值</td><td><code>result = None</code></td></tr>
            <tr><td>range</td><td>/re&#618;nd&#658;/</td><td>范围</td><td><code>nums = range(5)</code></td></tr>
            <tr><td>slice</td><td>/sla&#618;s/</td><td>切片</td><td><code>s = "hello"[1:3]</code></td></tr>
            <tr><td>iterator</td><td>/&#712;&#618;t&#601;re&#618;t&#601;r/</td><td>迭代器</td><td><code>it = iter([1,2])</code></td></tr>
            <tr><td>generator</td><td>/&#712;d&#658;en&#601;re&#618;t&#601;r/</td><td>生成器</td><td><code>def gen(): yield 1</code></td></tr>
            <tr><td>enumerate</td><td>/&#618;&#712;nju&#720;m&#601;re&#618;t/</td><td>枚举</td><td><code>for i,v in enumerate(lst)</code></td></tr>
            <tr><td>comprehension</td><td>/&#716;k&#594;mpr&#618;&#712;hen&#643;&#601;n/</td><td>推导式</td><td><code>[x**2 for x in range(5)]</code></td></tr>
            <tr><td>lambda</td><td>/&#712;l&#230;md&#601;/</td><td>匿名函数</td><td><code>f = lambda x: x*2</code></td></tr>
            <tr><td>decorator</td><td>/&#712;dek&#601;re&#618;t&#601;r/</td><td>装饰器</td><td><code>@decorator</code></td></tr>
        </table>
 
        <!-- 2. 控制流与函数 -->
        <h3>2. 控制流与函数(20词)</h3>
        <table class="vocabulary-table">
            <tr><th>英文</th><th>音标</th><th>中文</th><th>代码示例</th></tr>
            <tr><td>conditional</td><td>/k&#601;n&#712;d&#618;&#643;&#601;n&#601;l/</td><td>条件语句</td><td><code>if x > 5:</code></td></tr>
            <tr><td>loop</td><td>/lu&#720;p/</td><td>循环</td><td><code>while True:</code></td></tr>
            <tr><td>break</td><td>/bre&#618;k/</td><td>跳出循环</td><td><code>break</code></td></tr>
            <tr><td>continue</td><td>/k&#601;n&#712;t&#618;nju&#720;/</td><td>跳过本次循环</td><td><code>continue</code></td></tr>
            <tr><td>exception</td><td>/&#618;k&#712;sep&#643;&#601;n/</td><td>异常</td><td><code>raise ValueError</code></td></tr>
            <tr><td>try</td><td>/tra&#618;/</td><td>异常捕获</td><td><code>try: ... except:</code></td></tr>
            <tr><td>finally</td><td>/&#712;fa&#618;n&#601;li/</td><td>最终执行块</td><td><code>finally: ...</code></td></tr>
            <tr><td>raise</td><td>/re&#618;z/</td><td>抛出异常</td><td><code>raise TypeError</code></td></tr>
            <tr><td>assert</td><td>/&#601;&#712;s&#604;&#720;t/</td><td>断言</td><td><code>assert x > 0</code></td></tr>
            <tr><td>recursion</td><td>/r&#618;&#712;k&#604;&#720;r&#658;&#601;n/</td><td>递归</td><td><code>def fib(n): return fib(n-1)+...</code></td></tr>
            <tr><td>parameter</td><td>/p&#601;&#712;r&#230;m&#618;t&#601;r/</td><td>形参</td><td><code>def func(param):</code></td></tr>
            <tr><td>argument</td><td>/&#712;ɑ&#720;ɡjum&#601;nt/</td><td>实参</td><td><code>func(arg)</code></td></tr>
            <tr><td>default</td><td>/d&#618;&#712;f&#596;&#720;lt/</td><td>默认值</td><td><code>def f(x=0):</code></td></tr>
            <tr><td>keyword</td><td>/&#712;ki&#720;w&#604;&#720;d/</td><td>关键字参数</td><td><code>f(name='Alice')</code></td></tr>
            <tr><td>variable</td><td>/&#712;ve&#601;ri&#601;b&#601;l/</td><td>变量</td><td><code>count = 0</code></td></tr>
            <tr><td>scope</td><td>/sk&#601;&#650;p/</td><td>作用域</td><td><code>global count</code></td></tr>
            <tr><td>closure</td><td>/&#712;kl&#601;&#650;&#658;&#601;/</td><td>闭包</td><td><code>def outer(): x=1; return lambda: x</code></td></tr>
            <tr><td>import</td><td>/&#618;m&#712;p&#596;&#720;t/</td><td>导入</td><td><code>import math</code></td></tr>
            <tr><td>module</td><td>/&#712;m&#594;dju&#720;l/</td><td>模块</td><td><code>math.py</code></td></tr>
            <tr><td>package</td><td>/&#712;p&#230;k&#618;d&#658;/</td><td>包</td><td><code>from flask import ...</code></td></tr>
        </table>
 
        <!-- 3. 错误与调试 -->
        <h3>3. 错误与调试(15词)</h3>
        <table class="vocabulary-table">
            <tr><th>英文</th><th>音标</th><th>中文</th><th>代码示例</th></tr>
            <tr><td>traceback</td><td>/&#712;tre&#618;sb&#230;k/</td><td>回溯信息</td><td><code>traceback.print_exc()</code></td></tr>
            <tr><td>debug</td><td>/di&#720;&#712;b&#652;ɡ/</td><td>调试</td><td><code>import pdb; pdb.set_trace()</code></td></tr>
            <tr><td>breakpoint</td><td>/&#712;bre&#618;kp&#596;&#618;nt/</td><td>断点</td><td><code>breakpoint()</code></td></tr>
            <tr><td>syntax</td><td>/&#712;s&#618;nt&#230;ks/</td><td>语法</td><td><code>SyntaxError</code></td></tr>
            <tr><td>indent</td><td>/&#618;n&#712;dent/</td><td>缩进</td><td><code>IndentationError</code></td></tr>
            <tr><td>attribute</td><td>/&#601;&#712;tr&#618;bju&#720;t/</td><td>属性</td><td><code>AttributeError</code></td></tr>
            <tr><td>index</td><td>/&#712;&#618;ndeks/</td><td>索引</td><td><code>IndexError</code></td></tr>
            <tr><td>key</td><td>/ki&#720;/</td><td>键</td><td><code>KeyError</code></td></tr>
            <tr><td>type</td><td>/ta&#618;p/</td><td>类型</td><td><code>TypeError</code></td></tr>
            <tr><td>value</td><td>/&#712;v&#230;lju&#720;/</td><td>值</td><td><code>ValueError</code></td></tr>
            <tr><td>stack</td><td>/st&#230;k/</td><td>堆栈</td><td><code>traceback.format_stack()</code></td></tr>
            <tr><td>log</td><td>/l&#594;ɡ/</td><td>日志</td><td><code>logging.info('msg')</code></td></tr>
            <tr><td>warning</td><td>/&#712;w&#596;&#720;rn&#618;&#331;/</td><td>警告</td><td><code>warnings.warn('msg')</code></td></tr>
            <tr><td>handle</td><td>/&#712;h&#230;ndl/</td><td>处理</td><td><code>except Exception as e:</code></td></tr>
            <tr><td>raise</td><td>/re&#618;z/</td><td>抛出</td><td><code>raise CustomError()</code></td></tr>
        </table>
 
        <!-- 4. 常用模块与库 -->
        <h3>4. 常用模块与库(30词)</h3>
        <table class="vocabulary-table">
            <tr><th>英文</th><th>音标</th><th>中文</th><th>代码示例</th></tr>
            <tr><td>os</td><td>/&#716;o&#650;&#712;es/</td><td>操作系统接口</td><td><code>os.path.exists()</code></td></tr>
            <tr><td>sys</td><td>/s&#618;s/</td><td>系统参数</td><td><code>sys.argv</code></td></tr>
            <tr><td>math</td><td>/m&#230;θ/</td><td>数学运算</td><td><code>math.sqrt(2)</code></td></tr>
            <tr><td>datetime</td><td>/&#712;de&#618;t&#618;ta&#618;m/</td><td>日期时间</td><td><code>datetime.now()</code></td></tr>
            <tr><td>json</td><td>/&#712;d&#658;e&#618;s&#601;n/</td><td>JSON处理</td><td><code>json.dumps(data)</code></td></tr>
            <tr><td>re</td><td>/&#712;ri&#720;/</td><td>正则表达式</td><td><code>re.search(r'\d+', s)</code></td></tr>
            <tr><td>random</td><td>/&#712;r&#230;nd&#601;m/</td><td>随机数</td><td><code>random.randint(1,6)</code></td></tr>
            <tr><td>pickle</td><td>/&#712;p&#618;k&#601;l/</td><td>序列化</td><td><code>pickle.dump(obj)</code></td></tr>
            <tr><td>csv</td><td>/&#716;si&#720; es &#712;vi&#720;/</td><td>CSV文件处理</td><td><code>csv.reader(f)</code></td></tr>
            <tr><td>logging</td><td>/&#712;l&#594;ɡ&#618;&#331;/</td><td>日志记录</td><td><code>logging.basicConfig()</code></td></tr>
            <tr><td>unittest</td><td>/&#712;ju&#720;n&#618;tt&#603;st/</td><td>单元测试</td><td><code>class Test(unittest.TestCase):</code></td></tr>
            <tr><td>pytest</td><td>/&#712;pa&#618;t&#603;st/</td><td>测试框架</td><td><code>def test_func(): ...</code></td></tr>
            <tr><td>numpy</td><td>/&#712;n&#652;mpa&#618;/</td><td>数值计算</td><td><code>import numpy as np</code></td></tr>
            <tr><td>pandas</td><td>/&#712;p&#230;nd&#601;z/</td><td>数据分析</td><td><code>pd.DataFrame(data)</code></td></tr>
            <tr><td>matplotlib</td><td>/&#716;m&#230;tpl&#594;t&#712;l&#618;b/</td><td>数据可视化</td><td><code>plt.plot(x,y)</code></td></tr>
            <tr><td>requests</td><td>/r&#618;&#712;kw&#603;sts/</td><td>HTTP请求</td><td><code>requests.get(url)</code></td></tr>
            <tr><td>flask</td><td>/flɑ&#720;sk/</td><td>Web框架</td><td><code>app = Flask(__name__)</code></td></tr>
            <tr><td>django</td><td>/&#712;d&#658;&#230;&#331;ɡo&#650;/</td><td>Web框架</td><td><code>python manage.py runserver</code></td></tr>
            <tr><td>asyncio</td><td>/&#601;&#712;s&#618;&#331;kio&#650;/</td><td>异步IO</td><td><code>async def main(): ...</code></td></tr>
            <tr><td>threading</td><td>/&#712;θred&#618;&#331;/</td><td>多线程</td><td><code>thread = threading.Thread()</code></td></tr>
            <tr><td>multiprocessing</td><td>/&#716;m&#652;lti&#712;pr&#601;&#650;ses&#618;&#331;/</td><td>多进程</td><td><code>Process(target=func)</code></td></tr>
            <tr><td>socket</td><td>/&#712;s&#594;k&#618;t/</td><td>网络套接字</td><td><code>s = socket.socket()</code></td></tr>
            <tr><td>sqlite3</td><td>/&#716;si&#720;kw&#603;l&#712;la&#618;t/</td><td>嵌入式数据库</td><td><code>conn = sqlite3.connect()</code></td></tr>
            <tr><td>argparse</td><td>/&#712;ɑ&#720;ɡpɑ&#720;z/</td><td>参数解析</td><td><code>parser.add_argument()</code></td></tr>
            <tr><td>typing</td><td>/&#712;ta&#618;p&#618;&#331;/</td><td>类型提示</td><td><code>def func() -> int:</code></td></tr>
            <tr><td>Pillow</td><td>/&#712;v&#604;&#720;t&#643;u&#601;l&#603;nv/</td><td>图像处理库</td><td><code>from PIL import Image, ImageFilter</code></td></tr>
            <tr><td>pip</td><td>/p&#618;p/</td><td>包管理工具</td><td><code>pip install package</code></td></tr>
            <tr><td>wheel</td><td>/wi&#720;l/</td><td>打包格式</td><td><code>python setup.py bdist_wheel</code></td></tr>
            <tr><td>setuptools</td><td>/&#712;set&#652;ptu&#720;lz/</td><td>打包工具</td><td><code>from setuptools import setup</code></td></tr>
            <tr><td>pdb</td><td>/&#716;pi&#720; di&#720; &#712;bi&#720;/</td><td>调试器</td><td><code>pdb.set_trace()</code></td></tr>
        </table>
 
        <!-- 5. 面向对象编程 -->
        <h3>5. 面向对象编程(15词)</h3>
        <table class="vocabulary-table">
            <tr><th>英文</th><th>音标</th><th>中文</th><th>代码示例</th></tr>
            <tr><td>class</td><td>/klɑ&#720;s/</td><td>类</td><td><code>class User:</code></td></tr>
            <tr><td>object</td><td>/&#712;&#594;bd&#658;&#618;kt/</td><td>对象</td><td><code>obj = User()</code></td></tr>
            <tr><td>instance</td><td>/&#712;&#618;nst&#601;ns/</td><td>实例</td><td><code>isinstance(obj, User)</code></td></tr>
            <tr><td>method</td><td>/&#712;meθ&#601;d/</td><td>方法</td><td><code>def get_name(self):</code></td></tr>
            <tr><td>attribute</td><td>/&#601;&#712;tr&#618;bju&#720;t/</td><td>属性</td><td><code>self.name = name</code></td></tr>
            <tr><td>inheritance</td><td>/&#618;n&#712;her&#618;t&#601;ns/</td><td>继承</td><td><code>class Admin(User):</code></td></tr>
            <tr><td>polymorphism</td><td>/&#716;p&#594;li&#712;m&#596;&#720;rf&#618;z&#601;m/</td><td>多态</td><td><code>def speak(animal): ...</code></td></tr>
            <tr><td>encapsulation</td><td>/&#618;n&#716;k&#230;psju&#712;le&#618;&#643;&#601;n/</td><td>封装</td><td><code>self.__private_var</code></td></tr>
            <tr><td>abstraction</td><td>/&#230;b&#712;str&#230;k&#643;&#601;n/</td><td>抽象</td><td><code>from abc import ABC</code></td></tr>
            <tr><td>interface</td><td>/&#712;&#618;nt&#601;fe&#618;s/</td><td>接口</td><td><code>class Runnable(ABC):</code></td></tr>
            <tr><td>constructor</td><td>/k&#601;n&#712;str&#652;kt&#601;r/</td><td>构造方法</td><td><code>def __init__(self):</code></td></tr>
            <tr><td>destructor</td><td>/d&#618;&#712;str&#652;kt&#601;r/</td><td>析构方法</td><td><code>def __del__(self):</code></td></tr>
            <tr><td>staticmethod</td><td>/&#712;st&#230;t&#618;k&#716;meθ&#601;d/</td><td>静态方法</td><td><code>@staticmethod</code></td></tr>
            <tr><td>classmethod</td><td>/&#712;klɑ&#720;smeθ&#601;d/</td><td>类方法</td><td><code>@classmethod</code></td></tr>
            <tr><td>property</td><td>/&#712;pr&#594;p&#601;ti/</td><td>属性装饰器</td><td><code>@property</code></td></tr>
        </table>
    </div>

<script>
// 有道发音函数
function playYoudaoAudio(word, isPhonetic = false) {
    // 清理音标符号
    const cleanWord = word.replace(/[\/\s]/g, '')
    const audioUrl = `http://dict.youdao.com/dictvoice?type=1&audio=${encodeURIComponent(cleanWord)}`
     
    const audio = new Audio(audioUrl)
    audio.play().catch(error => {
        console.error('播放失败:', error)
        alert('发音加载失败,请检查网络连接')
    })
}
 
// 自动为所有词汇添加发音按钮
document.addEventListener('DOMContentLoaded', () => {
    // 为音标部分的示例单词添加发音按钮(第三列)
    document.querySelectorAll('table.phonetic-table td:nth-child(3)').forEach(td => {
        const word = td.textContent.split('\n')[0].trim()
        const btn = document.createElement('span')
        btn.className = 'pronounce-btn'
        btn.title = '点击发音'
        btn.onclick = () => playYoudaoAudio(word)
        td.appendChild(btn)
    })

    // 为Python词汇部分的英文单词添加发音按钮(第一列)
    document.querySelectorAll('table.vocabulary-table td:nth-child(1)').forEach(td => {
        const word = td.textContent.split('\n')[0].trim()
        const btn = document.createElement('span')
        btn.className = 'pronounce-btn'
        btn.title = '点击发音'
        btn.onclick = () => playYoudaoAudio(word)
        td.appendChild(btn)
    })
})
</script>
</body>
</html>