TIOBE 是什么?一文读懂编程语言排行榜

thbcm阅读(392)

一、TIOBE 简介

TIOBE 编程语言排行榜是一个衡量编程语言流行度的指标,每月更新一次。它基于全球技术工程师、课程和第三方供应商的数量,通过分析搜索引擎(如 Google、百度、维基百科等)的数据来计算排名。

二、TIOBE 的计算方式

TIOBE 的计算方式主要是通过统计搜索引擎中包含特定编程语言名称的网页数量,然后除以所有编程语言名称相关网页数量的总和,再乘以 100,得到该语言的 TIOBE 指数。

三、TIOBE 的意义与局限性

(一)意义

  • TIOBE 排行榜可以反映当前编程语言的流行趋势,帮助开发者了解哪些语言更受市场欢迎。
  • 它为开发者提供了学习和掌握新语言的方向,有助于提升个人竞争力。
  • 对于企业,TIOBE 排行榜可以作为选择开发语言的参考,了解行业趋势。

(二)局限性

  • TIOBE 排行榜基于搜索引擎数据,可能受到搜索引擎优化(SEO)等因素的影响,数据不够精准。
  • 搜索框结果无法完全反映编程语言的实际使用情况,例如一些在企业内部广泛使用但公开讨论较少的语言可能排名较低。

四、TIOBE 排行榜的动态变化

(一)近期变化趋势

  • Python 持续领先Python 凭借其在数据科学、人工智能和自动化脚本等领域的广泛应用,稳居排行榜首位。
  • C++ 和 Rust 等高性能语言崛起C++ 凭借高效的性能和强大的功能,近期成功攀升至排行榜第二位。Rust 也以其卓越的安全性和性能,吸引了众多开发者的关注。
  • 老旧语言回潮:一些“古老”语言如 FortranDelphiAda 等正在重新获得关注,这与许多重要遗留系统仍使用这些语言有关。

(二)2025 年 8 月最新排名

以下是 2025 年 8 月 TIOBE 编程语言排名的部分数据:

以下是历年 TIOBE 编程语言排名数据:

五、如何利用 TIOBE 排行榜选择学习语言

(一)结合自身兴趣

选择你感兴趣的编程语言,这样你更有动力去学习。例如,对数据分析感兴趣的可以学习 Python。

(二)考虑职业规划

根据你的职业规划选择合适的语言。如果希望从事 Web 开发,那么 JavaScript 是必备的技能;如果希望从事企业级应用开发,那么 Java 是一个不错的选择。

(三)关注行业趋势

参考 TIOBE 排行榜,关注行业趋势。选择那些排名上升、市场需求大的语言,有助于提升个人竞争力。

六、总结

TIOBE 编程语言排行榜是一个重要的参考指标,它可以帮助开发者了解编程语言的流行趋势和市场需求。然而,选择编程语言时不应仅仅依据排名,还需要结合自身的兴趣、职业规划以及行业趋势。编程狮(W3Cschool)提供了丰富的编程语言教程资源,包括 Python、Java、C++ 等,适合零基础小白学习。

Python 为什么是零基础学编程的最佳选择?

thbcm阅读(406)

在数字化浪潮席卷全球的今天,编程已从“专业技能”逐渐演变为“通用素养”。对于零基础学习者而言,选择一门语法简单、生态丰富、应用广泛的编程语言至关重要。Python 凭借其“低门槛、高上限”的特性,成为全球超 800 万开发者的首选入门语言(数据来源:Stack Overflow 2024 开发者调查)。本文将从语言特性、应用场景、学习价值等维度,为你解析 Python 为何是编程新手的“最佳起点”。

一、Python 是什么?为什么它天生适合入门?

Python 是由荷兰程序员 Guido van Rossum 于 1991 年开发的高级通用编程语言,其设计哲学是“用最清晰的方式写代码”。与其他语言(如 C++、Java)相比,Python 有两个“先天优势”:

1. 语法接近自然语言,学习曲线平缓

Python 代码强调“可读性优先”,语法规则高度接近英语。例如,打印“你好,编程狮!”只需一行代码:

print("你好,编程狮!")  # 直接输出文本,无需复杂符号

这种特性让新手能快速跳过“语法规则”的门槛,将精力集中在“解决问题”本身。

2. 开箱即用的生态,降低学习成本

Python 内置了丰富的标准库(如处理文件的 os、操作数据的 csv),覆盖日常开发的 80% 基础需求。新手无需从头造轮子,可直接调用现成工具完成任务,例如用 turtle 模块轻松实现图形绘制:

import turtle  # 导入绘图库
t = turtle.Turtle()
t.forward(100)  # 控制画笔前进100像素
turtle.done()   # 保持窗口显示

二、Python 的核心魅力:从“学得会”到“用得上”

(一)语言特性:简单与强大的平衡

Python 用“极简语法”实现了“高级功能”,这是其区别于其他语言的关键:

特性 说明 对新手的价值
解释型语言 无需编译,代码逐行执行 边写边测,调试更高效;无需等待冗长的编译过程
多范式支持 支持面向对象、函数式、过程化编程 灵活适应不同项目需求;新手可从最易理解的“过程化”起步
跨平台兼容性 代码可在 Windows、macOS、Linux 系统无缝运行 无需为环境适配烦恼;学习成果可跨设备验证
可扩展性 支持调用 C/C++、Java 等语言的库(通过 ctypes 等工具) 后期可逐步接触底层技术,拓展能力边界

(二)应用场景:从兴趣到职业的无缝衔接

Python 的“全能性”让它覆盖了从日常工具到工业级项目的全场景,新手学习后能快速获得“成就感”:

1. 数据分析与可视化

pandas 处理表格数据、matplotlib 绘制图表,10 行代码即可完成销售数据的统计分析:

import pandas as pd
import matplotlib.pyplot as plt


data = {'月份': ['1月', '2月', '3月'], '销售额': [10000, 15000, 18000]}
df = pd.DataFrame(data)  # 读取数据
df.plot(x='月份', y='销售额', kind='bar')  # 绘制柱状图
plt.title('季度销售额统计')
plt.show()

2. 自动化办公

openpyxl 自动处理 Excel 表格、pyautogui 模拟鼠标键盘操作,告别重复劳动:

import openpyxl


wb = openpyxl.load_workbook('数据.xlsx')  # 打开Excel文件
sheet = wb['销售表']
for row in sheet.iter_rows(min_row=2):     # 从第2行开始遍历
    total = row[1].value * row[2].value    # 计算“单价×数量”
    sheet.cell(row=row[0].row, column=4).value = total  # 写入“总价”列
wb.save('更新后数据.xlsx')  # 保存修改

3. 人工智能与机器学习

Python 是 AI 领域的“事实标准”,借助 scikit-learn 可快速实现一个图像分类模型:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier


# 加载数据集(鸢尾花分类)
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target)


# 训练模型
model = KNeighborsClassifier(n_neighbors=3)
model.fit(X_train, y_train)


# 评估准确率
print(f"模型准确率:{model.score(X_test, y_test):.2f}")  # 输出类似 0.98

三、为什么说 Python 是“初学者友好型”语言?

(一)学习资源丰富,社区支持强大

Python 拥有全球最大的开发者社区之一,中文资源也极为丰富:

(二)就业市场需求旺盛

根据《2024 中国编程语言人才报告》,Python 相关岗位(数据分析师、AI 工程师、后端开发)的招聘量年增长率达 25%,平均起薪高于行业平均水平 18%。对于新手而言,掌握 Python 不仅能快速入门编程,还能为职业发展打开多元路径。

(三)从“玩具语言”到“工业级工具”的成长路径清晰

Python 初学者可按编程狮上的《Python零基础到高薪就业》路径进行学习:

  1. 基础阶段(1-3个月):掌握语法、完成小工具开发(如自动整理文件脚本);
  2. 实战阶段(3-6个月):学习主流框架(如 Web 开发的 Flask、数据分析的 Pandas),完成项目实战;
  3. 职业阶段(6个月+):根据兴趣选择细分领域(AI、后端、自动化等),深入钻研核心技术。

四、Python 的局限性与适用建议

(一)客观看待局限性

  • 运行速度:作为解释型语言,Python 在高频计算(如游戏引擎、高频交易)中性能弱于 C++、Java;
  • 内存占用:动态类型机制导致内存管理不如编译型语言高效,不适合内存敏感型应用(如嵌入式开发);
  • 移动开发:虽可通过 Kivy 等框架开发移动应用,但主流选择仍是 Java(Android)、Swift(iOS)。

(二)明确适用场景

Python 更适合以下类型的任务:
数据分析、AI 模型训练、Web 后端开发等“逻辑驱动型”任务;
自动化脚本、工具开发等“效率优先型”任务;
教育、科研等“快速验证想法”的场景。

五、给初学者的建议:如何高效入门 Python?

  1. 先动手,后理论:通过编写小工具(如计算器、天气查询脚本)巩固语法,避免陷入“只学不练”的误区;
  2. 善用社区资源:遇到问题时,优先在 Stack Overflow、编程狮等平台搜索解决方案;
  3. 聚焦一个方向:初期建议选择“数据分析”或“Web 开发”等应用广泛的领域,通过项目驱动学习;
  4. 参与开源项目:在 GitHub 上贡献小功能(如修复文档错误),积累实战经验。

结语

Python 之所以能成为“入门编程的首选语言”,本质上是其“简单性”与“强大性”的完美平衡——它降低了编程的“入门门槛”,却未限制“成长上限”。无论你是想培养一项新技能的学生,还是希望转行进入科技行业的职场人,Python 都能为你提供一个高效、有趣的起点。

现在,不妨打开编程狮(W3Cschool)的 Python 课程,写下第一行 print("你好,编程狮!"),开启属于你的编程之旅吧!

《黑神话:钟馗》官网技术架构分析与前端实现教程

thbcm阅读(402)

2025 年 8 月 20 日,游戏科学在科隆展一口气释放《黑神话:钟馗》的首支 CG 预告片,并同步上线官网。

官网既要承载海量并发的高清 4K 视频,又需支持多语言、无障碍访问,还要为后续社区化运营预留扩展空间,技术难度可想而知。

本文中编程狮将对官网做逐行级技术拆解,并给出可落地的学习与进阶路线。

1 官网技术架构分析

《黑神话:钟馗》官方网站(gamesci.cn/zhongkui)作为一个展示重磅游戏作品的窗口,采用了现代前端技术栈来保证用户体验和性能。通过分析,我们可以看出该网站很可能使用了以下技术:

1.1 核心前端技术

  • HTML5:网站使用了HTML5的语义化标签来构建页面结构,确保良好的文档结构和SEO优化。
  • CSS3:采用了CSS3的Flexbox/Grid布局系统实现响应式设计,保证在不同设备上的显示效果。
  • JavaScript (ES6+):使用了ES6+特性如模块化、箭头函数等实现页面交互逻辑。

1.2 前端框架与库

考虑到游戏官网需要丰富的交互和动画效果,网站很可能使用了:

  • React:这款组件化库非常适合构建复杂的用户界面,其虚拟DOM特性能够高效更新页面元素。
  • Vue:也有可能使用Vue框架,其响应式系统和单文件组件设计适合开发动态网站。

1.3 构建工具

  • Vite:作为新一代前端构建工具,Vite提供极快的冷启动和热更新,大幅提升开发体验。
  • Webpack:也可能使用了Webpack进行模块打包,它高度可配置,适合大型项目。

1.4 动画与交互技术

官网中丰富的动画效果可能使用了:

  • CSS3动画:使用@keyframestransitions实现平滑过渡效果。
  • WebGL:对于复杂的视觉效果(如预告片展示),可能使用了WebGL技术。
  • Canvas/SVG:用于实现动态背景和交互元素。

2 关键实现技术详解

2.1 响应式布局实现

官网采用了响应式设计,以下是一个基于CSS Grid和Flexbox的布局示例:

.container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-gap: 20px;
}


.header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem 5%;
  background-color: rgba(0, 0, 0, 0.8);
  position: fixed;
  width: 100%;
  top: 0;
  z-index: 1000;
}


@media (max-width: 768px) {
  .container {
    grid-template-columns: repeat(6, 1fr);
  }

  
  .header {
    flex-direction: column;
  }
}

2.2 交互效果实现

官网中的滚动交互和动画效果可以使用JavaScript实现:

// 滚动监听实现淡入效果
window.addEventListener('scroll', () => {
  const elements = document.querySelectorAll('.fade-in');
  const windowHeight = window.innerHeight;

  
  elements.forEach(element => {
    const position = element.getBoundingClientRect().top;

    
    if (position < windowHeight * 0.85) {
      element.style.opacity = 1;
      element.style.transform = 'translateY(0)';
    }
  });
});


// 视频模态框控制
function openVideoModal(videoUrl) {
  const modal = document.getElementById('video-modal');
  const video = document.getElementById('modal-video');

  
  video.src = videoUrl;
  modal.style.display = 'block';

  
  // 添加关闭功能
  modal.querySelector('.close').onclick = () => {
    modal.style.display = 'none';
    video.pause();
  };
}

2.3 性能优化技术

官网加载性能优良,可能采用了以下优化技术:

// 图片懒加载实现
const lazyImages = document.querySelectorAll('img[data-src]');


const imageObserver = new IntersectionObserver((entries, observer) => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      const img = entry.target;
      img.src = img.dataset.src;
      img.classList.remove('lazy');
      imageObserver.unobserve(img);
    }
  });
});


lazyImages.forEach(img => imageObserver.observe(img));


// 使用Web Workers处理复杂计算
const worker = new Worker('worker.js');
worker.postMessage(data);
worker.onmessage = function(event) {
  const result = event.data;
  // 处理结果
};

3 完整项目示例:游戏展示网站

以下是一个简化版的游戏官网实现示例,展示了核心功能:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>游戏展示官网</title>
  <style>
    :root {
      --primary-color: #3a0ca3;
      --secondary-color: #7209b7;
      --accent-color: #f72585;
      --dark-bg: #0d0c1d;
      --light-text: #f8f9fa;
    }

    
    * {
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: 'Arial', sans-serif;
    }

    
    body {
      background-color: var(--dark-bg);
      color: var(--light-text);
      line-height: 1.6;
      overflow-x: hidden;
    }

    
    .navbar {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 1rem 5%;
      background-color: rgba(0, 0, 0, 0.8);
      position: fixed;
      width: 100%;
      top: 0;
      z-index: 1000;
    }

    
    .hero-section {
      height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      background: linear-gradient(rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0.7)), url('background.jpg');
      background-size: cover;
      background-position: center;
      text-align: center;
    }

    
    .hero-content h1 {
      font-size: 3.5rem;
      margin-bottom: 1rem;
      animation: fadeInUp 1s ease-out;
    }

    
    .cta-button {
      display: inline-block;
      padding: 0.8rem 2rem;
      background-color: var(--accent-color);
      color: white;
      text-decoration: none;
      border-radius: 30px;
      font-weight: bold;
      transition: transform 0.3s, background-color 0.3s;
    }

    
    .cta-button:hover {
      transform: translateY(-3px);
      background-color: #ff057a;
    }

    
    .section {
      padding: 5rem 10%;
    }

    
    .gallery {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
      gap: 1.5rem;
      margin-top: 2rem;
    }

    
    .card {
      background: rgba(255, 255, 255, 0.05);
      border-radius: 10px;
      overflow: hidden;
      transition: transform 0.3s;
    }

    
    .card:hover {
      transform: translateY(-10px);
    }

    
    @keyframes fadeInUp {
      from {
        opacity: 0;
        transform: translateY(20px);
      }
      to {
        opacity: 1;
        transform: translateY(0);
      }
    }

    
    /* 响应式设计 */
    @media (max-width: 768px) {
      .hero-content h1 {
        font-size: 2.5rem;
      }

      
      .gallery {
        grid-template-columns: 1fr;
      }
    }
  </style>
</head>
<body>
  <nav class="navbar">
    <div class="logo">
      <img src="logo.png" alt="游戏logo" height="40">
    </div>
    <ul class="nav-links">
      <li><a href="#about">关于游戏</a></li>
      <li><a href="#media">媒体</a></li>
      <li><a href="#news">新闻</a></li>
      <li><a href="#community">社区</a></li>
    </ul>
  </nav>

  
  <section class="hero-section">
    <div class="hero-content">
      <h1>黑神话:钟馗</h1>
      <p>全新东方神话动作角色扮演游戏</p>
      <a href="#" class="cta-button">观看预告片</a>
    </div>
  </section>

  
  <section id="about" class="section">
    <h2>关于游戏</h2>
    <p>《黑神话:钟馗》是一款基于中国民间传说和道教神话的动作角色扮演游戏,由游戏科学开发。</p>
  </section>

  
  <section id="media" class="section">
    <h2>游戏媒体</h2>
    <div class="gallery">
      <div class="card">...</div>
      <div class="card">...</div>
      <div class="card">...</div>
    </div>
  </section>

  
  <script>
    // 简单的滚动效果
    document.querySelectorAll('nav a').forEach(anchor => {
      anchor.addEventListener('click', function(e) {
        e.preventDefault();
        const target = document.querySelector(this.getAttribute('href'));
        target.scrollIntoView({ behavior: 'smooth' });
      });
    });

    
    // 懒加载实现
    if ('IntersectionObserver' in window) {
      const lazyElements = document.querySelectorAll('[data-src]');

      
      const lazyObserver = new IntersectionObserver((entries, observer) => {
        entries.forEach(entry => {
          if (entry.isIntersecting) {
            const element = entry.target;
            if (element.tagName === 'IMG') {
              element.src = element.dataset.src;
            } else {
              element.style.backgroundImage = `url(${element.dataset.src})`;
            }
            element.classList.remove('lazy');
            lazyObserver.unobserve(element);
          }
        });
      });

      
      lazyElements.forEach(element => lazyObserver.observe(element));
    }
  </script>
</body>
</html>

将以上代码粘贴至W3Cschool的HTML在线编译器即可查看效果。

4 课程推荐

想要学习如何创建类似《黑神话:钟馗》官网的现代网站?编程狮(w3cschool.cn)提供了以下优质课程:

  1. 前端开发:零基础入门到项目实战:这门课程提供了全面系统的前端知识体系,从HTML5、CSS3到JavaScript和前端框架,帮助你建立坚实的前端基础。

  2. React+Redux交互式用户界面:通过简单的React + Redux基础和相关案例的讲解,从而达到一个学习和加深印象的效果。而且在课程中我们可以体验有关于React与Redux这两个知识点简单有趣的解析和举例说明使用方法!

  3. Vue.js三天学习实战教程:掌握Vue.js框架的核心概念和应用,包括单文件组件、Vue路由和状态管理。

  4. HTML+CSS响应式网页设计 (基础版):通过简单的HTML与css基础来实现简单的网页项目效果。在课程中我们体验到有关于简单的页面响应式使用和实现的方式。在最后我们可以将代码整合起来就是本课程的一个响应式项目。

这些课程适合不同层次的学习者,从初学者到有经验的开发者都能找到合适的学习内容。通过系统学习,你将能够创建出与《黑神话:钟馗》官网相媲美的现代网站。

5 总结

《黑神话:钟馗》官网展示了现代前端开发的最佳实践,结合了HTML5、CSS3和JavaScript的最新特性,很可能使用了React或Vue等前端框架,并采用了Vite或Webpack等构建工具。网站实现了响应式设计、平滑动画和高效性能优化,为用户提供了出色的浏览体验。

通过分析这类高质量网站,我们可以学习到如何将各种前端技术有机结合,创建出既美观又功能强大的web应用。编程狮提供的相关课程可以帮助你系统掌握这些技术,逐步提升前端开发能力。

无论你是初学者还是有经验的开发者,持续学习和实践是掌握前端开发的关键。从基础开始,逐步学习更高级的概念和技术,最终你将能够创建出令人印象深刻的作品。

AI 是什么意思?一文读懂人工智能的核心概念

thbcm阅读(374)

AI 是什么意思?

一、AI 的定义

人工智能(Artificial Intelligence,简称 AI)是一门研究如何通过计算机程序或机器来模拟、实现人类智能的技术和方法的科学。它是计算机科学的一个重要分支,旨在研究和开发出能够模拟、延伸和扩展人类智能的理论、方法、技术及应用系统。通过模拟人类的智能行为,人工智能系统能够完成复杂的任务,如图像识别、语音处理、自然语言理解等,这些任务在过去需要人类智能才能完成。

目前,人工智能可以分为强人工智能和弱人工智能两种。强人工智能指能够真正地推理和解决问题的智能机器,它具有知觉和自我意识,可以独立思考问题并制定解决方案,有自己的价值观和世界观体系。弱人工智能则是指不能真正地推理和解决问题的智能机器,这些机器只是看起来像是智能的,但并不真正拥有智能,也不会有自主意识。

一句话解释:让机器像人一样“会思考、能学习、懂决策”的技术总称。
– “人工” = 由人类设计、用代码实现
– “智能” = 会看(图像识别)、会听(语音识别)、会理解(自然语言处理)、会预测(推荐算法)

二、AI 的核心技术

(一)机器学习

机器学习是人工智能的核心技术之一。它让计算机系统能够利用数据来提高自身性能,就像是让计算机自己“学习”知识。机器学习分为监督学习、无监督学习和强化学习。监督学习就像是有老师在旁边指导,给计算机提供带有正确答案的数据集,让它学习如何根据输入数据得到正确的输出。无监督学习则没有给定的标签,计算机自己去发现数据中的规律。强化学习是通过让计算机在环境中采取行动,并根据行动的结果给予奖励或惩罚,从而让计算机学会最优的行为策略。

(二)深度学习

深度学习是机器学习的一个子领域,它使用神经网络这种架构,能够处理更加复杂的数据,如语音识别、自然语言处理等任务。深度学习通过构建多层的神经网络结构,模仿人脑神经网络的结构,处理复杂的非线性问题,在图像识别、语音识别等领域取得了巨大成功。

(三)自然语言处理(NLP)

自然语言处理是让计算机能够理解和生成人类语言的技术。它包括机器翻译,如谷歌翻译能够将一种语言翻译成多种语言;情感分析,用于分析社交媒体上用户评论的情感倾向是正面还是负面;文本生成,像一些写作助手可以帮助用户生成文章的初稿等。

(四)计算机视觉

计算机视觉使计算机能够理解和处理图像或视频中的内容。在安防领域,通过摄像头的图像识别可以检测异常行为或者识别特定的人物;在自动驾驶中,计算机视觉技术可以帮助汽车识别道路、交通标志和其他车辆等。

三、AI 的应用领域

(一)智能家居

AI 可以让你的家变得更加智能和便捷。智能音箱可以回答问题、播放音乐、控制家电,让你轻松享受生活。

(二)智能医疗

AI 在医疗领域有广泛的应用,如辅助诊断、医学影像分析、药物研发等,能够提高诊断的准确性和效率。

(三)自动驾驶

自动驾驶汽车利用 AI 技术,通过传感器和摄像头收集数据,实时分析路况,做出驾驶决策,提高行车安全性和效率。

(四)金融领域

AI 可以用于风险评估、 fraud detection、投资决策等方面,帮助金融机构提高效率和准确性,降低风险。

四、AI 的优势

(一)自动化

AI 可以自动执行工作流和流程,也可以不依靠人工团队来独立自主地开展工作。例如,AI 可以通过持续监控和分析网络流量来帮助自动执行网络安全的各个方面。同样,智能工厂可能使用数十种不同类型的 AI,例如机器人使用计算机视觉在工厂车间移动或检查产品是否存在缺陷、创建数字孪生体,或使用实时分析来衡量效率和产量。

(二)减少人为错误

AI 可以通过每次都遵循相同流程的自动化功能和算法来消除数据处理、分析、制造装配和其他任务中的人为错误。

(三)消除重复任务

AI 可用于执行重复任务,从而让人力资源能够空出手来解决影响较大的问题。AI 可用于自动执行流程,例如验证文档、转写电话或回答“你们几点关门?”之类的简单客户问题。机器人通常用于代替人类执行“枯燥、肮脏或危险”的任务。

(四)快速准确

与人类相比,AI 可以更快地处理更多信息,从而查找模式并发现人类可能错过的数据关系。

五、小试牛刀

不写复杂模型,直接调用开源库 MediaPipe 来体验“手势识别”。

打开 Python IDE (如你的电脑上还没有安装 Python 环境可以参考编程狮上的Python 3.13.3 安装教程),新建文件 ai_hand.py,复制下面代码即可运行。

# 安装一次就够:pip install mediapipe opencv-python
import cv2, mediapipe as mp


cap = cv2.VideoCapture(0)                 # 打开摄像头
mp_hands = mp.solutions.hands.Hands()     # 调 AI 模型


while True:
    ret, frame = cap.read()
    result = mp_hands.process(frame)      # AI 开始思考
    if result.multi_hand_landmarks:
        print("检测到,AI 已识别!")      # 终端输出
    cv2.imshow('AI 手势识别', frame)
    if cv2.waitKey(1) & 0xFF == 27: break

六、常见问题

问题 一句话回答
AI 会取代程序员吗? 不会,但会用 AI 的程序员取代不会的。
不会英语能学 AI 吗? 可以,编程狮所有课程都配中文讲义+中文社区。
需要显卡吗? 初学阶段用 CPU 足够,后期训练大模型再升级。

七、总结

AI 是一门让机器能够模拟人类智能的技术,涵盖了机器学习、深度学习、自然语言处理和计算机视觉等多个领域。它在智能家居、智能医疗、自动驾驶和金融等领域都有广泛的应用,具有自动化、减少人为错误、消除重复任务和快速准确等优势。如果你想深入了解 AI 技术,编程狮(W3Cschool)上有丰富的相关课程,包括机器学习、深度学习和自然语言处理等,适合零基础小白学习,帮助你开启 AI 之旅。

Python 编程有什么用?一文带你全面了解

thbcm阅读(410)

Python 是一种功能强大、易于学习的编程语言,广泛应用于各个领域。它以简洁的语法和强大的库支持而闻名,能够帮助开发者高效地解决问题。以下将从多个方面介绍 Python 的用途,并提供一些简单的代码示例来帮助理解。

一、Web 开发

Python 在 Web 开发领域占据重要地位,主要得益于其丰富的框架和库。DjangoFlask 是最流行的 Python Web 框架。Django 是一个全功能框架,适合快速开发复杂的 Web 应用;Flask 则是一个轻量级框架,适合小型项目或微服务架构。使用 Python 可以轻松构建网站、API 和 Web 应用的后端逻辑,处理用户认证、数据库管理、表单验证等任务。

from flask import Flask, render_template


app = Flask(__name__)


@app.route('/')
def home():
    return render_template('home.html')


if __name__ == '__main__':
    app.run(debug=True)

以上代码展示了一个简单的 Flask 应用,用于启动一个 Web 服务器并渲染首页。

二、数据科学与机器学习

Python 是数据科学和机器学习领域的首选语言之一。它拥有丰富的库和工具,如 NumPyPandasMatplotlib、SciPy 以及 TensorFlowPyTorchKerasScikit-learn 等,用于数据分析、数据可视化以及机器学习模型的构建和训练。Python 能够轻松处理大规模数据集,进行数据清洗、转换和分析,同时支持多种机器学习算法和模型,为数据科学家和机器学习工程师提供了强大的支持。

import pandas as pd
import matplotlib.pyplot as plt


# 读取数据
data = pd.read_csv('data.csv')


# 数据可视化
plt.plot(data['Date'], data['Value'])
plt.xlabel('日期')
plt.ylabel('数值')
plt.title('数据趋势图')
plt.show()

以上代码展示如何使用 Pandas 和 Matplotlib 进行数据读取和可视化。

三、人工智能

Python 在人工智能领域的应用尤为突出,是开发 AI 模型的主要语言。它提供了多个深度学习框架,如 TensorFlow 和 PyTorch,使得开发者能够构建和训练神经网络,实现各种机器学习任务。Python 还提供了许多用于数据预处理、特征提取和模型评估的库,进一步简化了机器学习流程。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense


# 构建神经网络模型
model = Sequential([
    Dense(64, activation='relu', input_shape=(input_dim,)),
    Dense(32, activation='relu'),
    Dense(output_dim, activation='softmax')
])


# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])


# 训练模型
model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))

以上代码展示如何使用 TensorFlow 构建和训练一个简单的神经网络模型。

四、网络爬虫

Python 网络爬虫是一种按照规则在网络上爬取所需内容的脚本程序。它可以通过自动化程序进行有针对性的数据采集和处理。Python 中有许多库支持网络爬虫,如 requestsBeautifulSoup 等。

import requests
from bs4 import BeautifulSoup


# 发送 HTTP 请求
response = requests.get('https://example.com')


# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')


# 提取标题
title = soup.find('title').text
print('网页标题:', title)

以上代码展示如何使用 requests 和 BeautifulSoup 获取网页标题。

五、自动化运维

Python 被广泛用于自动化任务,可以简化重复性任务,提高工作效率。例如,可以使用 Python 编写脚本来自动化数据备份、系统监控、文件处理等任务。这些脚本可以定时运行,减少人工干预,提高工作效率。

import os
import shutil


# 定义源文件夹和目标文件夹
source_folder = '/path/to/source'
backup_folder = '/path/to/backup'


# 创建备份文件夹
os.makedirs(backup_folder, exist_ok=True)


# 复制文件
for file in os.listdir(source_folder):
    file_path = os.path.join(source_folder, file)
    if os.path.isfile(file_path):
        shutil.copy(file_path, backup_folder)
print('文件备份完成')

以上代码展示如何使用 Python 进行文件备份。

六、游戏开发

Python 也可以用于游戏开发,尽管其性能不如 C++,但适合快速原型设计。Pygame 库支持 2D 游戏开发,包括图形渲染、声音处理等。

import pygame
import sys


# 初始化 Pygame
pygame.init()


# 设置屏幕
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption('编程狮游戏')


# 游戏循环
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False


    # 填充屏幕
    screen.fill((0, 0, 0))


    # 更新屏幕
    pygame.display.flip()


pygame.quit()
sys.exit()

以上代码展示如何使用 Pygame 创建一个简单的游戏窗口。

七、Python 的优势

(一)语法简洁易上手

Python 的语法简洁明了,接近自然语言,易于学习和理解。即使是初学者,也能快速上手并编写出功能强大的程序。

(二)丰富的库支持

Python 拥有庞大的开源生态,通过 PyPI 可以获得数十万甚至更多的第三方库,覆盖数据科学、Web 开发、自动化、网络安全等领域。这些库可以大大减少开发工作量,提高开发效率。

(三)跨平台性

Python 可以在不同的操作系统上运行,如 Windows、Linux、macOS 等,这使得开发者可以跨越不同的平台来进行开发和部署。

(四)社区支持

Python 拥有庞大的社区支持,开发者可以在社区中获取到各种资料和支持,如文档、教程、示例代码、第三方库等。Python 的社区还经常举办各种活动,如 PyCon、EuroPython、SciPy 等,使得开发者可以互相交流和分享经验。

九、总结

Python 是一种功能强大、易于学习的编程语言,广泛应用于 Web 开发、数据科学与机器学习、人工智能、网络爬虫、自动化运维和游戏开发等领域。它具有简洁易上手、丰富的库支持、跨平台性和强大的社区支持等优势。通过学习 Python,你可以提升自己的编程能力,为未来的职业发展打下坚实的基础。编程狮(W3Cschool)提供了丰富的 Python 学习资源,帮助你轻松入门 Python 编程。

程序员的浪漫:七夕表白网页制作教程

thbcm阅读(412)

七夕佳节,当传统浪漫邂逅现代科技,会碰撞出怎样的火花?今天,就随编程狮一同走进一个程序员精心打造的七夕表白网页,探索代码背后的深情,同时学习如何运用 HTML、CSS 和 JavaScript 打造出令人眼前一亮的互动效果。无论你是编程初学者,还是对浪漫编程充满好奇的爱好者,本文都将为你详细解析,开启一段编程与浪漫交织的学习之旅。(完整源码在文末

一、初窥浪漫网页的神秘面纱

打开这个七夕表白网页,首先映入眼帘的是深邃的夜空背景,繁星点点,仿佛将人带入一个梦幻的宇宙空间。而飘落的代码雨,如同一场科技感十足的视觉盛宴,为这个浪漫的节日增添了一份独特的神秘氛围。中央的表白文字,以打字机般的节奏缓缓出现,将程序员的心声一字一句地呈现在爱人面前。页面下方的互动按钮,等待着爱人回应这跨越代码的爱意。这一切背后,都离不开 HTMLCSSJavaScript 的精妙配合。

二、搭建浪漫的基石:HTML 结构

HTML 是构建网页的基础,如同搭建一座浪漫城堡的砖石。在这个表白网页中,HTML 负责规划页面的布局和内容框架。它定义了页面的头部、主要展示区域、互动部分以及页脚等各个板块。以表白卡片为例,HTML 通过 <div> 标签创建了一个独立的区域,为后续的样式和交互做好了准备。

<div class="bg-slate-800/70 backdrop-blur-md rounded-xl p-6 md:p-8 shadow-2xl shadow-primary/20 border border-primary/30 mb-12 transform transition-all duration-500 hover:shadow-primary/40 hover:-translate-y-1">
    <!-- 表白卡片内容 -->
</div>

这段代码在编程狮平台的HTML + CSS 基础实战“div 元素嵌套”章节中,初学者可以轻松理解 <div> 是如何作为容器,承载后续的文本、图片等元素。通过设置不同的类名,如 bg-slate-800/70 等,为这个表白卡片赋予了初始的外观特性,等待 CSS 的进一步美化。

三、渲染浪漫色彩:CSS 样式设计

CSS 是网页的化妆师,它为 HTML 构建的结构涂上浪漫的色彩。在这个表白网页中,CSS 不仅设置了整体的深色浪漫主题,还通过各种样式类,为页面的每个元素赋予了独特的外观和动画效果。

.text-shadow-glow {
    text-shadow: 0 0 15px rgba(147, 51, 234, 0.8);
}


.star {
    position: absolute;
    background-color: white;
    border-radius: 50%;
    animation: twinkle 2s infinite alternate;
}


.heart {
    transform-origin: center;
    animation: pulse 1.5s infinite;
}

在 W3Cschool 的 CSS 入门课程里,初学者可以学习到 text-shadow 如何为文字添加光晕效果,让 “七夕 · 2025” 的标题在页面上熠熠生辉;animation 属性又是怎样驱动星星的闪烁和爱心的跳动,赋予页面灵动的生命力。这些样式代码如同画家的笔触,将一个静态的网页变成了一幅充满动感的浪漫画卷。

四、注入浪漫灵魂:JavaScript 动态交互

JavaScript 是这个表白网页的灵魂工程师,它让页面从静态展示跃升为动态互动。通过 JavaScript,程序员实现了星空背景的随机生成、代码雨的流动效果、打字机文字的逐步输出,以及互动按钮的趣味反馈。

// 创建星空背景
function createStars() {
    const starsContainer = document.getElementById('stars');
    const starCount = 150;


    for (let i = 0; i < starCount; i++) {
        const star = document.createElement('div');
        star.classList.add('star');


        const size = Math.random() * 3 + 1;
        star.style.width = `${size}px`;
        star.style.height = `${size}px`;


        star.style.left = `${Math.random() * 100}%`;
        star.style.top = `${Math.random() * 100}%`;


        star.style.animationDelay = `${Math.random() * 2}s`;


        starsContainer.appendChild(star);
    }
}

学完编程狮的 JavaScript 基础实战,就可以理解并掌握这段代码是如何利用循环和随机函数,创造出独一无二的星空背景。每一次页面的加载,都是一个新的浪漫星空的诞生。而类似的逻辑也被应用在代码雨和打字机效果中,让页面充满了不可预测的惊喜和活力。

五、动手实践:打造你的专属浪漫网页

了解了这个七夕表白网页的构建原理后,是不是也想亲手打造一个属于自己的浪漫作品呢?编程狮平台提供了丰富的学习资源和在线编辑器,你可以从简单的 HTML 结构开始,逐步添加 CSS 样式和 JavaScript 功能。比如,你可以尝试修改代码雨中的字符集,加入更多你和爱人之间的专属符号;或者调整动画的速度和效果,让表白更加符合你的心意。

在学习过程中,遇到任何问题,都可以在编程狮的社区中寻求帮助,与其他编程爱好者交流心得。通过实践,你不仅能提升自己的编程技能,还能将这份浪漫的创造力传递给身边的人。

七夕表白网页完整源码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>2025七夕 · 程序员的浪漫 - 编程狮(w3cschool.cn)</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <link href="https://cdn.jsdelivr.net/npm/font-awesome@4.7.0/css/font-awesome.min.css" rel="stylesheet">

    
    <!-- 配置Tailwind自定义颜色和字体 -->
    <script>
        tailwind.config = {
            theme: {
                extend: {
                    colors: {
                        primary: '#9333ea', // 浪漫紫色
                        secondary: '#22d3ee', // 科技蓝
                        accent: '#ec4899', // 粉色点缀
                        dark: '#1e293b',
                    },
                    fontFamily: {
                        code: ['Consolas', 'Monaco', 'monospace'],
                        sans: ['Inter', 'system-ui', 'sans-serif'],
                    },
                }
            }
        }
    </script>

    
    <style type="text/tailwindcss">
        @layer utilities {
            .text-shadow {
                text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
            }
            .text-shadow-glow {
                text-shadow: 0 0 15px rgba(147, 51, 234, 0.8);
            }
            .star {
                position: absolute;
                background-color: white;
                border-radius: 50%;
                animation: twinkle 2s infinite alternate;
            }
            .heart {
                transform-origin: center;
                animation: pulse 1.5s infinite;
            }
            .code-rain {
                position: fixed;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                pointer-events: none;
                z-index: 0;
            }
        }

        
        @keyframes twinkle {
            from { opacity: 0.3; }
            to { opacity: 1; }
        }

        
        @keyframes pulse {
            0% { transform: scale(1); }
            50% { transform: scale(1.1); }
            100% { transform: scale(1); }
        }

        
        /* 打字机效果 */
        .typewriter-text {
            overflow: hidden;
            border-right: 0.15em solid #9333ea;
            white-space: nowrap;
            margin: 0 auto;
            animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
        }

        
        @keyframes typing {
            from { width: 0 }
            to { width: 100% }
        }

        
        @keyframes blink-caret {
            from, to { border-color: transparent }
            50% { border-color: #9333ea }
        }
    </style>
</head>
<body class="bg-gradient-to-br from-dark to-slate-900 text-white min-h-screen overflow-x-hidden relative">
    <!-- 星空背景 -->
    <div id="stars" class="fixed inset-0 z-0"></div>

    
    <!-- 代码雨效果 -->
    <canvas id="codeRain" class="code-rain"></canvas>

    
    <div class="container mx-auto px-4 py-16 relative z-10">
        <!-- 页面标题 -->
        <header class="text-center mb-16 mt-8">
            <h1 class="text-[clamp(2rem,5vw,4rem)] font-bold text-transparent bg-clip-text bg-gradient-to-r from-primary to-secondary mb-4 text-shadow-glow">
                七夕 · 2025
            </h1>
            <p class="text-gray-300 text-lg md:text-xl max-w-2xl mx-auto">
                一个程序员的浪漫,用代码书写的爱意
            </p>
        </header>

        
        <!-- 主要内容区 -->
        <main class="max-w-4xl mx-auto">
            <!-- 代码风格表白卡片 -->
            <div class="bg-slate-800/70 backdrop-blur-md rounded-xl p-6 md:p-8 shadow-2xl shadow-primary/20 border border-primary/30 mb-12 transform transition-all duration-500 hover:shadow-primary/40 hover:-translate-y-1">
                <div class="flex items-center mb-6">
                    <i class="fa fa-heart text-accent text-2xl mr-3 heart"></i>
                    <h2 class="text-2xl md:text-3xl font-bold text-white">爱的算法</h2>
                </div>

                
                <div class="font-code bg-slate-900/80 p-4 rounded-lg text-green-400 overflow-x-auto">
<pre>def love_algorithm(you, me):
    while True:
        happiness = you + me
        memories.append(create_moment(you, me))
        if challenges_occur():
            solve_together(you, me)
        else:
            celebrate_life(you, me)

            
        # 七夕特别指令
        if today == "2025年七夕":
            say("我爱你")
            give(heart)

            
    return forever</pre>
                </div>

                
                <p class="mt-6 text-gray-300">
                    这是我为我们编写的爱情算法,没有bug,只有无限循环的幸福。
                </p>
            </div>

            
            <!-- 打字机效果表白 -->
            <div class="bg-slate-800/70 backdrop-blur-md rounded-xl p-6 md:p-8 shadow-2xl shadow-secondary/20 border border-secondary/30 mb-12 transform transition-all duration-500 hover:shadow-secondary/40 hover:-translate-y-1">
                <div class="flex items-center mb-6">
                    <i class="fa fa-keyboard-o text-secondary text-2xl mr-3"></i>
                    <h2 class="text-2xl md:text-3xl font-bold text-white">爱的输出</h2>
                </div>

                
                <div class="h-32 flex items-center justify-center">
                    <p id="typewriter" class="text-xl md:text-2xl text-center typewriter-text"></p>
                </div>
            </div>

            
            <!-- 互动部分 -->
            <div class="bg-slate-800/70 backdrop-blur-md rounded-xl p-6 md:p-8 shadow-2xl shadow-accent/20 border border-accent/30 mb-12 text-center">
                <h2 class="text-2xl md:text-3xl font-bold text-white mb-6">你愿意...</h2>

                
                <div class="flex flex-col sm:flex-row justify-center gap-6 mb-8">
                    <button id="yesBtn" class="px-8 py-4 bg-gradient-to-r from-primary to-accent rounded-full text-white text-lg font-bold shadow-lg hover:shadow-primary/50 transform transition-all duration-300 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-primary">
                        <i class="fa fa-check mr-2"></i>接受我的爱意
                    </button>

                    
                    <button id="noBtn" class="px-8 py-4 bg-gray-700 rounded-full text-white text-lg font-bold shadow-lg hover:bg-gray-600 transform transition-all duration-300 focus:outline-none focus:ring-2 focus:ring-gray-500">
                        <i class="fa fa-times mr-2"></i>再考虑一下
                    </button>
                </div>

                
                <div id="response" class="hidden mt-8 p-6 rounded-lg bg-gradient-to-r from-primary/20 to-secondary/20 text-xl"></div>
            </div>

            
            <!-- 记忆碎片 -->
            <div class="bg-slate-800/70 backdrop-blur-md rounded-xl p-6 md:p-8 shadow-2xl shadow-primary/20 border border-primary/30">
                <div class="flex items-center mb-6">
                    <i class="fa fa-database text-primary text-2xl mr-3"></i>
                    <h2 class="text-2xl md:text-3xl font-bold text-white">我们的变量</h2>
                </div>

                
                <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
                    <div class="bg-slate-900/50 p-4 rounded-lg border border-primary/20 hover:border-primary/50 transition-all">
                        <h3 class="font-bold text-secondary mb-2">初遇</h3>
                        <p class="text-gray-300 text-sm">第一次见到你时,我的心跳复杂度从O(1)变成了O(n²)</p>
                    </div>

                    
                    <div class="bg-slate-900/50 p-4 rounded-lg border border-primary/20 hover:border-primary/50 transition-all">
                        <h3 class="font-bold text-secondary mb-2">陪伴</h3>
                        <p class="text-gray-300 text-sm">和你在一起的时光,是我人生中最优雅的代码</p>
                    </div>

                    
                    <div class="bg-slate-900/50 p-4 rounded-lg border border-primary/20 hover:border-primary/50 transition-all">
                        <h3 class="font-bold text-secondary mb-2">未来</h3>
                        <p class="text-gray-300 text-sm">希望我们的故事,能像一个没有终止条件的循环</p>
                    </div>
                </div>
            </div>
        </main>

        
        <!-- 页脚 -->
        <footer class="text-center mt-20 mb-8 text-gray-400 text-sm">
            <p>用 <i class="fa fa-heart text-accent"></i> 和 <i class="fa fa-code text-secondary"></i> 编写于 2025 七夕</p>
            <p class="mt-3">
                <a href="https://www.w3cschool.cn/" target="_blank" rel="noopener noreferrer" 
                   class="text-secondary hover:text-primary transition-colors duration-300 flex items-center justify-center">
                    <i class="fa fa-graduation-cap mr-1"></i> 
                    编程狮(w3cschool.cn) - 程序员的学习乐园
                </a>
            </p>
        </footer>
    </div>


    <script>
        // 创建星空背景
        function createStars() {
            const starsContainer = document.getElementById('stars');
            const starCount = 150;

            
            for (let i = 0; i < starCount; i++) {
                const star = document.createElement('div');
                star.classList.add('star');

                
                // 随机大小
                const size = Math.random() * 3 + 1;
                star.style.width = `${size}px`;
                star.style.height = `${size}px`;

                
                // 随机位置
                star.style.left = `${Math.random() * 100}%`;
                star.style.top = `${Math.random() * 100}%`;

                
                // 随机动画延迟
                star.style.animationDelay = `${Math.random() * 2}s`;

                
                starsContainer.appendChild(star);
            }
        }

        
        // 代码雨效果
        function createCodeRain() {
            const canvas = document.getElementById('codeRain');
            const ctx = canvas.getContext('2d');

            
            // 设置canvas尺寸
            function resizeCanvas() {
                canvas.width = window.innerWidth;
                canvas.height = window.innerHeight;
            }

            
            window.addEventListener('resize', resizeCanvas);
            resizeCanvas();

            
            // 字符集 - 一些有意义的编程字符和汉字
            const chars = '01アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲンabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ我爱你七夕';

            
            // 列宽
            const columnWidth = 15;
            // 列数
            const columns = Math.floor(canvas.width / columnWidth);
            // 每列的y坐标
            const drops = [];

            
            // 初始化每列的起始位置
            for (let i = 0; i < columns; i++) {
                drops[i] = Math.random() * -100;
            }

            
            function draw() {
                // 半透明背景,创建轨迹效果
                ctx.fillStyle = 'rgba(15, 23, 42, 0.05)';
                ctx.fillRect(0, 0, canvas.width, canvas.height);

                
                // 文字颜色
                ctx.fillStyle = '#22d3ee';
                ctx.font = '15px Consolas';

                
                // 绘制字符
                for (let i = 0; i < drops.length; i++) {
                    // 随机字符
                    const text = chars[Math.floor(Math.random() * chars.length)];

                    
                    // 绘制字符
                    ctx.fillText(text, i * columnWidth, drops[i] * 15);

                    
                    // 如果字符超出屏幕或随机重置
                    if (drops[i] * 15 > canvas.height && Math.random() > 0.975) {
                        drops[i] = 0;
                    }

                    
                    // 每列下落速度略有不同
                    drops[i]++;
                }
            }

            
            // 动画循环
            setInterval(draw, 35);
        }

        
        // 打字机效果
        function typeWriterEffect() {
            const text = "从遇见你的那一刻起,我的心就只为你编译。这个七夕,我想对你说:我爱你,不止今天,而是永远的循环。";
            const element = document.getElementById('typewriter');
            let i = 0;

            
            function type() {
                if (i < text.length) {
                    element.textContent += text.charAt(i);
                    i++;
                    setTimeout(type, 50);
                }
            }

            
            type();
        }

        
        // 按钮交互
        function setupButtonInteraction() {
            const yesBtn = document.getElementById('yesBtn');
            const noBtn = document.getElementById('noBtn');
            const responseDiv = document.getElementById('response');

            
            // "接受"按钮
            yesBtn.addEventListener('click', () => {
                responseDiv.innerHTML = `
                    <div class="flex flex-col items-center">
                        <div class="text-accent text-5xl mb-4">
                            <i class="fa fa-heart heart"></i>
                        </div>
                        <p>我就知道!余生请多指教,我的爱️</p>
                        <div class="mt-4 text-green-400 font-code">
                            console.log("我们的故事,从此开始执行...")
                        </div>
                    </div>
                `;
                responseDiv.classList.remove('hidden');

                
                // 撒爱心效果
                createHearts();
            });

            
            // "再考虑一下"按钮 - 调皮的效果
            noBtn.addEventListener('mouseover', () => {
                const x = Math.random() * (window.innerWidth - 200);
                const y = Math.random() * (window.innerHeight - 100);
                noBtn.style.position = 'absolute';
                noBtn.style.left = `${x}px`;
                noBtn.style.top = `${y}px`;
            });
        }

        
        // 撒爱心效果
        function createHearts() {
            for (let i = 0; i < 50; i++) {
                const heart = document.createElement('div');
                heart.innerHTML = '<i class="fa fa-heart"></i>';
                heart.classList.add('text-accent', 'absolute');
                heart.style.left = `${Math.random() * 100}%`;
                heart.style.top = `${Math.random() * 100}%`;
                heart.style.fontSize = `${Math.random() * 20 + 10}px`;
                heart.style.opacity = Math.random() + 0.3;
                heart.style.animation = `fall ${Math.random() * 3 + 2}s linear forwards`;
                heart.style.zIndex = '100';
                document.body.appendChild(heart);

                
                // 移除元素
                setTimeout(() => {
                    heart.remove();
                }, 5000);
            }

            
            // 添加下落动画
            const style = document.createElement('style');
            style.textContent = `
                @keyframes fall {
                    0% {
                        transform: translateY(-10px) rotate(0deg);
                        opacity: 1;
                    }
                    100% {
                        transform: translateY(100vh) rotate(720deg);
                        opacity: 0;
                    }
                }
            `;
            document.head.appendChild(style);
        }

        
        // 页面加载完成后初始化
        window.addEventListener('DOMContentLoaded', () => {
            createStars();
            createCodeRain();
            typeWriterEffect();
            setupButtonInteraction();
        });
    </script>
</body>
</html>

创建一个valentines-day.html文件并使用编辑器打开,将以上代码粘贴后保存,使用浏览器即可查看效果。

或者直接复制以上代码粘贴至 W3Cschool 的HTML在线编译器中点击运行,就可以在线运行并展示这个网页了

六、结语

今天,我们一同剖析了一个程序员的七夕表白网页,从 HTML 的搭建到 CSS 的美化,再到 JavaScript 的动态交互,每一个环节都蕴含着编程的魅力和浪漫的情感。希望这篇文章能激发你对编程的兴趣,让你在编程狮(w3cschool.cn)这个学习乐园中,开启一段充满创意和爱的编程之旅。无论是为了表达爱意,还是为了实现自己的创意项目,编程都是一种强大的工具,等待着你去探索和运用。

这些程序员太难沟通了!

thbcm阅读(398)

在职场中,常常能听到非技术部门的同事对技术人员有这样的评价:“这些程序员太难沟通了,脑筋死板、不会变通,会上要么默不作声、要么牛逼轰轰,你不问他不答,沟通效率太低了,说话也挺气人的。” 这种现象并非个例,而是广泛存在于多个团队之中,成为影响团队协作效率的一大痛点。以下将从多个方面分析技术人员难以沟通的原因。

一、技术工作的专注沉浸与沟通断层

技术岗位,尤其是编程、系统调试等,往往需要高度的专注力和长时间的独立思考。这类工作特性决定了技术人员需要长时间沉浸在代码与算法的世界中。这种高度的专注力虽然有助于技术难题的攻克,但也无形中筑起了一道沟通的壁垒。在编程、系统调试等需要深度思考的任务中,频繁的沟通打断往往会干扰他们的思路,影响他们的工作效率,导致沟通意愿的降低。因此,一些技术人员在长期的工作实践中,逐渐形成了低沟通意愿的习惯。他们更倾向于通过代码和文档来“说话”,而忽视了口头沟通的重要性。这种工作方式虽然保证了技术问题的有效解决,但也在一定程度上造成了与团队其他成员的沟通断层,增加了误解的风险。

二、性格特点的映射与沟通障碍

技术工作往往吸引着内向、理性或偏逻辑导向的人群。这类人群可能天生对社交互动的需求较低,对细节沟通不敏感,更倾向于用事实和数据说话。在技术部门内部,如果缺乏对沟通礼仪的明确要求,技术人员可能会更加直白甚至粗鲁地表达自己的观点。这种沟通方式虽然直接,但往往缺乏必要的礼貌和尊重,容易引发他人的不满和误解,进一步加剧了沟通障碍。

三、沟通方式与工具的偏好差异

技术人员习惯通过文字记录和邮件来传递信息,有时可能会选择比口头沟通更直接、准确的书面形式。然而,这种沟通方式可能导致信息传递的延迟,尤其是在需要即时反馈的情况下。此外,不同团队对沟通工具的偏好也存在差异,技术人员可能更倾向于使用邮件或即时通讯工具,而非面对面交流,这也可能影响沟通的效果。

四、资源有限和时间紧迫

在很多公司,技术团队承担着较高强度的开发任务和项目压力,人员配置有限。频繁的沟通可能会延长开发时间,导致技术人员只能在进度上优先保证核心需求,尽量减少不必要的反馈。而有时,他们在遇到瓶颈或新任务时,也可能需要优先处理紧急问题,以至于无暇及时回应别人的请求。

五、沟通技能缺乏培养

技术培训通常重视硬技能,比如编程能力、问题解决,但对沟通技巧的重视程度不够高。技术人员在职业生涯中往往缺乏系统的沟通技能培训,这使得他们在面对复杂的沟通场景时,可能不知道如何有效地表达自己的想法或理解他人的需求。

六、如何改善技术人员的沟通问题

(一)提高沟通意识

技术人员需要认识到沟通在团队协作中的重要性,主动提高沟通意识。例如,在项目开始前,可以与团队成员进行充分的沟通,了解项目需求和目标,明确各方的职责和期望。

(二)选择合适的沟通方式

根据不同的沟通场景,选择合适的沟通方式。在需要即时反馈的情况下,尽量采用面对面交流或电话沟通;而在需要详细记录的情况下,则可以使用邮件或文档。例如,在编程狮(W3Cschool)的项目开发中,技术人员可以利用在线协作工具,与团队成员进行实时沟通和文档共享。

(三)培养沟通技巧

通过参加沟通培训课程或阅读相关书籍,学习有效的沟通技巧。例如,学习如何倾听他人的意见,如何清晰地表达自己的想法,以及如何解决沟通中的冲突。

(四)建立良好的沟通机制

团队可以建立定期的沟通会议制度,如每日站会或每周进度汇报会,确保团队成员之间的信息畅通。同时,可以利用项目管理工具来跟踪项目进度,及时发现和解决问题。

(五)跨部门交流与合作

技术人员可以主动参与跨部门的交流活动,了解其他部门的工作内容和需求,增进彼此的理解和信任。例如,在编程狮(W3Cschool)的案例分享会上,技术人员可以与其他部门的同事分享自己的工作经验,同时学习其他部门的沟通方式和工作方法。

(六)自我反思和改进

技术人员可以定期对自己的沟通表现进行反思,总结经验教训,不断改进自己的沟通方式。例如,可以在每次项目结束后,回顾自己在沟通方面的不足之处,制定改进计划,并在下一个项目中加以实践。

七、总结

技术人员在沟通上遇到的困难主要源于技术工作的特质、性格特点、沟通方式与工具的偏好差异、资源有限和时间紧迫以及沟通技能缺乏培养等因素。通过提高沟通意识、选择合适的沟通方式、培养沟通技巧、建立良好的沟通机制、参与跨部门交流与合作以及自我反思和改进,技术人员可以有效地改善沟通问题,提升团队协作效率。

图解Python基础语法:零基础入门教程(附实例代码)

thbcm阅读(398)

一、为什么选择Python?

Python 是一种简单易学、功能强大的编程语言,它的语法简洁明了,非常适合零基础的初学者入门。无论是 Web 开发、数据分析、人工智能还是自动化脚本,Python 都能胜任。对于零基础小白来说,Python就像编程语言中的”普通话”——简单易懂、应用广泛。它的语法贴近自然语言,不需要复杂的符号组合,哪怕是刚接触编程的同学,也能快速写出实用的代码。

比如打印一句欢迎语,Python只需要一行代码:

print("欢迎来到编程狮学习Python!")  # 在编程狮的在线编辑器中,直接运行就能看到结果

而在其他语言中,可能需要写更多代码才能实现同样的功能。这也是为什么Python成为数据分析、人工智能、web开发等领域的热门选择。

如果你想系统学习,可以试试编程狮(w3cschool.cn)的《Python零基础入门到实战》课程,内容涵盖【Python全栈】+【数据分析】+【机器学习】+【推荐系统】 特别适合零基础小白。

二、Python安装步骤(图解)

学习Python前,需要先在电脑上安装它。以下是简单的安装步骤,更详细的图文教程可以在编程狮官网查看“Python 3.13.3 安装教程”。

安装完成后,你可以使用Python自带的IDLE,或者编程狮的Python3在线编辑器(无需安装,打开浏览器就能用)来写代码。

三、第一个Python程序

让我们从经典的”Hello World”开始:

# 这是我的第一个Python程序,在编程狮学习
print("你好,编程狮的小伙伴!")
print("Python真简单,一起加油!")

运行这段代码,会输出:

你好,编程狮的小伙伴!
Python真简单,一起加油!

程序执行图解:

解释:Python是”解释型语言”,就像有人逐句帮你读代码并执行。print()是一个内置函数,作用是”打印”(输出)括号里的内容。

四、变量与数据类型

1. 什么是变量?

变量就像一个贴了标签的盒子,用来存放数据。你可以给盒子起名字(变量名),放入数据,也可以随时更换里面的数据。

变量命名规则

  • 只能包含字母、数字和下划线(不能以数字开头)
  • 区分大小写(姓名姓名1是两个不同变量)
  • 不能用Python关键字(如iffor等)
# 正确的变量名
编程狮昵称 = "小狮"
学习时长 = 120  # 单位:分钟


# 错误的变量名(不要这样写)
# 2小时 = 120  # 不能以数字开头
# my-name = "错误"  # 不能包含减号

2. 常用数据类型

Python有几种常用的数据类型,就像盒子里装的东西可以是不同类型(比如文字、数字):

示例代码

# 不同数据类型的变量
网站名称 = "编程狮(w3cschool.cn)"  # 字符串
成立年份 = 2014  # 整数
评分 = 4.9  # 浮点数
是否免费 = True  # 布尔值


# 查看类型
print(type(网站名称))  # 输出:<class 'str'>
print(type(评分))      # 输出:<class 'float'>

五、运算符

运算符就像数学中的加减乘除,用来对数据进行计算或比较。

示例代码

# 运算符示例(来自编程狮练习题库)
编程时长 = 120  # 单位:分钟
休息时长 = 15


# 算术运算
总时长 = 编程时长 + 休息时长
print("总时长:", 总时长, "分钟")  # 输出:总时长:135 分钟


# 比较运算
是否达标 = 编程时长 >= 100
print("今天是否达标?", 是否达标)  # 输出:今天是否达标? True


# 逻辑运算
是否优秀 = 编程时长 > 120 and 休息时长 < 20
print("是否达到优秀标准?", 是否优秀)  # 输出:是否达到优秀标准? False

六、流程控制:条件语句

程序默认从上到下顺序执行,但有时我们需要根据条件决定执行哪些代码(比如”如果下雨就带伞,否则不带”)。

示例代码

# 编程狮课程测验评分系统
分数 = 75  # 假设这是你的测验分数


if 分数 >= 90:
    print("优秀!可以获得编程狮勋章")
elif 分数 >= 60:
    print("及格,继续加油!")
else:
    print("不及格,建议复习编程狮的对应章节")

代码解释

  • if 后面的条件成立时,执行缩进的代码块
  • elif 是”否则如果”,可以有多个
  • else 是”否则”,所有条件都不成立时执行

七、总结

本文介绍了Python的基础语法,包括:

  • 变量与数据类型(字符串、整数、布尔值等)
  • 常用运算符(算术、比较、逻辑)
  • 条件语句(if-else)

这些是Python的基础知识,就像盖房子的地基。建议结合编程狮的在线练习,多写多练才能真正掌握。

如何看待00后多数人对电脑基础知识的缺失?

thbcm阅读(376)

近日在知乎看到一个热度很高的话题-“如何看待00后多数人对电脑基础知识的缺失?”。

今天,编程狮从一个程序员的视角来看,这并非简单的技能问题,而是时代变迁下成长环境与工具演化的必然结果。

一代人的“网吧记忆”:为何我们对00后感到陌生?

对80后和90后来说,电脑技能的积累往往从“被迫折腾”开始。小时候,学校微机课教我们输入法、画图、文字处理,但真正让我们熟练的却是网吧经历。那时,我们为了玩《红警》《魔兽争霸》,自己摸索着安装系统、下载游戏、改注册表,甚至调试网络设置。网吧不仅是娱乐场所,更是我们与电脑建立深厚关系的启蒙课堂。

反观00后,他们的生活被智能手机彻底重塑。手机以极低的学习成本满足了娱乐、学习和社交需求,电脑逐渐沦为考试时才使用的工具。没有了网吧年代的“被迫尝试”,也就少了我们那代人对电脑底层逻辑的深入理解。

编程世界的启示:缺失的技能是否重要?

作为程序员,我深知电脑基础知识的重要性。从文件管理到系统配置,从命令行操作到脚本编写,这些技能构成了我们与计算机交互的基础。但对非技术领域的00后来说,这种“缺失”真的会影响他们的未来吗?

从工具演化的趋势来看,答案或许并不悲观。现代操作系统和软件已极大降低了学习门槛,用户无需掌握复杂命令即可完成日常操作。未来AI和自动化技术的发展,可能会让许多当前看似必要的电脑技能变得过时,正如DOS指令早已退出历史舞台。与其纠结于具体技能的掌握,不如关注00后是否具备探索新工具的好奇心和学习能力。

编程教育的未来:如何弥合技能断层?

对于00后和未来的学习者来说,编程教育需要调整策略:

  • 从“任务驱动”到“兴趣驱动”:与其强迫学习,不如通过项目激发兴趣,如通过游戏开发学习编程逻辑。
  • 降低工具门槛:开发更友好、直观的编程环境,让初学者快速上手。
  • 注重思维培养:与其强调具体技能,不如着重培养逻辑思维、问题分解能力与技术适应性。

结语:00后的未来,远比我们想象的更精彩

00后对传统电脑操作的生疏,是时代环境塑造的结果。但我们无需为此感到担忧。未来属于那些拥有好奇心、学习能力与适应力的人,而这些品质,00后从来不缺。编程世界将因他们的加入而焕然一新。

学 AI 需要哪些编程基础?一文带你入门

thbcm阅读(362)

随着人工智能(AI)的不断发展,越来越多的人对其产生了浓厚的兴趣。对于初学者来说,了解学 AI 需要哪些编程基础是至关重要的。编程狮将从编程语言选择、数学基础、数据结构与算法等方面进行详细介绍。

一、编程语言选择

(一)Python

Python 是 AI 领域中最常用的语言,其简洁易学的语法和丰富的库支持使得它成为初学者的首选。Python 拥有众多专门为 AI 设计的库,如 NumPyPandas 用于数据处理,Matplotlib、Seaborn 用于数据可视化,TensorFlowPyTorch 用于深度学习等。以下是一个简单的 Python 示例,展示如何使用 Pandas 进行数据处理:

import pandas as pd


# 读取数据
data = pd.read_csv('data.csv')


# 数据清洗
data.dropna(inplace=True)


# 数据分析
print(data.describe())

在编程狮(W3Cschool)的 Python 教程中,你可以系统地学习 Python 的基础知识和 AI 相关库的使用。

(二)C++

如果你对 AI 基础设施、机器人或自动驾驶汽车等方向感兴趣,C++ 是一个不错的选择。它是一种编译型语言,可以直接访问和控制底层硬件以及内存,进行精细化的内存管理,在处理大规模数据时至关重要。以下是一个简单的 C++ 示例:

#include <iostream>
using namespace std;


int main() {
    cout << "你好,编程狮!" << endl;
    return 0;
}

编程狮(W3Cschool)提供了 C++ 的入门课程,帮助你打下坚实的基础。

(三)R

R 是一种专门为统计分析而构建的语言,在数据分析和数据科学领域非常流行。如果你计划在学术界或金融领域工作,学习 R 会很有帮助。以下是一个简单的 R 示例:

# 数据分析
data <- c(1, 2, 3, 4, 5)
mean_data <- mean(data)
print(mean_data)

编程狮(W3Cschool)也有 R 语言的相关教程,方便你学习。

(四)MATLAB

MATLAB 曾经是人工智能领域的重要语言,但如今其地位逐渐被 Python 取代。不过,如果你所在的公司仍然使用 MATLAB,学习它也是有必要的。

二、数学基础

(一)线性代数

线性代数是处理向量与矩阵的数学工具,对于理解深度学习中的神经网络结构至关重要。你需要掌握向量、矩阵、线性变换等概念以及矩阵乘法、逆矩阵等运算。

(二)微积分

微积分是优化算法的基础,你需要了解导数、偏导数、梯度、链式法则等概念。

(三)概率论与统计学

概率论与统计学帮助我们处理不确定性问题,是构建机器学习模型的基础。你需要学习随机变量、概率分布、期望、方差等概念,以及假设检验、贝叶斯定理等统计方法。

三、数据结构与算法

(一)数据结构

了解常见的数据结构,如数组、链表、栈、队列、树、图等及其操作,这对于实现高效的 AI 算法非常重要。

(二)算法

掌握基本的算法,如排序、搜索、动态规划等,这些算法能够帮助你优化 AI 模型的性能。

四、实践项目

理论学习是基础,但实践才是掌握 AI 编程的关键。你可以从简单的项目开始,如使用线性回归预测房价、使用 K-近邻算法进行图像分类等。随着知识的积累,可以尝试更复杂的项目,如使用深度学习进行自然语言处理或图像识别。此外,参加 Kaggle 等在线竞赛平台上的机器学习竞赛,也是一个很好的实践机会。

五、推荐学习资源

编程狮(W3Cschool)提供了丰富的 AI 相关课程,包括 Python、C++、R 等编程语言的基础教程,以及机器学习、深度学习等进阶课程,适合不同层次的学习者。除编程狮外,如CSDN51CTO博客园等技术社区上也有许多 AI 学习资料和经验分享,可以帮助你更好地理解和掌握 AI 编程。

六、总结

学习 AI 需要一定的编程基础,包括掌握至少一种编程语言(如 Python、C++、R 等)、具备扎实的数学基础(线性代数、微积分、概率论与统计学)以及了解常见的数据结构与算法。通过实践项目和持续学习,你可以不断提升自己的 AI 编程能力。编程狮(W3Cschool)提供了全面的学习资源,帮助你从零开始,逐步成长为 AI 领域的专业人才。

联系我们