零基础学Python?这些软件是你的最佳选择!

thbcm阅读(309)

你是不是对Python很感兴趣,想要学习这门流行的编程语言?你是不是对编程软件有些迷茫,不知道该用什么软件来写Python代码?如果你是一个Python新手,那么这篇文章就是为你准备的。

小狮妹将给你介绍一些基本的编程软件的概念,以及推荐几款适合初学者的Python IDE。

1,了解基础概念

如果你在编程方面接触的比较少,那么对于软件这一块,有几个名词一定要了解,比如开发环境、IDE、代码编辑器、编译器、调试器等等。这些都是编程过程中必不可少的工具,它们可以帮助你更方便地编写、运行和调试代码。下面我简单地给你解释一下它们的含义和作用:

  • 开发环境:开发环境就是指你用来编程的软件和硬件的集合,它包括了操作系统、编程语言、代码编辑器、编译器、调试器等等。不同的编程语言可能需要不同的开发环境,比如Java需要安装JDK(Java Development Kit),而Python需要安装Python解释器。
  • IDE:IDE是Integrated Development Environment的缩写,意思是集成开发环境。它是一种集合了代码编辑器、编译器、调试器等多种功能于一体的软件,可以让你在一个界面中完成编程的各个步骤。IDE通常会提供一些便利的功能,比如代码提示、代码高亮、代码格式化、代码检查、代码运行、代码调试等等。
  • 代码编辑器:代码编辑器就是用来输入和编辑代码的软件,它可以让你方便地输入和修改代码,同时也可以显示代码的结构和语法。代码编辑器通常会支持多种编程语言,比如Notepad++、Sublime Text、VS Code等等。



  • 编译器:编译器就是用来将源代码转换为可执行文件的软件,它可以让你的代码在目标平台上运行。不同的编程语言可能需要不同的编译器,比如C语言需要GCC(GNU Compiler Collection),而Java需要Javac(Java Compiler)。
  • 调试器:调试器就是用来检查和修复代码错误的软件,它可以让你在运行代码时查看变量的值、设置断点、单步执行等等。调试器通常会和IDE或者代码编辑器配合使用,比如PyCharm自带了Python调试器。

2、为什么要安装Python开发环境?

如果你想运行Python程序,那么必不可少的就是Python的开发环境。Python开发环境主要包括了Python解释器和一些标准库和第三方库。

Python解释器是用来执行Python代码的软件,它可以让你在命令行或者交互式解释器中输入和运行Python代码。标准库和第三方库是一些提供了各种功能和模块的软件包,它们可以让你更方便地编写和运行Python代码。比如,你可以使用标准库中的math模块来进行数学运算,或者使用第三方库中的requests模块来进行网络请求。

要安装Python开发环境,你可以直接从Python官网下载Python安装包,或者使用一些专门的Python发行版,比如Anaconda、WinPython等等。这些发行版通常会预装一些常用的第三方库,比如NumPy、Pandas、Matplotlib等等,可以让你更快地开始Python编程。

3、如何选择合适的Python IDE?

有了开发环境了,就需要有编辑器之类的软件来编写Python代码了。市面上Python IDE有很多,每个IDE都有自己的特点和长处,只有选择适合自己的IDE,开发才会得心应手,事半功倍。那么,如何选择合适的Python IDE呢?我觉得可以从以下几个方面考虑:

  • 功能:不同的IDE可能提供不同的功能,比如代码提示、代码高亮、代码格式化、代码检查、代码运行、代码调试等等。你可以根据自己的需求和喜好,选择一个功能丰富且易用的IDE。
  • 兼容性:不同的IDE可能对不同的操作系统和Python版本有不同的支持,比如有些IDE只能在Windows上运行,有些IDE只能支持Python 3.x版本。你可以根据自己的开发环境,选择一个兼容性好且稳定的IDE。
  • 社区:不同的IDE可能有不同的社区和用户群体,比如有些IDE很受专业开发者的欢迎,有些IDE很受初学者的青睐。你可以根据自己的水平和目标,选择一个社区活跃且资源丰富的IDE。

4、几款适合初学者的Python IDE

下面我就给大家推荐几款我认为适合初学者的Python IDE,它们都是免费且易用的,你可以根据自己的喜好和需求进行选择和尝试:


  • PyCharm:PyCharm是一款非常流行且强大的Python IDE,它提供了很多便利和高级的功能,比如智能代码提示、代码重构、代码调试、版本控制、项目管理等等。PyCharm有两个版本,分别是免费的社区版和付费的专业版。对于初学者来说,社区版已经足够使用了。
  • VS Code:VS Code是一款轻量级且跨平台的代码编辑器,它支持多种编程语言,包括Python。VS Code通过安装插件来扩展功能,比如Python插件可以让你在VS Code中编写、运行和调试Python代码。VS Code也提供了一些实用和友好的功能,比如代码提示、代码高亮、代码格式化、代码检查等等。



  • Thonny:Thonny是一款专门为初学者设计的Python IDE,它非常简洁且易用。Thonny内置了Python解释器和调试器,可以让你直接在Thonny中运行和调试Python代码。Thonny也提供了一些帮助初学者理解编程原理的功能,比如显示变量的值、显示代码的执行过程、显示错误的原因等等。
  • Mu:Mu是另一款专门为初学者设计的Python IDE,它也非常简洁且易用。Mu内置了Python解释器和一些常用的第三方库,可以让你在Mu中编写、运行和调试Python代码。Mu也提供了一些针对不同场景的模式,比如Python模式、Web模式、游戏模式等等,可以让你更快地开始Python编程。

以上就是小狮妹给大家介绍的几款适合初学者的Python IDE,你可以根据自己的情况进行选择和尝试~希望这篇文章能够对你有所帮助,祝你学习Python顺利!

零基础HTML+CSS教程:制作马赛克背景并居中显示图片

thbcm阅读(315)

欢迎来到编程狮(W3Cschool),这里是您学习编程的起点。在这个教程中,我们将一起学习如何使用HTMLCSS来创建一个具有马赛克背景的网页,并在页面中居中显示一张图片。同时,我们会介绍一个强大的AI编程工具——豆包MarsCode,它将帮助您更高效地编写代码。

效果截图

第一步:了解HTML基础

在开始编写代码之前,让我们先了解一些HTML的基础知识。HTML(HyperText Markup Language)是构建网页和网上应用的标准标记语言。它由一系列的元素组成,这些元素告诉浏览器如何展示内容。

如果您是零基础用户,推荐您先学习编程狮上的HTML + CSS 基础实战,这将帮助您快速掌握HTML的基本结构和常用标签。

第二步:编写HTML结构

现在,让我们看看如何构建这个网页的基本结构。打开您的文本编辑器,创建一个新的HTML文件,并输入以下代码:

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>HTML+CSS实现马赛克背景 | 编程狮(w3cschool.cn)</title>
</head>
<body>
    <div class="center">
        <img src="https://7nsts.w3cschool.cn/images/w3c/w3cschool-logo.png?t=191105" alt="w3cschool-logo">
    </div>
    <!-- 页面内容 -->
</body>
</html>

代码解释

  • <!DOCTYPE html> 声明了文档类型和HTML版本。
  • <html lang="zh"> 是根元素,lang="zh" 表示页面内容使用中文。
  • <head> 包含了文档的元数据,如字符编码和视口设置。
  • <title> 定义了网页的标题。
  • <body> 包含了可见的页面内容。
  • <div class="center"> 是一个容器,用于居中显示内容。
  • <img> 标签用于插入图片,src 属性指定图片的URL,alt 属性提供了图片的替代文本。

第三步:学习CSS基础

接下来,我们需要使用CSS来美化我们的网页。CSS(Cascading Style Sheets)用于设置HTML元素的样式。

对于CSS的初学者,编程狮提供了CSS入门课程,帮助您掌握CSS的选择器、属性和布局技巧。

第四步:编写CSS样式

<head>标签内,添加一个<style>标签,并输入以下CSS代码:

body {
    margin: 0;
    padding: 0;
    background-image: linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc 100%),
                      linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc 100%);
    background-size: 50px 50px;
    background-position: 0 0, 25px 25px;
}


.center {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
}

代码解释

  • body 选择器设置了页面的外边距和内边距为0,并定义了背景图像。
  • background-image 使用了两个线性渐变来创建马赛克效果。
  • background-sizebackground-position 控制背景图像的大小和位置。
  • .center 类使用了Flexbox布局来水平和垂直居中显示内容。

第五步:使用AI编程工具——豆包MarsCode

在编程过程中,我们可以使用豆包MarsCode来提高编码效率。它提供了代码补全、单测生成、代码解释等功能,非常适合初学者和专业开发者。

安装MarsCode

  1. 访问豆包MarsCode官网,了解其功能并下载安装。
  2. Visual Studio Code中安装MarsCode插件,重启IDE并登录,即可开始使用。

最后一起看下完整源代码吧(为方便初学者学习,每行代码后面都使用豆包marscode添加了详细的注释),新建一个文本文件,复制并粘贴以下代码,保存后将文件名及后缀修改为css实现马赛克背景编程狮教程.html,用浏览器就可以打开查看效果了

<!DOCTYPE html>
<html lang="zh">
<head>
    <!-- 定义文档的字符编码为UTF-8 -->
    <meta charset="UTF-8">
    <!-- 设置视口的宽度和初始缩放比例 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- 定义文档的标题 -->
    <title>HTML+CSS实现马赛克背景 | 编程狮(w3cschool.cn)</title>
    <style>
        /* 设置页面的外边距和内边距为0 */
        body {
            margin: 0;
            padding: 0;
            /* 设置页面的背景图像为两个线性渐变的组合 */
            background-image: linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc 100%),
                              linear-gradient(45deg, #ccc 25%, transparent 25%, transparent 75%, #ccc 75%, #ccc 100%);
            /* 设置背景图像的大小为50像素x50像素 */
            background-size: 50px 50px;
            /* 设置背景图像的位置为0 0和25像素 25像素 */
            background-position: 0 0, 25px 25px;
        }


        /* 定义一个类名为center的样式 */
        .center {
            /* 使用flex布局 */
            display: flex;
            /* 水平居中对齐 */
            justify-content: center;
            /* 垂直居中对齐 */
            align-items: center;
            /* 高度为100vh,即整个视口的高度 */
            height: 100vh;
        }
    </style>
</head>
<body>
    <!-- 使用center类来居中显示内容 -->
    <div class="center">
        <!-- 插入一张图片,图片的URL为https://7nsts.w3cschool.cn/images/w3c/w3cschool-logo.png?t=191105 -->
        <img src="https://7nsts.w3cschool.cn/images/w3c/w3cschool-logo.png?t=191105" alt="w3cschool-logo">
    </div>
    <!-- 页面内容 -->
</body>
</html>

结语

通过这个教程,您不仅学会了如何使用HTML和CSS来创建一个具有马赛克背景的网页,还了解了如何使用豆包MarsCode来提升您的编程效率。编程狮(w3cschool.cn)提供了丰富的编程课程,帮助您从零基础成长为编程高手。豆包MarsCode官网则是您编程路上的得力助手,让您的编码之旅更加顺畅。开始您的编程之旅吧!

如何用CSS3创建圆角矩形并居中显示?

thbcm阅读(328)

在网页设计中,圆角矩形因其美观和现代感而被广泛使用,居中显示元素也是一个常见的需求。今天,我们将学习如何使用CSS3border-radius属性来创建圆角矩形,并将其居中显示在页面上。

如果你正在学习CSS,那么这个实例将非常适合你练手。如果想要更生动的学习CSS,推荐编程狮W3Cschool的HTML + CSS 基础实战,它能让你像玩游戏一样闯关中掌握更多的多前端开发实用技巧。

如果你没有HTML基础请先学习《HTML入门课程(含HTML5)

一、创建圆角矩形

首先,我们来看如何创建一个圆角矩形:

.rectangle { <!-- 定义矩形样式 -->
    width: 400px; <!-- 设置矩形宽度为400像素 -->
    height: 300px; <!-- 设置矩形高度为300像素 -->
    background-color: #4CAF50; /* 设置背景颜色为绿色 */
    border: 2px solid #000; /* 设置边框为2像素的黑色实线 */
    border-radius: 10px; /* 设置圆角为10像素 */
}

要使用CSS3创建圆角矩形,你需要使用border-radius属性。border-radius属性允许你为元素的四个角设置圆角。以下是一些基本的使用方法:

单个值

如果你为border-radius属性提供一个值,那么这个值将应用于所有四个角:

css

.rectangle {
  border-radius: 10px; /* 所有四个角都是10px的圆角 */
}

两个值

如果你提供两个值,第一个值将应用于左上角和右下角,第二个值将应用于右上角和左下角:

css

.rectangle {
  border-radius: 10px 20px; /* 左上角和右下角是10px的圆角,右上角和左下角是20px的圆角 */
}

三个值

如果你提供三个值,第一个值将应用于左上角,第二个值将应用于右上角和左下角,第三个值将应用于右下角:

css

.rectangle {
  border-radius: 10px 20px 30px; /* 左上角是10px的圆角,右上角和左下角是20px的圆角,右下角是30px的圆角 */
}

四个值

如果你提供四个值,它们将分别应用于左上角、右上角、右下角和左下角:

css

.rectangle {
  border-radius: 10px 20px 30px 40px; /* 左上角是10px的圆角,右上角是20px的圆角,右下角是30px的圆角,左下角是40px的圆角 */
}

当然你也可以使用编程狮上的在线生成CSS圆角工具来快速一键获取圆角的css代码

二、居中显示

要将圆角矩形居中显示,我们可以使用以下两种方法之一:

方法1:使用Flexbox

将矩形包裹在一个容器中,并使用Flexbox来居中它:

<!DOCTYPE html> <!-- 定义文档类型为HTML5 -->
<html>
<head>
  <meta charset="UTF-8"> <!-- 设置字符编码为UTF-8 -->
  <title>居中显示圆角矩形示例 | 编程狮(w3cschool.cn)</title> <!-- 页面标题 -->
  <style>
    .container { /* 定义容器样式 */
      display: flex; /* 使用Flexbox布局 */
      justify-content: center; /* 水平居中子元素 */
      align-items: center; /* 垂直居中子元素 */
      height: 100vh; /* 使容器高度占满整个视口高度 */
    }
    .rectangle { /* 定义矩形样式 */
      width: 400px; /* 设置矩形宽度为400像素 */
      height: 300px; /* 设置矩形高度为300像素 */
      background-color: #4CAF50; /* 设置背景颜色为绿色 */
      border: 2px solid #000; /* 设置边框为2像素的黑色实线 */
      border-radius: 10px; /* 设置圆角为10像素 */
    }
  </style>
</head>
<body>
  <div class="container"> <!-- 使用容器类 -->
    <div class="rectangle"></div> <!-- 使用矩形类 -->
  </div>
</body>
</html>

在这个示例中,.container类使用display: flex属性创建了一个Flexbox布局,justify-content: centeralign-items: center属性分别在水平和垂直方向上居中了子元素。这段代码使用了Flexbox,这是一种现代的布局方式,非常适合于简单的居中任务。

推荐学习

方法2:使用绝对定位

如果你不想使用Flexbox,也可以使用绝对定位来居中元素:

<!DOCTYPE html> <!-- 定义文档类型为HTML5 -->
<html>
<head>
  <meta charset="UTF-8"> <!-- 设置字符编码为UTF-8 -->
  <title>居中显示圆角矩形示例 | 编程狮(w3cschool.cn)</title> <!-- 页面标题 -->
  <style>
    /* 定义html和body的样式 */
    html, body {
      height: 100%; /* 设置高度为视口的100% */
      margin: 0; /* 移除默认的外边距 */
    }


    /* 定义内容容器样式 */
    .body-content {
      position: relative; /* 设置定位为相对定位,用于绝对定位子元素的参考 */
      height: 100%; /* 设置高度为100% */
    }


    /* 定义矩形样式 */
    .rectangle {
      position: absolute; /* 设置定位为绝对定位 */
      top: 50%; /* 设置顶部距离为容器高度的50% */
      left: 50%; /* 设置左边距离为容器宽度的50% */
      transform: translate(-50%, -50%); /* 使用变换将矩形向上和向左移动50%,实现居中 */
      width: 400px; /* 设置矩形宽度为400像素 */
      height: 300px; /* 设置矩形高度为300像素 */
      background-color: #4CAF50; /* 设置背景颜色为绿色 */
      border: 2px solid #000; /* 设置边框为2像素的黑色实线 */
      border-radius: 10px; /* 设置圆角为10像素 */
    }
  </style>
</head>
<body>
  <div class="body-content"> <!-- 使用内容容器类 -->
    <div class="rectangle"></div> <!-- 使用矩形类 -->
  </div>
</body>
</html>

在这个示例中,.rectangle类使用position: absolute属性相对于其最近的相对定位祖先(.body-content)进行定位,然后使用transform: translate(-50%, -50%)将其向左和向上移动50%,以实现居中。这段代码使用了绝对定位和transform属性,这是一种更传统的方法,也可以实现相同的效果。

推荐学习:

三、提升开发效率的工具

在开发过程中,我们可以使用豆包MarsCode编程助手来提升我们的编码效率。豆包 MarsCode提供了智能补全、智能预测、智能问答等功能,帮助开发者节省时间,释放创造力。它支持超过100种编程语言,并兼容VSCode和JetBrains代码编辑器,是你编程路上的得力助手。详情见《豆包MarsCode官方使用指南

通过这篇文章,我们不仅学习了如何使用CSS3创建圆角矩形,还了解了如何将其居中显示在页面上。希望这些知识能够帮助你在前端开发的道路上更进一步。如果你对编程感兴趣,不妨访问编程狮W3Cschool,开始你的编程学习之旅。

【示例代码】Python3实现AI版贪吃蛇

thbcm阅读(335)

本文转载至知乎ID:
Charles(白露未晞)知乎个人专栏

下载W3Cschool手机App,0基础随时随地学编程
>>戳此了解

导语

利用Python简单地实现AI版的贪吃蛇。。。

just for fun…

没有用深度学习。。。

算法是由一个叫Hawstein的人在好多好多年以前提出,感觉很有趣,就花了点时间复现了一下他的想法。。。

至于效果。。。

看脸。。。

真的只是觉得他的想法很有趣,仅此而已,因为如果你想让蛇机械地充满整个空间,只需要让蛇一直走S就好了,但是这就变得很无趣了。。。

相关文件

百度网盘下载链接: 💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!

百度网盘链接:https://pan.baidu.com/s/1KPAV6FKLUFj11myoVjzQ2Q
" target="_blank">
💡 温馨提示:使用手机网盘APP转存,即可🎁 订阅更新本资源。后续更新都会直接推送至您的网盘,并收到APP订阅通知,无需再次寻找链接!
百度网盘链接:https://pan.baidu.com/s/1KPAV6FKLUFj11myoVjzQ2Q
 

密码: gb7k

主要思路

(1)蛇每走一步,就使用BFS计算游戏界面中每个位置(蛇身除外)到达食物的最短路径长;

(2)将蛇的安全定义为蛇是否可以跟着蛇尾运动,即蛇头和蛇尾间是否存在路径;

(3)蛇每次行动前先利用虚拟的蛇进行探路,若虚拟的蛇吃完食物后是安全的,真蛇才行动;

(4)若蛇和食物之间不存在路径或者吃完食物后并不安全,就跟着蛇尾走;

(5)若蛇和食物之间、蛇和蛇尾之间均不存在路径,就随便挑一步可行的来走;

(6)保证目标是食物时蛇走最短路径,目标是蛇尾时蛇走最长路径。

不足之处

由于食物是随机出现的,若虚拟的蛇跑一遍发现去吃食物是不安全的,真蛇就不会去吃食物,而是选择追着蛇尾跑,若一直如此,就陷入了死循环,蛇一直追着蛇尾跑跑跑。。。

直到你终止游戏为止。。。

开发工具

Python版本:3.5.4

相关模块:

pygame模块以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

运行方式

在cmd窗口运行AI_snake.py文件即可。

结果展示

动图一直上传失败。。。

所以随便截几个图吧~~~

更多

(1)为了保证代码简单易懂,所提供的代码冗余度较高(比如进行了不必要的重复计算),有兴趣者可对代码进行优化;

(2)相关文件中也提供了普通版本的贪吃蛇游戏(Normal_snake.py)。

CSS尺寸单位全解析:Web前端开发的必备知识

thbcm阅读(281)

在Web前端开发中,掌握CSS尺寸单位是构建响应式和适配不同设备的关键。编程狮将在本文中为您详细解读CSS中的各种尺寸单位,帮助您在移动端和桌面端都能游刃有余。

概览

CSS尺寸单位分为绝对单位和相对单位,它们共同构成了我们布局和设计的基础。

绝对单位

绝对单位提供了一个固定的尺寸,不受显示器或父元素的影响。

  • px (Pixel):像素,基于设备屏幕分辨率。
    div { font-size: 12px }
    p { text-indent: 24px }
  • pt (Points):磅,1 pt = 1/72 英寸。
    div { font-size: 10pt }
    p { height: 100pt }
  • pc (Picas):派卡,印刷中使用的单位。
    div { font-size: 10pc }
    p { height: 10pc }
  • in (Inches):英寸。
    div { font-size: 10in }
    p { height: 10in }
  • mm (Millimeter):毫米。
    div { font-size: 10mm }
    p { height: 10mm }
  • cm (Centimeter):厘米。
    div { font-size: 10cm }
    p { height: 10cm }
  • q (Quarter millimeters):1/4毫米。
    div { font-size: 20q }
    p { height: 100q }

相对单位

相对单位则依据其他尺寸或比例来定义。

  • % (Percentage):百分比,相对于父元素的宽度。
    <body>
    <div class="parent">
      <div class="children"></div>
    </div>
    </body>
    <style>
    .parent { width: 100px }
    .children { width: 66.6% }
    /* children的宽度为 66.6px */
    </style>
  • em (Element meter):根据当前文档对象内文本的字体尺寸计算。
    body { font-size: 14px }
    .element { font-size: 16px; width: 2em; /* 2em === 32px */ }
  • rem (Root element meter):根据根文档(body/html)字体计算尺寸。
    body { font-size: 14px }
    .element { font-size: 16px; width: 2rem; /* 2rem === 28px */ }
  • ex (Height of the letter x):文档字符“x”的高度。
    .x { height: 1ex; overflow: hidden; background: #aaa; }
  • ch (Width of the digit 0):文档数字“0”的宽度。
    .0 { width: 10ch; overflow: hidden; background: #ccc; }

运算

  • calc:允许进行四则运算。
    h1 { width: calc(100% - 10px + 2rem); }

单位比例

了解单位之间的转换比例对于精确设计至关重要:

  • 1in = 2.54cm = 25.4 mm = 101.6q = 72pt = 6pc = 96px

视口单位

  • vh (View height) / vw (View width):相对于视口的高度和宽度。
    .element { width: 50vw; height: 80vh; /* 根据视口尺寸计算 */ }
    .full-height { height: 100vh; /* 与视口同等高度 */ }
    h1 { width: 100vw; /* 与视口同宽 */ }
  • vmin / vmax:视口宽度或高度中较小/较大的那个尺寸。
    .box { height: 100vmin; width: 100vmin; /* 根据视口较小尺寸计算 */ }
    .box { height: 100vmax; width: 100vmax; /* 根据视口较大尺寸计算 */ }

以上就是CSS尺寸单位的全面解析,希望对您的Web前端开发之旅有所帮助。如果您想学习更多css免费教程,可以访问W3Cschool的CSS尺寸教程

为什么要学Python?选择Python的八大理由。编程小白请入,写在学习前的建议。

thbcm阅读(324)

0
1
为什么要学Python?

学起来容易:

Python 就像英语⼀样,学起来挺直⽩的。它的代码看起来就像是在写英⽂,所以初学者学起来不会觉得头疼。

啥都能⼲:

想做⽹站?搞数据分析?或者是弄个机器⼈?Python 都能帮忙。它就像是⼀个多⾯⼿,各种活都能⼲。

资源超多:

Python 就像⼀个超⼤的⼯具箱,⾥⾯什么⼯具都有,⽽且⽹上还有超多的教程和帮助,遇到问题也容易找到答案。

到处都能跑:

不管你⽤的是 Windows 还是 Mac,甚⾄是 Linux,Python 都能在上⾯运⾏,⾮常⽅便。

开发快速:

⽤ Python 写程序就像搭积⽊⼀样快。它让你能快速把想法变成现实,不⽤花太多时间在繁琐的代码上。

有个超⼤的社区:

⽤ Python 就像加⼊了⼀个超⼤的俱乐部,遇到问题,总有⼈能帮忙解决。这个社区超级活跃,⽆论你是新⼿还是⽼⼿,都能从中受益。

学校⾥也爱⽤:

Python 因为简单,很多学校都⽤它来教编程。⽽且科学家们也爱⽤它来做研究,可以说是学术界的宠⼉。

新技术的最佳伙伴:

在 AI、机器学习这些最前沿的领域,Python 就像是⼀把利器,帮助⼈们开发出很多酷炫的东⻄。

学习建议
0
2

从基础开始:

先学习 Python 的基本语法,⽐如变量、循环、条件判断等。这是打好基础的关键。

动⼿实践:

编程最重要的是实践。你可以边学边做⼀些⼩项⽬,⽐如⼀个⼩游戏、数据分析项⽬或者⼀个⼩⽹站。这样可以加深理解。

利⽤在线资源:

⽹上有很多免费的 Python 教程和课程,⽐如 Codecademy、W3Cschool编程狮等,这些都是很好的学习资源。

加⼊社区:

Python 有⼀个很活跃的社区。你可以加⼊相关的论坛或社群,⽐如 StackOverflow 上的 Python 板块,那⾥可以找到很多志同道合的朋友,还可以提问和解决问题。

阅读代码:

看看别⼈是怎么写 Python 代码的。GitHub 上有很多开源项⽬,你可以学习其中的代码⻛格和结构。

多做项⽬:

实际的项⽬经验⾮常重要。你可以从⼩项⽬做起,逐渐增加难度。

学习框架和库:

了解和学习⼀些流⾏的 Python 库和框架,⽐如 Flask 或 Django(Web 开发),Pandas 和 NumPy(数据分析),TensorFlow 或 PyTorch(机器学习)。

持续更新知识:

技术是不断发展的,定期更新你的 Python 知识很重要。可以通过阅读官⽅⽂档、技术博客、参加线上或线下的研讨会等⽅式。

错误是你的朋友:

在编程中遇到错误是很正常的,不要⽓馁。错误是学习过程中的⼀部分,通过解决错误,你可以学到更多。

享受编程:

最重要的是,享受编程的过程。让编程成为⼀种乐趣,⽽不仅仅是⼀项任务。

【学习路线】Python基础 详细知识点学习路径(附学习资源)

thbcm阅读(329)

其他路线:

Python基础 >>

Python进阶 >>

Python爬虫 >>

Python数据分析(数据科学) >>

Python 算法(人工智能) >>

Python Web开发 >>

Python自动化运维 >>

符号表解释:

可根据知识点前的符号按需选学,并获取知识点描述和学习资源。

 必学:核⼼知识点,经常⽤到。

建议学:重要知识点,专业⼈⼠的基⽯。

⾯试重点:经常出现的⾯试知识点。

可有可⽆:边缘区域,不是必须探索的地⽅。

知识描绘:知识点描述,快速理解。

学习资源:关联的学习资源。

学习⽬标:阶段性⽬标。

学习路线:基础

资源:

Python3 教程>>>

Python3 入门学练课程>>>

Python3 入门视频课程>>>

Python 官⽅⽂档>>>

⽬标:能⽤Python编写待办事项列表应⽤程序:创建⼀个简单的控制台应⽤,允许⽤户添加、删除和查看待办事项。

Python 安装

教程资源 >>>

课程资源 >>>

开发⼯具:

VS Code

特点:跨平台,插件丰富,内置Git和终端,适⽤于多种编程语⾔。

 PyCharm

特点: 专为Python设计,智能代码助⼿,强⼤的调试⼯具

Sublime

特点: 轻量级,快速,⾼度可定制,⽀持多⽂件同时处理,代码快速跳转。


变量

1、定义变量

  • 在Python中,变量是存储数据值的容器。

  • 定义变量时,不需要显式声明数据类型。Python是动态类型语⾔,会在运⾏时⾃动推断数据类型。

  • 示例:x = 5 这⾥,x 是变量名,它被赋值为整数 5。

2、关键字

  • 关键字是Python中预定义的、具有特殊意义的保留字。

  • 关键字不能⽤作变量名、函数名或其他标识符。

  • 示例:if, else, for, while, class 等。

3、命名规则

  • 变量名必须以字⺟或下划线开头,不能以数字开头。

  • 变量名可以包含字⺟、数字和下划线(A-z, 0-9, 和 _ )。

  • 变量名是⼤⼩写敏感的,例如,myVar 和 myvar 是两个不同的变量。

  • 应避免使⽤Python的内置函数名和关键字作为变量名,以防⽌冲突。

4、基本数据类型

  • 数值类型: 如 int (整数), float (浮点数)。

  • 字符串: ⽤于表示⽂本数据,例如 str。

  • 布尔值: 表示真或假,如 bool(True 或 False)。

  • 列表, 元组, 字典: ⽤于存储集合数据。

5、类型转换

  • 可以使⽤内置函数如 int(), float(), str() 等来转换数据类型。

  • 示例:int(“123”) 会将字符串 “123” 转换为整数 123。

  • ⾃动类型转换发⽣在执⾏特定操作时,例如,将整数与浮点数相加时,整数会⾃动转换为浮点数。

运算符和表达式

描述:Python中的运算符和表达式是编程的基础元素之⼀,它们⽤于执⾏计算、值的⽐较和逻辑运算。

1、算术运算符

  • 加法+​:⽤于两个数值的相加,如 3 + 4 结果为 7。

  • 减法-​:⽤于两个数值的相减,如 5 – 2 结果为 3。

  • 乘法*​:⽤于两个数值的相乘,如 3 * 4 结果为 12。

  • 除法/​:⽤于两个数值的相除,如 8 / 2 结果为 4.0(结果总是浮点数)。

  • 取模%​:返回除法的余数,如 5 % 2 结果为 1。

  • 幂**​:⽤于求幂,如 2 ** 3 结果为 8。

  • 整除//​:返回两数相除的整数部分,如 5 // 2 结果为 2。

2、⽐较运算符

  • 等于== ​: 判断两个值是否相等。

  • 不等于!=​ : 判断两个值是否不等。

  • 大于 >、小于 < ​: ⽐较两个值的⼤⼩。

  • 大于等于 >=、小于等于 <= ​: ⽐较两个值的⼤⼩,包含等于的情况。

3、逻辑运算符

  • 与 and ​: 两个条件同时为真时,结果为真。

  • 或 or ​: 两个条件中⾄少有⼀个为真时,结果为真。

  • 非 not​ : 取反,真变假,假变真。

4、赋值运算符

  • 赋值 =​ : 将右侧的值赋给左侧的变量,如 x = 5。

  • 复合赋值:如 +=, -=, *=, /=, %=, **=, //= 等,将算术操作与赋值结合,例如 x += 3 等同于 x = x + 3。

5、身份运算符

  • is、is not ​: ⽤于判断两个变量是否引⽤同⼀个对象。

6、成员运算符

  • in、not in​ : ⽤于检查序列(如列表、字符串)中是否存在(或不存在)⼀个值。

流程控制

1、条件分⽀

  • if 语句​ : 检查⼀个条件,如果条件为真,则执⾏相关代码块。

  • elif 语句​ : 在if条件不满⾜时,检查另⼀个条件。

  • else 语句​ : 当所有if和elif条件都不满⾜时,执⾏else部分的代码。

2、循环

  • for 循环​ : 遍历序列或其他可迭代对象,对每个元素执⾏代码块。

  • while 循环​ : 当给定条件为真时,重复执⾏代码块。

3、循环控制语句

  • break ​: 提前退出整个循环。

  • continue​ : 跳过当前循环的剩余部分,⽴即开始下⼀次迭代。

基本数据结构

1、字符串 (String)

  • ⽤于存储⽂本。

  • 由字符组成,如 “hello”。

  • 不可变(immutable),意味着⼀旦创建,其内容不能更改。

  • 提供丰富的⽅法进⾏操作,如索引、切⽚、连接和格式化。

2、列表 (List)

  • ⽤于存储有序的数据集合。

  • 可以包含不同类型的元素,如 [1, “hello”, 3.14]。

  • 可变(mutable),可以添加、删除或更改其元素。

  • ⽀持索引和切⽚操作,可以通过索引访问或更改元素。

3、元组 (Tuple)

  • 类似于列表,但是不可变。

  • ⽤于存储有序的数据集合,如 (“apple”, “banana”, “cherry”)。

  • ⼀旦创建,不能修改其内容(添加、删除或更改元素)。

  • 常⽤于函数返回多个值或将多个值作为⼀个整体进⾏处理。

4、集合 (Set)

  • ⽤于存储⽆序的、唯⼀的元素集。

  • 元素不重复,如 {1, 2, 3}。

  • 可变,可以添加或删除元素,但不能包含可变元素(如列表)。

  • ⽀持数学上的集合操作,如并集、交集、差集等。

5、字典 (Dictionary)

  • 存储键值对,每个键对应⼀个值。

  • 例如,{“name”: “Alice”, “age”: 25}。

  • 键通常是字符串或数字,值可以是任何数据类型。

  • 可变,可以添加、删除或更改键值对。

  • ⽆序,不能通过索引。

函数

 资源 >>>

定义

1、参数传递

  • 函数可以接受参数,这些参数在函数调⽤时被传递给函数。

  • 参数可以是必需的,也可以是可选的(带有默认值)。

  • Python还⽀持关键字参数(允许你通过参数名指定参数)和可变数量的参数(使⽤*args和**kwargs)。

2、作⽤域

描述: 在Python中,变量的作⽤域决定了在哪⾥可以访问该变量。

  • 局部作⽤域:在函数内定义的变量只能在该函数内部访问。

  • 全局作⽤域:在函数外定义的变量可以在整个代码中访问。

  • global关键字⽤于在函数内部访问全局变量。

  • nonlocal关键字⽤于在嵌套函数中访问外层函数的局部变量。

3、lambda 表达式

lambda表达式是⼀种创建匿名函数的⽅式。

 资源 >>>

4、常⽤内置函数

描述: Python提供了许多内置函数,这些函数随时可⽤,⽆需导⼊模块。

  • print():打印输出。

  • len():返回对象的⻓度或元素个数。

  • type():返回对象的类型。

  • range():⽣成⼀个数值序列。

  • str(), int(), float(): ⽤于类型转换。

  • input(): ⽤于从⽤户获取输⼊。

  • sum(): 计算序列中所有元素的总和。

  • max(), min(): 查找序列中的最⼤或最⼩值。

  • sorted(): 返回排序后的序列。

向对象编程 (OOP)

1、类和对象

1.1 类 (Class)

  • 类是创建对象的蓝图或模板。它为对象定义了特定的属性和⽅法。

  • 类是⽤来定义数据以及数据操作的⽅法的。你可以将类看作是构建对象的模具。

1.2 对象 (Object)

  • 对象是根据类定义创建的实例。每个对象都有特定的属性和⽅法。

  • 对象是类的实例化,具有类定义的所有特性。每个对象都可以有不同的属性值,使得每个对象都是独⼀⽆⼆的。

  • 对象的创建通常称为实例化,并且对象可以使⽤类中定义的⽅法。

2、三⼤特性

2.1 封装

 描述: 封装是OOP中将数据(属性)和操作数据的代码(⽅法)捆绑在⼀起的概念。这样做的⽬的是隐藏对象的内部状态,只通过公共接⼝暴露功能。

  • self ​: 在类的⽅法中,self代表类的实例⾃身。它是对当前对象的引⽤。

  • 属性: 类的变量,⽤于存储数据。

  • ⽅法: 类中定义的函数,⽤于定义对象的⾏为。

    • 类⽅法(Class Method): 使⽤@classmethod装饰器定义,接受类本身作为第⼀个参数(通常命名为cls)。

    • 实例⽅法(Instance Method): 类的普通⽅法,接受实例⾃身self作为第⼀个参数。

    • 静态⽅法(Static Method): 使⽤@staticmethod装饰器定义,不接受self或cls参数,类似普通函数但属于类的命名空间。

  • 访问控制: 控制外部对类内部属性和⽅法的访问权限。Python通过前置下划线实现(如单下划线 _ 和双下划线 __)。

2.2 继承

 描述: 继承允许⼀个类(⼦类)继承另⼀个类(⽗类)的属性和⽅法,从⽽实现代码重⽤。

  • 单继承: ⼦类只继承⼀个⽗类。

  • 多继承: ⼦类可以继承多个⽗类。Python⽀持多继承,允许定义继承多个⽗类的类。

2.3 多态

 描述: 多态是指不同类的对象对同⼀消息作出响应的能⼒,即相同的接⼝调⽤可以有不同的执⾏结果。

  • ⽅法重写(Method Overriding): ⼦类可以重写⽗类的⽅法,提供特定于⼦类的实现。在调⽤这个⽅法时,会使⽤⼦类的版本,⽽不是⽗类的。

3、运算符重载

 描述: 运算符重载允许为类的实例⾃定义Python内置操作符的⾏为。

  • 通过定义特殊⽅法(magic methods),类可以改变其实例的运算符⾏为。

  • 例如,通过重载__add__⽅法,可以定义两个类实例使⽤+运算符时的⾏为。

4、装饰器

 描述: 装饰器是⼀种设计模式,⽤于修改或增强函数或⽅法的⾏为,⽽不改变其代码。

  • 在Python中,装饰器是⼀种函数,它接受⼀个函数作为参数并返回⼀个新的函数。

  • 装饰器通过在函数定义之前使⽤@符号应⽤,例如@decorator_name。

  • 它们常⽤于⽇志记录、性能测试、事务处理、权限校验等。

  • 装饰器可以应⽤于任何可调⽤的对象,包括类和类的⽅法。

5、反射

 描述: 反射是指程序在运⾏时检查和修改其结构(如类或函数)的能⼒。

  • 在Python中,可以通过内置函数如getattr(), setattr(), hasattr(), 和delattr()实现反射,⽤于动态地访问或修改对象的属性。

  • type()和isinstance()等函数可以⽤于获取对象的类型信息。

  • 反射使得程序可以更加动态,例如根据条件动态调⽤⽅法或访问属性,但也可能使得代码难以理解和维护。

模块

 描述:模块是包含Python代码的⽂件。模块可以定义函数、类和变量,也可以包含可执⾏的代码。模块的使⽤是Python编程的基础之⼀,它提⾼了代码的可重⽤性和组织性。

1、导⼊模块

 描述: Python中导⼊模块通常使⽤import语句。

1.1 基本导⼊

  • 直接使⽤import语句,后⾯跟模块名。

  • 例如:import math。之后可以通过math.function_name的⽅式调⽤模块内的函数。

1.2 从模块导⼊特定项

  • 使⽤from … import …语法。

  • 例如:from math import sqrt。这样可以直接使⽤sqrt⽽⽆需math.sqrt。

1.3 导⼊模块并重命名

  • 使⽤import … as …语法。

  • 例如:import numpy as np。之后可以使⽤np来代替numpy。

1.4 导⼊模块的所有项

  • 使⽤from … import *语法。

  • 这会将模块中的所有项导⼊当前命名空间,但通常不推荐这样做,因为它可能导致命名冲突。

2、常⽤模块

  • math​ : 提供数学运算函数,如三⻆函数、对数函数等。

  • datetime​ : ⽤于处理⽇期和时间的模块。

  • os​ : 提供了许多与操作系统交互的功能。

  • sys ​: ⽤于访问与Python解释器紧密相关的变量和函数。

  • random​ : ⽤于⽣成随机数。

  • json​ : ⽤于读取和写⼊JSON格式数据。

  • re​ : 提供正则表达式⼯具。

 描述: 包(Package)是⼀种组织模块的⽅式,它们是包含模块的⽂件夹,并提供了⼀种层次结构,使得模块组织更加清晰。包的使⽤使得⼤型项⽬的代码管理变得更加容易。

1、导⼊包

 描述: 导⼊包的⽅法类似于导⼊模块,但它还涉及到包的层次结构。

1.1 直接导⼊包下的模块

  • 使⽤import语句指定包名和模块名。

  • 示例:import package.module。

1.2 从包中导⼊特定模块或函数

  • 使⽤from … import …语法。

  • 示例:from package import module 或 from package.module import function。

1.3 导⼊⼦包

  • 如果包中还包含⼦包,可以通过.来导⼊⼦包中的模块。

  • 示例:import package.subpackage.module。

2、⽣成包

 描述: 创建⼀个包涉及到创建⼀个包含模块和⼀个特殊⽂件init.py的⽂件夹。init.py可以为空,但它的存在告诉Python这个⽂件夹应该被视为⼀个Python包。

2.1 创建包⽬录

  • 创建⼀个⽂件夹,⽤于存放相关的模块。⽂件夹的名字就是包的名字。

2.2 添加模块

  • 在这个⽂件夹中创建Python⽂件(.py),每个⽂件都作为包的⼀个模块。

2.3 ​添加__init__.py文件

  • 在⽂件夹中创建⼀个名为__init__.py的⽂件。这个⽂件可以包含包的初始化代码,或者仅仅为空。

异常处理

1、捕获异常

在Python中,使⽤try和except语句来捕获异常。try块包含可能引发异常的代码,⽽except块包含在发⽣异常时要执⾏的代码。

2、try … except … else … finally 结构

try语句还可以包含else和finally块。else块中的代码在try块中的代码没有引发异常时执⾏,⽽finally块中的代码始终会在try块执⾏后执⾏,⽆论是否发⽣异常。

3、⾃定义异常

在Python中,你可以通过创建⾃定义异常类来定义⾃⼰的异常类型。⾃定义异常类通常继承⾃内置的Exception类。

⽂件操作

1、打开⽂件

要与⽂件进⾏交互,⾸先需要打开它。使⽤内置的 open() 函数,传递⽂件路径和打开模式。打开模式包括:

  • ‘r’:只读模式

  • ‘w’:写⼊模式(会覆盖已存在的⽂件)

  • ‘a’:追加模式(将内容添加到⽂件末尾)

  • ‘x’:独占创建模式(如果⽂件已存在,则失败)

  • ‘b’:⼆进制模式

2、读取⽂件内容

通过打开⽂件后,可以使⽤ read() ⽅法读取整个⽂件的内容。你还可以使⽤readline() ⽅法逐⾏读取,或者使⽤ readlines() ⽅法将内容按⾏读取并存储在列表中。

3、写⼊⽂件内容

使⽤ write() ⽅法可以向⽂件写⼊内容。如果⽂件不存在,使⽤ ‘w’ 模式将创建⼀个新⽂件。你还可以使⽤ writelines() ⽅法写⼊多⾏内容。

4、关闭⽂件

在完成⽂件操作后,务必使⽤ close() ⽅法关闭⽂件。这有助于释放系统资源。为了确保⽂件在任何情况下都会被关闭,可以使⽤ with 语句创建上下⽂管理器。

5分钟实现网站复刻:AI助力前端开发

thbcm阅读(313)

原标题:只需5分钟,水灵灵地实现网站复刻!

作为前端开发者,我们的日常工作中总是有各种各样的 UI 布局任务。从设计稿到代码实现,往往需要花费大量时间去调整布局、优化细节,这种重复性的工作不仅浪费时间资源,还无形中加重了我们的工作负荷,让人感到疲惫。‍‍‍

前段时间,我在 GitHub 上偶然发现了一个热门的开源项目 Screenshot-to-Code,它能够通过 AI 自动生成前端代码,并且支持生成多种不同技术栈的代码,如 HTML + TailwindReact + Tailwind 等等。

想到可以借助 AI 来帮助我开发复杂的页面,我立刻决定尝试一下。

环境搭建

首先,我们可以将项目 Clone 到本地并用 IDE 打开,准备本地部署启动。然而,面对冗长的项目 Readme 文档,直接阅读可能会带来很重的视觉负担。

这个时候我想到,我刚好有安装豆包MarsCode 编程助手插件,决定尝试下能否让 AI 告诉我该如何进行部署。在向 AI 助手提问之后,它立刻按照步骤指引我,需要先进入后端目录执行哪些命令,再进入前端目录执行哪些命令。

按照它给到的命令执行后,我成功地启动了项目:

但项目只支持 GPT 和 Claude 的 API,这些 API 都要收费,我只想用免费的 Gemini 模型,要怎么修改呢?

使用编程助手增加 Gemini 模型

首先,我找到模型配置的代码 model.ts,当我在注释上写了需要增加 Gemini 模型后,编程助手立刻就帮我生成了代码,我只需要按下 TAB 键采纳即可。

接着在 backend/.envbackend/config.py 增加 Gemini 的 API KEY:

#.env增加
keyGEMINI_API_KEY=xxxxxx


#config.py增加获取key
GEMINI_API_KEY = os.environ.get("GEMINI_API_KEY", None)

然后可以在Llm.py 中增加 Gemini 模型以及调用 Gemini 的代码。这时我发现有一个 stream_claude_response_native 方法,看起来是在调用 Claude,我们让豆包MarsCode 编程助手解释一下:

通过豆包MarsCode 编程助手的解释,确认是在调用 Claude。那我们需要增加调用 Gemini 的代码。编写代码过程中,通过编程助手提供的代码补全功能,效率获得了显著的提升。

class Llm(Enum):
    GPT_4_VISION = "gpt-4-vision-preview"
    GPT_4_TURBO_2024_04_09 = "gpt-4-turbo-2024-04-09"
    GPT_4O_2024_05_13 = "gpt-4o-2024-05-13"
    CLAUDE_3_SONNET = "claude-3-sonnet-20240229"
    CLAUDE_3_OPUS = "claude-3-opus-20240229"
    CLAUDE_3_HAIKU = "claude-3-haiku-20240307"
    CLAUDE_3_5_SONNET_2024_06_20 = "claude-3-5-sonnet-20240620"
    //新增gemini
    GEMINI_1_5_PRO_LATEST = "gemini-1.5-pro-latest"

    

    
async def stream_gemini_response(
    messages: List[ChatCompletionMessageParam],
    api_key: str,
    callback: Callable[[str], Awaitable[None]],
) -> str:
  genai.configure(api_key=api_key)

  
  generation_config = genai.GenerationConfig(
    temperature = 0.0
  )
  model = genai.GenerativeModel(
    model_name = "gemini-1.5-pro-latest",
    generation_config = generation_config
  )
  contents = parse_openai_to_gemini_prompt(messages);

  
  response = model.generate_content(
    contents = contents,
    #Support streaming
    stream = True,
   )

   
  for chunk in response:
    content = chunk.text or ""
    await callback(content)


  if not response:
    raise Exception("No HTML response found in AI response")
  else:
    return response.text;


def parse_openai_to_gemini_prompt(prompts):
    messages = []
    for prompt in prompts:
        message = {}
        message['role'] = prompt['role']
        if prompt['role'] == 'system':
            message['role'] = 'user'
        if prompt['role'] == 'assistant':
            message['role'] = 'model'
        message['parts'] = []
        content = prompt['content']
        if isinstance(content, list):
            for content in prompt['content']:
                part = {}
                if content['type'] == 'image_url':
                    base64 = content['image_url']['url']
                    part['inline_data'] = {
                        'data': base64.split(",")[1],
                        'mime_type': base64.split(";")[0].split(":")[1]
                    }
                elif content['type'] == 'text':
                    part['text'] = content['text']
                message['parts'].append(part)
        else:
            message['parts'] = [content]
        messages.append(message)
    return messages

写完代码之后,我们可以使用【注释代码】功能给代码加上注释,让代码更加规范:

之后,我们还需要在 generate_code 增加调用前面写的 Gemini 方法:



if validated_input_mode == "video":
                if not anthropic_api_key:
                    await throw_error(
                        "Video only works with Anthropic models. No Anthropic API key found. Please add the environment variable ANTHROPIC_API_KEY to backend/.env or in the settings dialog"
                    )
                    raise Exception("No Anthropic key")


                completion = await stream_claude_response_native(
                    system_prompt=VIDEO_PROMPT,
                    messages=prompt_messages,  # type: ignore
                    api_key=anthropic_api_key,
                    callback=lambda x: process_chunk(x),
                    model=Llm.CLAUDE_3_OPUS,
                    include_thinking=True,
                )
                exact_llm_version = Llm.CLAUDE_3_OPUS
            elif (
                code_generation_model == Llm.CLAUDE_3_SONNET
                or code_generation_model == Llm.CLAUDE_3_5_SONNET_2024_06_20
            ):
                if not anthropic_api_key:
                    await throw_error(
                        "No Anthropic API key found. Please add the environment variable ANTHROPIC_API_KEY to backend/.env or in the settings dialog"
                    )
                    raise Exception("No Anthropic key")


                completion = await stream_claude_response(
                    prompt_messages,  # type: ignore
                    api_key=anthropic_api_key,
                    callback=lambda x: process_chunk(x),
                    model=code_generation_model,
                )
                exact_llm_version = code_generation_model
            # 增加调用gemini
            elif (           
                code_generation_model == Llm.GEMINI_1_5_PRO_LATEST
            ):
                if not GEMINI_API_KEY:
                    await throw_error(
                        "No GEMINI API key found. Please add the environment variable ANTHROPIC_API_KEY to backend/.env or in the settings dialog"
                    )
                    raise Exception("No GEMINI key")


                completion = await stream_gemini_response(
                    prompt_messages,  # type: ignore
                    api_key=GEMINI_API_KEY,
                    callback=lambda x: process_chunk(x),
                )
                exact_llm_version = code_generation_model

            
            else:
                completion = await stream_openai_response(
                    prompt_messages,  # type: ignore
                    api_key=openai_api_key,
                    base_url=openai_base_url,
                    callback=lambda x: process_chunk(x),
                    model=code_generation_model,
                )
                exact_llm_version = code_generation_model

最后安装 Gemini SDK:

cd backend
poetry add google-generativeai

效果呈现

改完所有代码再启动项目后,就可以看到已经有 Gemini 模型啦,让我们来试试效果:‍

我们上传豆包MarsCode 官网截图,点击生成后,右侧即为 AI 生成的效果,可以看到还原度还不错。

由于自动生成的字体没有渐变色的效果,我们可以通过给 AI 提要求,增加渐变色效果,可以明显看到,在渐变色字体的设计下页面的视觉效果更加高级了!‍

豆包MarsCode 编程助手的帮助下,我们在项目上增加了免费了 Gemini 模型。有了它,项目开发更加高效便捷了,官网复刻,轻松拿下!

大家赶快来尝试一下吧!

编程狮推荐:高效解决时间戳转换难题的在线工具

thbcm阅读(305)

时间戳的转换是在编程开发中一项常见且重要的任务。无论是处理日志记录、数据分析还是与时间相关的业务逻辑,准确地进行时间戳转换都至关重要。今天,编程狮小编要给大家种草一款超实用的时间戳转换工具,让你的编程开发更加顺畅高效。

一、什么是时间戳?

时间戳(Unix timestamp),又称 Unix 时间或 POSIX 时间,是一种表示时间的方式。它定义为从格林威治时间 1970 年 01 月 01 日 00 时 00 分 00 秒起至现在的总秒数。这种时间表示方式不仅在 Unix 系统、类 Unix 系统中广泛应用,也被许多其他操作系统所采用。

二、时间戳转换工具的必要性

在实际编程开发中,我们经常需要在不同的时间格式之间进行转换。例如,将时间戳转换为可读的日期时间格式,以便于记录和展示给用户;或者将用户输入的日期时间转换为时间戳,方便在程序中进行计算和存储。手动进行这些转换不仅繁琐,而且容易出错,尤其是在处理复杂的时间计算和跨时区问题时。而一款优秀的时间戳转换工具可以帮助我们快速、准确地完成这些任务,节省大量的时间和精力。

三、在线时间戳转换工具的优势

  • 实时转换与操作简便 工具界面简洁直观,操作非常简单。它提供了两种转换方向:Unix 时间戳转换为北京时间,以及北京时间转换为 Unix 时间戳。你只需在相应的输入框中输入时间戳或日期时间,点击转换按钮,即可立即得到转换结果。例如,当你输入一个 Unix 时间戳,如 1734678682,工具会迅速将其转换为北京时间 “2024/12/20 15:11:22”,让你一目了然。

  • 多语言代码示例助力编程 对于程序员来说,在不同编程语言中实现时间戳转换是日常工作中经常遇到的问题。这款工具贴心地为我们提供了多种常见编程语言(如 JavaJavaScriptPythonPHP 等)的代码示例,告诉我们如何获取当前时间戳、如何在时间戳和普通时间之间进行转换。这对于新手程序员来说是非常宝贵的学习资源,同时也为有经验的开发者提供了快速参考,帮助他们在不同项目中高效地处理时间戳相关操作。比如,在 Java 中获取当前时间戳可以使用 currentTimeMillis() 方法,将时间戳转换为普通时间可以使用 SimpleDateFormat 类进行格式化。这些代码示例清晰明了,让你无需在各种文档中查找,即可轻松将时间戳转换功能集成到自己的程序中。

四、如何使用时间戳工具?

  1. 访问工具页面:

首先,打开浏览器,访问W3CschoolUnix时间戳转换工具页面。

  1. 转换Unix时间戳为北京时间: 输入Unix时间戳:在页面的输入框中输入你想要转换的Unix时间戳。例如,输入1734679858查看结果:输入后,页面会自动将Unix时间戳转换为对应的北京时间,并显示出来。
  1. 转换北京时间为Unix时间戳: 输入北京时间:在页面的相应输入框中输入你想要转换的北京时间。通常需要按照特定的格式输入,如2025年01月29日00时00分00秒查看结果:输入后,页面会自动将北京时间转换为对应的Unix时间戳,并显示出来。
  1. 复制结果: 转换完成后,你可以直接复制显示的结果,用于你的编程项目或其他需要时间戳的场景。
  1. 刷新页面获取当前时间戳: 如果你需要获取当前的Unix时间戳,只需刷新页面,页面会自动显示当前的Unix时间戳。 这个工具的界面简洁直观,操作步骤简单,即使是初学者也能快速上手。无论是进行时间戳的转换,还是学习不同编程语言中如何获取和转换Unix时间戳,这个工具都能提供极大的帮助。

五、总结

这款 Unix 时间戳转换工具功能强大、使用便捷,无论是对于编程初学者还是经验丰富的开发者,都是一个不可或缺的得力助手。它能够帮助我们轻松应对各种时间戳转换需求,提高编程效率,减少错误。如果你在编程过程中经常需要处理时间相关的操作,不妨试试这款工具,相信它一定会给你带来意想不到的便利。快来体验吧,让时间戳转换不再成为你的困扰!戳>>>Unix时间戳(timestamp)转换工具

立即访问编程狮在线工具库,获取更多开发人员在线工具。

一文教会你!用豆包MarsCode开发「评论情感分析机器人」

thbcm阅读(308)

“您好,想问问你们卖的这商品是什么啊?”
“您好亲亲,我们卖的是最新款手机壳!”
“不是,我是想问你们卖的这都是什么啊???这么难看。”

本文!重磅!教大家不花一分钱学会用豆包MarsCode 搭建「商品评论情感分析机器人」!快速了解消费者对商品的真实看法和情感倾向。

Node.js 推出,JavaScript 跃升为一门全栈开发语言。开发者可以用同一种语言构建完整的 Web 应用,从后端服务到用户界面,甚至最新的 AI 应用,JavaScript 都能胜任。今天就让我们一起学习基于 JavaScript 开发的「商品评论情感分析机器人」!

工欲善其事 必先利其器

拥有一个熟悉的开发环境至关重要。于我个人而言,平日里最为青睐的当属 VSCode 这款轻量级代码编辑器,它页面简洁,安装过程便捷,能够同时兼容 Windows 和 Mac 系统。并且在 VSCode 中存有众多实用插件可供安装,比如豆包MarsCode(官方下载地址:https://www.marscode.cn/?utm_source=advertising&utm_medium=w3cschool.cn_ug_cpa&utm_term=hw_marscode_bcs&utm_content=home )。 豆包MarsCode安装教程:https://www.w3cschool.cn/marscode/marscode-quickstart.html

豆包MarsCode 具备智能代码生成功能,能猜测到我想要写的代码并主动提示,还能根据我的需求生成代码,帮我剖析 bug 产生的原因,让工作效率翻倍。

对于不想配置环境的小伙伴们,还可以使用免费的豆包MarsCode IDE,开箱即用的 Node.js 环境很适合新手小白。

申请免费的豆包 API

基于大模型的应用必然需要访问大模型的 API 服务,虽然当前 OpenAI 的 API 越来越难以获取,但令人惊喜的是,国内各大厂的模型能力已逐步提升至相对成熟的水平,而且还均拥有免费的使用额度!比如豆包大模型,每个规格的模型都有 50 万免费 tokens 的额度,接口使用方式也与 OpenAI 完全相同! 在火山方舟中注册账号,创建 API Key 并将想用的模型部署为在线服务,平台就可以直接为我们提供模型的调用代码。

免费调用额度

添加API Key

配置本地环境

火山方舟平台为我们提供了模型调用代码,但想跑起来这段代码还需要先在本地配置好 Node.js 环境。

我们可以在豆包MarsCode 中直接询问 AI 助手:“ Mac 电脑如何安装 Node.js 环境”,按照 AI 助手给我们的指示选择一种方式安装,在终端中执行 node -vnpm -v,如果能够正常输出版本号,则说明我们成功安装了 Node.js。

根据火山方舟上的指引,我们还需要手动安装 OpenAI 软件包,在终端中执行 npm install openai 之后就完成了本地环境的配置。

在本地跑通模型调用代码

选择一个适合的本地路径执行 npm init 即可交互式地进行项目初始化,命令行会提示我们输入一些关于项目的元数据信息,如项目名称版本描述等。我们可以根据需要填写这些信息,或直接按「回车键」接受默认值。

询问豆包MarsCode AI 助手可以了解更多初始化项目的详细步骤。

将火山方舟平台提供的代码复制到本地开发环境内,我们可以在豆包MarsCode 中针对不理解的代码向 AI 助手进行提问,例如示例代码中的 apiKey 需要从环境变量中获取,我们可以询问跟 JS 语法相关的知识,也可以询问在不同操作系统中配置环境变量的方法。

按照指引,在环境变量中配置 ARK_API_KEY 之后,我们就可以尝试执行测试代码。

竟然遇到报错了!命令行中给了我们一些提示,在 package.json 中添加”type“: “module” 。

我们可以向豆包MarsCode AI 助手询问错误原因,它会给我们更具体的解决方案,我们也能根据 AI 助手的回复了解 JS 的执行原理。

修改代码之后再次执行就能成功获取豆包模型返回的结果了。

开发情感分析相关代码

要与豆包 API 对话,则需要在消息数组中提供一个或多个消息,示例代码中涉及到了 systemuser 两种角色,这时我们可以向 AI 助手询问:“system 和 user 有什么区别”。

若想开发情感分析的应用,通过提示词工程的方式即可实现,在 system prompt 中填写如“你是一个用户评论情感分析专家”的身份描述,在用户提示中可以填写少量的示例,这些示例能够向人工智能展示您期望交互以何种方式展开,从而指导人工智能对类似的提示做出响应。

如果想把用户输入动态注入到 prompt 中则需要用到模板字符串,相关的语法知识也可以从跟 AI 的对话中获得。

具体的代码如下所示:

let few_shot_prompt = `
      以下为几个评论判断实例,请依据示例对新输入内容的情感态度进行判断
      评论:我非常喜欢这个产品,它非常实用。
      情感:正面。
      评论:这个产品非常糟糕,我无法使用它。
      情感:负面。
    `;
let message = [
  {
    role: "system",
    content:
      "你是一个用户评论情感分析专家,请根据用户的评论判断评论的情感是正面还是负面并直接输出,不输出其他内容。",
  },
  {
    role: "user",
    content: `${few_shot_prompt}\n 评论:${comment}\n 情感:\n`,
  },
];

使用上述代码替换掉示例代码中的 messages 就能够进行用户评论的情感判断了,只要在代码中把用户评论赋值给 comment 就能对其情感状态进行判断。

需求当然不止这么简单。我们希望能从命令行中获得用户的评论数据并传给豆包。有了豆包MarsCode AI 之后,仅需 10 秒钟就能完成代码改造!如下图所示,只要我能把需求准确的描述给 AI 助手,他就能很快地把代码提供给我,直接执行也没有问题。

更进一步,倘若我们期望程序可以反复处理用户输入,而非仅调用一次便退出程序,同样能将此需求告知 AI 助手,它会给出满足需求的新代码,从而最终打造出能够多次处理产品评论情感态度的小应用。

完整代码呈现

在豆包MarsCode 的帮助下,即便是从未涉足过 JavaScript 应用开发领域的新手,也可以开发出实用的 AI 工具。豆包MarsCode 的 AI 问答、错误修复以及代码补全等功能,在开发过程中都能提供非常实用的帮助。完整的代码如下:



import OpenAI from "openai";
import readline from "readline";


const openai = new OpenAI({
  apiKey: process.env.ARK_API_KEY,
  baseURL: "https://ark.cn-beijing.volces.com/api/v3",
});


async function main() {


  let few_shot_prompt = `
    以下为几个评论判断实例,请依据示例对新输入内容的情感态度进行判断
    评论:我非常喜欢这个产品,它非常实用。
    情感:正面。
    评论:这个产品非常糟糕,我无法使用它。
    情感:负面。
  `;


  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });


  function askQuestion() {
    rl.question("请输入你的评论(或输入 '退出' 结束程序):", async (answer) => {
      if (answer.toLowerCase() === '退出') {
        rl.close();
        return;
      }


      let message = [
        {
          role: "system",
          content:
            "你是一个用户评论情感分析专家,请根据用户的评论判断评论的情感是正面还是负面并直接输出,不输出其他内容。",
        },
        {
          role: "user",
          content: `${few_shot_prompt}\n 评论:${answer}\n 情感:\n`,
        },
      ];


      try {
        const completion = await openai.chat.completions.create({
          messages: message,
          model: "ep-20240809163655-bp86r",
        });


        console.log(completion.choices[0]?.message?.content);
      } catch (error) {
        console.error("发生错误:", error);
      }


      // 继续询问
      askQuestion();
    });
  }


  askQuestion();
}


main();

无需一分钱开发评论情感分析机器人,感兴趣的大家点击「豆包MarsCode」即可跳转豆包MarsCode 尝试开发哦!

联系我们