功能需求
假设石头剪刀布分别由1,2,3代表,程序在石头剪刀布中随机生成一个结果,根据用户输入的结果判断用户的输赢。用户输赢和平局否需要打印出结果。
石头赢剪刀
剪刀赢布
布 赢 石头
功能分析
1:定义猜拳的手势、名称和结果
2:定义一个函数 get_user_gesture()获取用户的手势信息,并且需要考虑到用户输入异常的情况,避免因此造成程序的异常运行
3:定义一个函数get_computer_gesture()随机生成电脑的手势
4:定义一个函数get_game_result判断游戏结果
5:定义函数play_game()运行主程序,利用if。。else。。语句,通过比较用户输入的数据和电脑随机生生成的结果进行比较,返回相应的信息
程序实现
import random
# 定义猜拳的手势
rock = 1
scissors = 2
paper = 3
# 定义游戏结果
win = 1
lose = -1
draw = 0
# 定义手势名称
gesture_names = {rock: '石头', scissors: '剪刀', paper: '布'}
# 获取用户输入的手势
def get_user_gesture():
while True:
try:
gesture = int(input('请出拳(1-石头 2-剪刀 3-布): '))
if gesture in (rock, scissors, paper):
return gesture
except ValueError:
pass
print('输入错误,请重新输入')
# 随机生成电脑的手势
def get_computer_gesture():
return random.randint(rock, paper+1) #利用randint的规则,rock是起始范围,paper+1是终止范围,因此三种手势都可以取得到
# 判断游戏结果
def get_game_result(user_gesture, computer_gesture):
if user_gesture == computer_gesture:
return draw
elif (user_gesture == rock and computer_gesture == scissors) or \
(user_gesture == scissors and computer_gesture == paper) or \
(user_gesture == paper and computer_gesture == rock):
return win
else:
return lose
# 运行游戏
def play_game():
while True:
user_gesture = get_user_gesture()
computer_gesture = get_computer_gesture()
print('你出了', gesture_names[user_gesture], ',电脑出了', gesture_names[computer_gesture])
result = get_game_result(user_gesture, computer_gesture)
if result == win:
print('你赢了!')
elif result == lose:
print('你输了!')
else:
print('平局')
again = input('再玩一次?(y/n): ')
if again.lower() != 'y':
break
print('游戏结束')
# 启动游戏
play_game()