整体架构流程
1.需求分析
参与者:玩家,电脑
玩家 手动输入
电脑 随机出拳
2.判断输赢
玩家赢 电脑赢 平局
流程
1.出拳(玩家,电脑)
玩家-输入 电脑-随机
2.判断输赢
2.1玩家胜
2.2平局
2.3电脑胜
代码解释
优点:比较简洁,思路清晰
缺点:不够直观,不能直接说明电脑出的是什么,只能用数字代替
平局的时候必须重新运行游戏才能再来一次。
import random
# 让用户输入选择,0代表石头,1代表剪刀,2代表布
player = int(input('请出拳: 石头: 0 输:1 剪刀:2')) # 这里的"输"应该是"布"的误写
# 电脑随机选择0、1或2
computer = random.randint(0, 2)
# 判断游戏结果
if ((player == 0) and (computer == 1)) or ((player == 1) and (computer == 2)) or ((player == 2) and (computer == 0)):
print('玩家获胜,哈哈哈')
elif player == computer:
print('平局,再来一次')
elif player >= 3 or computer >= 3:
print('没有这种出法哦')
else:
print('电脑获胜')
# 打印电脑的选择
print('电脑出的是:', computer)
这段代码的工作流程如下:
- 导入
random
模块,用于生成电脑的随机选择。 - 提示用户输入他们的选择(0代表石头,1代表剪刀,2代表布)。
- 使用
random.randint(0, 2)
生成电脑的随机选择,范围是0到2。 - 使用
if-elif-else
语句来判断游戏结果:- 如果玩家的选择击败了电脑的选择(例如,玩家出剪刀,电脑出布),则玩家获胜。
- 如果玩家和电脑的选择相同,则为平局。
- 如果玩家的选择无效(大于2),则提示没有这种出法。
- 否则,电脑获胜。
- 打印电脑的选择,以便用户知道电脑出了什么。
import random
# 获取用户输入,0表示石头,1表示剪刀,2表示布
player = int(input('请出拳: 0-石头 1-剪刀 2-布:'))
# 电脑随机出拳
computer = random.randint(0, 2)
# 打印电脑出拳结果
if computer == 0:
cpc = "石头"
elif computer == 1:
cpc = "剪刀"
else:
cpc = "布"
print("电脑出的是%s\n" % cpc)
# 检查用户输入是否有效
if player >= 3:
print('没有这种出法哦')
else:
# 判断游戏结果
if (player == 0 and computer == 1) or (player == 1 and computer == 2) or (player == 2 and computer == 0):
print('玩家获胜,哈哈哈')
elif player == computer:
print('平局,再来一次')
else:
print('电脑获胜')
- 使用
if-elif-else
语句来判断游戏结果:- 如果玩家的选择击败了电脑的选择(例如,玩家出石头,电脑出剪刀),则玩家获胜。
- 如果玩家和电脑的选择相同,则为平局。
- 否则,电脑获胜。
import random
while True: # 无限循环,直到用户选择退出
player = int(input('请出拳: 0-石头 1-剪刀 2-布:'))
computer = random.randint(0, 2) # 电脑随机出拳
cpc = ["石头", "剪刀", "布"][computer] # 将数字转换为对应的出拳名称
print(f"电脑出的是{cpc}\n")
如果你想一直玩下去的话,加一个while语句就可以了哦
演示效果
小结
改进后把电脑出的数字转化为了汉字表达比较直观。编写程序的过程中尤其要注意if语句的次序。把电脑生成的数字转化为汉字的if语句和判断输赢的if语句使并列的,如果不并列,将判断输赢的if语句弄到把电脑生成的数字转化为汉字的if语句里面去了就会导致程序执行到转化那里就直接停止了。