有很多種方式來構建用于檢查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
}
评论1
GPT-4還是更狠!
新給出的例子是調用的GPT-4模型,找出了GPT-3.5或者以前版本沒有找出的錯誤,并一條一條都清晰列出了問題👍