Python編寫石頭剪刀布小遊戲

3.1 問題

編寫game.py腳本,實現以下目標:

  1. 計算機隨機出拳
  2. 玩家自己決定如何出拳
  3. 代碼儘量簡化

3.2 方案

引用random模塊生成0-2的隨機數,提示並獲取用戶的整數輸入值,應用if擴展語句對隨機數與輸入值進行對比判斷,滿足指定條件,輸出結果

爲簡化代碼,玩家獲勝條件中用and和or兩個邏輯運算符進行多個條件內容的判斷,用括號來區分運算優先級,所以用戶獲勝條件爲以下3項中任意一項:

1.用戶輸入剪刀並且隨機數是布

2.用戶輸入石頭並且隨機數是剪刀

3.用戶輸入布並且隨機數是石頭

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:編寫腳本


[root@localhost day02]# vim game.py
#!/usr/bin/env python3

import random

#1. 提示並獲取用戶的輸入
player = int(input("請輸入 0剪刀 1石頭 2布:"))

#2. 讓電腦出一個隨機數
computer = random.randint(0,2)

#3. 判斷用戶的輸入,然後顯示對應的結果
#if 玩家獲勝的條件:
if (player==0 and computer==2) or (player==1 and computer==0) or (player==2 and computer==1):
print("贏了,,,,可以去買奶粉了.....")
#elif 玩家平局的條件:
elif player==computer:
print("平局了,,,洗洗手決戰到天亮....")
else:
print("輸了,,,回家拿錢 再來....")

或將上面的代碼改爲以下寫法:

引用random模塊choice方法隨機生成‘石頭’、‘剪刀’、‘布’中任意一項,提示並獲取用戶的輸入字符,應用if擴展語句對隨機數與輸入值進行對比判斷,滿足指定條件,輸出結果問題結果


import random

computer = random.choice(['石頭', '剪刀', '布'])
player = input('請出拳(石頭/剪刀/布):')

# print('您出了:', player, '計算機出的是:', computer)
print('您出了: %s, 計算機出的是: %s' % (player, computer))
if player == '石頭':
if computer == '石頭':
print('平局')
elif computer == '剪刀':
print('You WIN!!!')
else:
print('You LOSE!!!')
elif player == '剪刀':
if computer == '石頭':
print('You LOSE!!!')
elif computer == '剪刀':
print('平局')
else:
print('You WIN!!!')
else:
if computer == '石頭':
print('You WIN!!!')
elif computer == '剪刀':
print('You LOSE!!!')
else:
print('平局')

步驟二:測試腳本執行


[root@localhost day02]# python3 game.py
請輸入 0剪刀 1石頭 2布:1
平局了,,,洗洗手決戰到天亮....
[root@localhost day02]# python3 game.py
請輸入 0剪刀 1石頭 2布:0
贏了,,,,可以去買奶粉了.....
[root@localhost day02]# python3 game.py
請輸入 0剪刀 1石頭 2布:2
平局了,,,洗洗手決戰到天亮....
[root@localhost day02]# python3 game.py
請輸入 0剪刀 1石頭 2布:1
贏了,,,,可以去買奶粉了.....
[root@localhost day02]# python3 game.py
請輸入 0剪刀 1石頭 2布:1
輸了,,,回家拿錢 再來....
[root@localhost day02]# python3 game.py
請出拳(石頭/剪刀/布):石頭
您出了: 石頭, 計算機出的是: 石頭
平局
[root@localhost day02]# python3 game.py
請出拳(石頭/剪刀/布):剪刀
您出了: 剪刀, 計算機出的是: 剪刀
平局
[root@localhost day02]# python3 game.py
請出拳(石頭/剪刀/布):布
您出了: 布, 計算機出的是: 剪刀
You LOSE!!!
[root@localhost day02]# python3 game.py
請出拳(石頭/剪刀/布):石頭
您出了: 石頭, 計算機出的是: 剪刀
You WIN!!!

步驟三:改進腳本

執行代碼後,在終端顯示中,根據提示輸入‘石頭、剪刀、布’對應數值,通過列表切片獲取用戶輸入字符,引用random模塊choice方法電腦隨機生成‘石頭’、‘剪刀’、‘布’中任意一項字符,將可贏組合放入列表中,如果隨機生成電腦值與用戶獲取字符在可贏列表中,則爲可贏組合,輸出‘you win’,否則,輸出‘you lose’


import random

all_choices = ['石頭', '剪刀', '布']
win_list = [['石頭', '剪刀'], ['剪刀', '布'], ['布', '石頭']]
prompt = '''(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):'''
computer = random.choice(all_choices)
ind = int(input(prompt))
player = all_choices[ind]

print('您出了: %s, 計算機出的是: %s' % (player, computer))
if player == computer:
print('\033[32;1m平局\033[0m')
elif [player, computer] in win_list:
print('\033[31;1mYou WIN!!!\033[0m')
else:
print('\033[31;1mYou LOSE!!!\033[0m')

測試腳本執行:


[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):2
您出了: 布, 計算機出的是: 布
平局
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):1
您出了: 剪刀, 計算機出的是: 剪刀
平局
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):0
您出了: 石頭, 計算機出的是: 石頭
平局
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):1
您出了: 剪刀, 計算機出的是: 石頭
You LOSE!!!
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):2
您出了: 布, 計算機出的是: 剪刀
You LOSE!!!
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):1
您出了: 剪刀, 計算機出的是: 石頭
You LOSE!!!
[root@localhost day02]# python3 game2.py
(0) 石頭
(1) 剪刀
(2) 布
請選擇(0/1/2):0
您出了: 石頭, 計算機出的是: 剪刀
You WIN!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章