让AI成为程序员助手-AI基础系列文章第21篇
  rZPtsnyq762X 2023年11月02日 75 0

您的关注是对我最大的支持👇
        您可以使用ChatGPT进行调试、代码生成、重新格式化、添加注释等操作。它可以处理超过40种编程语言的代码。

让AI成为程序员助手-AI基础系列文章第21篇_AIGC

代码生成要指导ChatGPT生成代码,只需像这样简单操作:提示词:

扮演初级Python程序员的角色。请编写代码,从3个包含6个项目的数组中生成Mad Libs 游戏:介词、动词和名词,其中名词还要用作直接宾语。编写完代码后,请执行它。

输出将类似于:

import random

prepositions = ['at', 'in', 'on', 'with', 'under', 'over']
verbs = ['run', 'jump', 'dance', 'sing', 'laugh', 'cry']
nouns = ['cat', 'dog', 'tree', 'flower', 'book', 'computer']

preposition = random.choice(prepositions)
verb = random.choice(verbs)
noun = random.choice(nouns)

madlib = f"I {verb} {preposition} the {noun}."

print(madlib)

注释和格式化代码

        您可以要求ChatGPT向您的代码添加注释,并对其进行格式化以增强可读性。在您的提示指令之后,请添加三个井号(###),然后粘贴您希望它清理的代码:

请对这段Python代码添加行注释,并对其进行格式化以增强可读性:

import math
amplitude = 30
frequency = 2
num_points = 50
for i in range(num_points):
    y
 = 
int
(round(amplitude * math.sin(
2
 * math.pi * frequency * i / num_points)))
    print(' ' * (amplitude + y) + '*')
###

输出结果将类似于以下内容:

# Import the math module
import math

# Set the amplitude, frequency, and number of points in the wave
amplitude = 30
frequency = 2
num_points = 50

# Loop over each point in the wave
for i in range(num_points):
    # Calculate the y value of the wave using the sine function from the math module
    y = int(round(amplitude * math.sin(2 * math.pi * frequency * i / num_points)))
    
    # Print a space for padding, followed by an asterisk at the appropriate position on the wave
    print(' ' * (amplitude + y) + '*')

调试 

       ChatGPT不仅可以检测代码中的语法错误,还可以找出代码执行时可能出现的逻辑错误。以下是一个Python脚本的示例,由于第3行的逻辑错误,最终会在第4行导致除以零的错误。尝试使用以下简单的提示来查找和修复错误:

请调试这段Python代码:

pizza_cost = 100
partygoers = 10
while partygoers = 0:
   cost_per_person = pizza_cost / partygoers
   print("每人费用为 $", "{:.2f}".format(cost_per_person))
   partygoers -= 2

输出将包括已更正的while循环,已更改以确保分母变量保持正数:

pizza_cost = 100
partygoers = 10
while partygoers > 0:
   cost_per_person = pizza_cost / partygoers
   print("每人费用为 $", "{:.2f}".format(cost_per_person))
   partygoers -= 2

        对于更复杂的错误,您可能需要提供更多的详细信息:错误消息、环境变量、包含的库或输入变化。

代码优化 

       如果您的脚本执行时间过长,ChatGPT可以帮助您进行优化。以下是一个优化低效查找素数的脚本的示例:

请扮演一位非常资深的Python开发者。请优化这个脚本:

for num in range(1, 101):
    if num > 1:
        for i in range(2, num):
            if (num % i) == 0:
                break
        else:
            print(num)

输出可能是一个使用埃拉托斯特尼筛法(Sieve of Eratosthenes)查找素数的脚本:

numbers = list(range(2, 101))
for i in numbers:
    for j in range(i * 2, 101, i):
        if j in numbers:
            numbers.remove(j)
print(numbers)

        请注意,我们要求机器人"扮演一位资深开发者"来优化脚本。您还可以规定它具有某一领域的专业知识(例如,排序算法)或具有多少年的经验。或者,如果您有一个看起来过于复杂的脚本,您可以要求ChatGPT以"一位非常初级的开发者"的身份编写该脚本。

编程语言之间的转换

        ChatGPT提供的一个非常有用的功能是能够将程序从一种语言转换为另一种语言。一个典型的用途可能是将较老语言中的代码升级到更现代的语言,例如:

扮演一位具有COBOL和Python知识的经验丰富的开发者。请将此COBOL程序转换为Python:

IDENTIFICATION DIVISION.
PROGRAM-ID. CALCULATE-SS-TAX.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 SALARY PIC 9(7)V99.
01 SS-TAX PIC 9(7)V99.

PROCEDURE DIVISION.
DISPLAY "Enter employee's salary: ".
ACCEPT SALARY.

COMPUTE SS-TAX = SALARY * 0.062.

DISPLAY "Social Security tax is: $", SS-TAX.
STOP RUN.

输出可能是类似于以下内容的Python代码:

salary = float(input("Enter employee's salary: "))
ss_tax = salary * 0.062

print("Social Security tax is: $", round(ss_tax, 2))

处理多个文件和重构代码库 

       如果您希望ChatGPT评估多个文件,只需提供文件名并粘贴每个文件的代码即可:

我的Python脚本使用了两个位于不同目录中的文件,如下所示。请显示执行conversation.py 后的输出:

BEGIN FILE 1: ./phrases/coming_and_going.py
def hi(name):
   print(f"Hello, {name}!")
def bye(name):
   print(f"Goodbye, {name}!")

BEGIN FILE 2: ./conversation.py
from phrases.coming_and_going import hi, bye
hi("John")
bye("John")

AI输出结果:

Hello, John!
Goodbye, John!

        使用这种技术,您可以在单个提示中将多个文件提交给ChatGPT,并要求其重构代码。或者,您可以要求它"记住"每个文件,然后在以后的提示中执行它们。

模拟数据库服务器

        ChatGPT不仅可以处理代码,还可以模拟服务器环境,如数据库、Web服务器和电子邮件服务器。考虑以下提示:

扮演Microsoft SQL Server的角色。创建一个名为"politics"的数据库,里面包含一个名为"politicians"的表。在表中填入来自不同时代(1900-2000)世界各地的著名政治家的50行数据。添加列以存储他们的全名、国家、出生日期和(如果适用)去世日期。创建一个查看最长寿的前3位政治家的视图。创建并执行一个Transact-SQL命令,输出该视图的内容。

输出可能如下:

-- 创建"politics"数据库
CREATE DATABASE politics;
GO

-- 使用"politics"数据库
USE politics;
GO

-- 创建"politicians"表
CREATE TABLE politicians (
    id INT PRIMARY KEY,
    full_name VARCHAR(50),
    country VARCHAR(50),
    date_of_birth DATE,
    date_of_death DATE
);
-- 等等。

然后,您可以添加列、索引等:

为politicians表添加一个副手列,并为每一行更新它。

输出可能如下:

ALTER TABLE politicians ADD second_in_command VARCHAR(255);

UPDATE politicians
SET second_in_command = 
    CASE name
        WHEN 'Winston Churchill' THEN 'Clement Attlee'
        WHEN 'Franklin D. Roosevelt' THEN 'Harry S. Truman'
        -- 为每位政治家添加更多的情况
        ELSE NULL
    END;

模拟Web服务器

        ChatGPT可以模拟许多其他服务器和API。以下是一个提示的示例,模拟了Apache服务器对特定浏览器请求头的响应:

扮演Apache Web服务器的角色。您将如何响应这些HTTP头?
GET /example HTTP/1.1
Host: www.example.com

输出可能如下:

HTTP/1.1 200 OK
Date: [current date and time]
Server: Apache/2.4.41 (Ubuntu)
Last-Modified: [date and time of last modification of the requested resource]
Content-Type: [MIME type of the requested resource, e.g. text/html]

以下是ChatGPT可以模拟的服务器和API类型的一些示例:

让AI成为程序员助手-AI基础系列文章第21篇_AIGC_02

模拟命令行

        由于Linux中的Shell(或Windows PowerShell)也是一种编程语言,您可以使用ChatGPT与之互动,并为您的文件系统构建一个环境:

扮演Debian Linux命令行壳的角色。请以尽可能简洁的方式响应我的命令,不要提供过多解释。我的第一个命令是:ls -l

输出可能如下:

-rw-r--r--  1 user  group   2048 Mar  3 14:23 file1.txt
drwxr-xr-x  2 user  group   4096 Feb 28 09:12 directory1
-rwx------  1 user  group  16384 Feb 25 19:41 executable1

尝试使用其他命令进行实验:

>touch greeting.txt  
>echo "hello" > greeting.txt  
>ls -l

最终输出可能如下:

-rw-r--r--  1 user  group   2048 Mar  3 14:23 file1.txt
drwxr-xr-x  2 user  group   4096 Feb 28 09:12 directory1
-rwx------  1 user  group  16384 Feb 25 19:41 executable1
-rw-r--r--  1 user  group      6 Mar  4 16:15 greeting.txt

明日预告《让AI辅助您做数字营销-AI基础系列文章第22篇》



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
rZPtsnyq762X