鱼C论坛

 找回密码
 立即注册
查看: 2236|回复: 13

[已解决][萌新求助!] 关于猜拳游戏

[复制链接]
发表于 2020-9-24 10:18:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何设定游戏规则???
让程序明白 石头大于剪刀,剪刀大于布,然而布又要大于石头呢???
如果我写的代码不够好,请求大佬们指点改进!!!

问题

问题
最佳答案
2020-9-24 10:42:57
本帖最后由 昨非 于 2020-9-24 10:47 编辑
  1. print('------------石头剪刀布------------')

  2. import random

  3. secret = random.randint(1,3)
  4. #answer = secret  #这行没用

  5. if secret == 1:
  6.     answer ="剪刀"
  7. elif secret ==2:
  8.     answer = "石头"
  9. else:
  10.     answer = "布"

  11. temp = input("请输入你要放出的手势(石头、剪刀或布):")
  12. #player = str(temp)   #这行也多余,input的返回内容本例就是字符串

  13. if answer == temp:
  14.     print("我出的是:",answer,"平局啦")
  15. else: #不同时
  16.     if answer=="剪刀":
  17.         if temp == "石头":
  18.             print("我出了剪刀,你赢了")
  19.         else:
  20.             print("我出了剪刀,你输了")
  21.     elif answer =="石头":
  22.         if temp == "布":
  23.             print("我出了石头,你赢了")
  24.         else:
  25.            print("我出了石头,你输了")
  26.     else:
  27.         if temp == "剪刀":
  28.             print("我出了布,你赢了")
  29.         else:
  30.            print("我出了布,你输了")      
  31.    
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-9-24 10:22:50 | 显示全部楼层
请把代码贴出来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:42:57 | 显示全部楼层    本楼为最佳答案   
本帖最后由 昨非 于 2020-9-24 10:47 编辑
  1. print('------------石头剪刀布------------')

  2. import random

  3. secret = random.randint(1,3)
  4. #answer = secret  #这行没用

  5. if secret == 1:
  6.     answer ="剪刀"
  7. elif secret ==2:
  8.     answer = "石头"
  9. else:
  10.     answer = "布"

  11. temp = input("请输入你要放出的手势(石头、剪刀或布):")
  12. #player = str(temp)   #这行也多余,input的返回内容本例就是字符串

  13. if answer == temp:
  14.     print("我出的是:",answer,"平局啦")
  15. else: #不同时
  16.     if answer=="剪刀":
  17.         if temp == "石头":
  18.             print("我出了剪刀,你赢了")
  19.         else:
  20.             print("我出了剪刀,你输了")
  21.     elif answer =="石头":
  22.         if temp == "布":
  23.             print("我出了石头,你赢了")
  24.         else:
  25.            print("我出了石头,你输了")
  26.     else:
  27.         if temp == "剪刀":
  28.             print("我出了布,你赢了")
  29.         else:
  30.            print("我出了布,你输了")      
  31.    
复制代码

评分

参与人数 1荣誉 +5 收起 理由
轩少不冷 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:43:44 | 显示全部楼层
列个表格,一个个比就完了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:52:01 | 显示全部楼层

actually you can optimize it. too many if else statements here
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:53:48 | 显示全部楼层
Seawolf 发表于 2020-9-24 10:52
actually you can optimize it. too many if else statements here

Of course. For example?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 10:55:43 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:56:46 | 显示全部楼层

楼上那位说可以简化的,你看看他怎么说
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:57:28 | 显示全部楼层
昨非 发表于 2020-9-24 10:53
Of course. For example?

1. put rock, scissor and paper into a list in order
2. then compare the index of random input and user input
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:59:16 | 显示全部楼层
本帖最后由 sunrise085 于 2020-9-24 11:00 编辑
昨非 发表于 2020-9-24 10:22
请把代码贴出来

这是三个比较,你的方法也可以,若是十个或是百个进行比较,那你的写法就有点太长了。。。
  1. import random
  2. secret = random.randint(1,3)
  3. answer=['','剪刀','石头','布']

  4. player=input('请输入你要放出的手势(剪刀,石头,布):')

  5. if answer[secret]==player:
  6.     print("我出的也是%s,平局啦!"%player)
  7. elif abs(secret-answer.index(player))==2:#这里用最大最小的差值,只有这两个比较相反,其他的正常比较即可
  8.     if secret>answer.index(player):
  9.         print("你真棒,我出的是%s,我输了。"%answer[secret])
  10.     else:
  11.         print("噢耶,我出的是%s,你输了。"%answer[secret])
  12. elif secret>answer.index(player):
  13.     print("噢耶,我出的是%s,你输了。"%answer[secret])
  14. else:
  15.     print("你真棒,我出的是%s,我输了。"%answer[secret])
复制代码

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
轩少不冷 + 5 + 3

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 11:04:32 | 显示全部楼层
sunrise085 发表于 2020-9-24 10:59
这是三个比较,你的方法也可以,若是十个或是百个进行比较,那你的写法就有点太长了。。。

有道理,这个索引比较学到了,谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 11:05:07 | 显示全部楼层
sunrise085 发表于 2020-9-24 10:59
这是三个比较,你的方法也可以,若是十个或是百个进行比较,那你的写法就有点太长了。。。

不愧是大佬级别
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 11:09:44 | 显示全部楼层
Seawolf 发表于 2020-9-24 10:57
1. put rock, scissor and paper into a list in order
2. then compare the index of random input an ...

thanks!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 11:12:41 | 显示全部楼层


还可以更简单,用异或
  1. import random
  2. secret = random.randint(1,3)
  3. answer=['','剪刀','石头','布']

  4. player=input('请输入你要放出的手势(剪刀,石头,布):')
  5. flag=False
  6. if abs(secret-answer.index(player))==2:
  7.     flag=True
  8. if answer[secret]==player:
  9.     print("我出的也是%s,平局啦!"%player)
  10. elif (secret>answer.index(player)) != flag:#这里是逻辑异或运算
  11.     print("噢耶,我出的是%s,你输了。"%answer[secret])
  12. else:
  13.     print("你真棒,我出的是%s,我输了。"%answer[secret])
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-27 12:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表