目标
实现一个人与计算机玩猜拳——石头剪刀布的小游戏,学会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)
总结
我们从此可以看到找到规律后的代码短小简洁,程序的执行速度也会随之提升。让我们慢慢的学起来,规律无处不在…