2023年7月10日 星期一

用Python開發XAXB小遊戲(ChatGPT版)


ChatGPT可以協助我們來發展程式,以這一篇文章"用Python開發XAXB小遊戲"為先備知識,可以看出ChatGPT的程式功力很棒!

程式碼如:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import random
x = random.sample('1234567890', 4)
print("遊戲開始!猜一個由0到9之間不重複的4位數字。")
play = True
while play:
    y = input("輸入4個不同數字:")
    if len(y) != 4 or not y.isdigit():
        print("請輸入有效的4位數字!")
        continue
    a = sum(x[i] == y[i] for i in range(4))
    b = sum(x.count(digit) for digit in y) - a
    print(a, "A", b, "B")
    if a == 4:
        print("恭喜你,猜對了!答案是", ''.join(x))
        play = False

程式解說:
這段程式碼實現了一個猜數字遊戲。遊戲開始時,程式會隨機生成一個由0到9之間不重複的4位數字,存儲在變數x中。然後,程式進入主要的遊戲迴圈,直到使用者猜對答案為止。
在每次迴圈中,使用者需要輸入一個由0到9之間不重複的4位數字作為猜測。程式會檢查輸入是否有效,如果不是有效的4位數字,會提示使用者重新輸入。
然後,程式比對使用者的猜測與答案,計算正確的數字和位置都猜對的數量(a)和正確的數字但位置不對的數量(b),並顯示給使用者。
如果使用者猜對了答案(a為4),程式會顯示答案和恭喜的訊息,並結束遊戲。
你可以複製這段程式碼到Python環境中執行,體驗完整的猜數字遊戲。

夠Python風格的程式碼:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import random

def generate_code():
    return random.sample('1234567890', 4)

def validate_input(guess):
    if len(guess) != 4 or not guess.isdigit():
        print("請輸入有效的4位數字!")
        return False
    return True

def calculate_score(code, guess):
    a = sum(code[i] == guess[i] for i in range(4))
    b = sum(code.count(digit) for digit in guess) - a
    return a, b

def play_game():
    code = generate_code()
    print("遊戲開始!猜一個由0到9之間不重複的4位數字。")
    
    play = True
    while play:
        guess = input("輸入4個不同數字:")
        if not validate_input(guess):
            continue
        
        a, b = calculate_score(code, guess)
        print(a, "A", b, "B")
        
        if a == 4:
            print("恭喜你,猜對了!答案是", ''.join(code))
            play = False

play_game()

程式解說:
這個重寫版本更符合"Pythonic"風格的特點,包含了幾個改進的方面:使用函數將程式碼模組化,提高了代碼的可讀性和可維護性。
使用適當的函數名稱和變數名稱,使程式碼更易於理解。
使用join()方法將列表轉換為字串,取代了原來的''.join()。
使用True和False來控制遊戲迴圈,避免使用額外的play變數。

這樣的重寫版本在功能上等同於之前的版本,但更符合Python的最佳實踐和風格指南。你可以複製這段程式碼到Python環境中執行,體驗這個更符合"Pythonic"風格的猜數字遊戲。

沒有留言:

張貼留言