Python bug修复器 - ChatGPT应用实例
有很多种方式来构建用于检查bug的提示。在这里,我们添加了一个注释,暗示源代码有bug,然后要求codex生成修复后的代码。
提示
##### 修复以下函数中的bug
### 有Bug的Python代码
import Random
a = random.randint(1,12)
b = random.randint(1,12)
for i in range(10):
question = "What is "+a+" x "+b+"? "
answer = input(question)
if answer = a*b
print (Well done!)
else:
print("No.")
### 修复后的Python代码
示例回应
import random
a = random.randint(1,12)
b = random.randint(1,12)
for i in range(10):
question = "What is "+str(a)+" x "+str(b)+"? "
answer = int(input(question))
if answer == a*b:
print ("Well done!")
else:
print("No.")
2023年7月20日更新:
在源代码中找出并修复错误。
提示
系统
你将获得一段Python代码,并且你的任务是找出并修复其中的错误。用户
```python
import Random
a = random.randint(1,12)
b = random.randint(1,12)
for i in range(10):
question = "What is "+a+" x "+b+"? "
answer = input(question)
if answer = a*b
print (Well done!)
else:
print("No.")
```
样例回答
提供的代码中有几个错误:
1. 导入语句不正确。Python区分大小写,所以应该把"Random"改为"random"。
2. 变量`a`和`b`在循环外定义,所以它们在每次迭代中不会改变。如果你想生成不同的问题,它们应该在循环内部定义。
3. 在问题字符串中,`a`和`b`是整数,所以你需要使用`str()`函数将它们转换为字符串再进行连接。
4. 在if语句中,你使用了单等号`=`,它是一个赋值运算符。在比较时,应该使用双等号`==`。
5. print语句中的"Well done!"没有用引号括起来。在Python中,字符串必须用引号括起来。
6. 用户输入是一个字符串,所以在与`a`和`b`的乘积进行比较之前,你需要使用`int()`函数将其转换为整数。以下是修正后的代码:
```python
import random
for i in range(10):
a = random.randint(1,12)
b = random.randint(1,12)
question = "What is "+ str(a) +" x "+ str(b) +"? "
answer = int(input(question))
if answer == a*b:
print ("Well done!")
else:
print("No.")
```
API请求
{
"model": "gpt-4",
"messages": [
{
"role": "system",
"content": "You will be provided with a piece of Python code, and your task is to find and fix bugs in it."
},
{
"role": "user",
"content": "import Random\na = random.randint(1,12)\nb = random.randint(1,12)\nfor i in range(10):\n question = \"What is \"+a+\" x \"+b+\"? \"\n answer = input(question)\n if answer = a*b\n print (Well done!)\n else:\n print(\"No.\")"
}
],
"temperature": 0,
"max_tokens": 1024
}