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