1. 程式人生 > >Python3 實現 石頭、剪刀、布 猜拳小遊戲

Python3 實現 石頭、剪刀、布 猜拳小遊戲

Python基礎語法

目標

實現一個人與計算機玩猜拳——石頭剪刀布的小遊戲,學會Python的迴圈控制語句和條件判斷語句。

思考一:

假如把石頭、剪刀、布分別用數字0、1、2表示。那麼如何判定誰勝誰負呢?

user(人) computer(計算機) 判定結果
0(石頭) 0(石頭) 平局
0(石頭) 1(剪刀) 人獲勝
0(石頭) 2(布) 計算機獲勝
1(剪刀) 0(石頭) 計算機獲勝
1(剪刀) 1(剪刀) 平局
1(剪刀) 2(布) 人獲勝
2(布) 0(石頭) 人獲勝
2(布) 1(剪刀) 計算機獲勝
2(布) 2(布) 平局

那麼這樣的虛擬碼實現如下:

if(user == 0 and computer == 0):
	print
("平局") elif(user == 0 and computer == 1): print("人獲勝") elif(user == 0 and computer == 2): print("計算機獲勝") elif(user == 1 and computer == 0): print("計算機獲勝") elif(user == 1 and computer == 1): print("平局") elif(user == 1 and computer == 2): print("人獲勝") elif(user == 2 and computer == 0): print("人獲勝") elif
(user == 2 and computer == 1): print("計算機獲勝") elif(user == 2 and computer == 2): print("平局")

這樣的程式碼不用我說、大家也覺得這個程式碼看起來很繁雜對吧。

找規律

雖然是一個簡單的石頭剪刀布小遊戲,其實背後也有很大的演算法思想、可以找出很多的規律。

  • 如果變數user和computer相等就是平局
  • 如果用 (user+1) 除以 3 得到的餘數與computer相等就是user(人)獲得勝利
  • 其餘情況都是計算機獲勝
import random

# 初始化表示手勢的變數
gesture = ['石頭' , '剪刀', '布']
wins = 0
print("*********************")
print("石頭剪刀布遊戲\nVer 1.0.0 by YuZhou_1su\n")

# 進行5輪遊戲
for i in range(5):
    # 輸入玩家的手勢
    print("*********************")
    print("0:石頭 1:剪刀 2:布")
    print("*********************")
    user = int(input("請輸入你想出的序號:\n"))
    if(user >= 0 and user <= 2):
        computer = random.randint(0, 2)
        print("玩家: {0}, 計算機: {1}".format(gesture[user], gesture[computer]))
        if user == computer:
            print("...平局! ")
        elif computer == (user + 1) % 3:
            print("...玩家獲勝! ")
            wins = wins + 1
        else:
            print("...計算機獲勝! ")
    else:
        print("***你輸入的序號有錯、請重新輸入!***")

print("玩家獲勝次數: %d " % wins)

總結

我們從此可以看到找到規律後的程式碼短小簡潔,程式的執行速度也會隨之提升。讓我們慢慢的學起來,規律無處不在…