鱼C论坛

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

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

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

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

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

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

问题

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

import random

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

if secret == 1:
    answer ="剪刀"
elif secret ==2:
    answer = "石头"
else:
    answer = "布"

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

if answer == temp:
    print("我出的是:",answer,"平局啦")
else: #不同时
    if answer=="剪刀":
        if temp == "石头":
            print("我出了剪刀,你赢了")
        else:
            print("我出了剪刀,你输了")
    elif answer =="石头":
        if temp == "布":
            print("我出了石头,你赢了")
        else:
           print("我出了石头,你输了") 
    else:
        if temp == "剪刀":
            print("我出了布,你赢了")
        else:
           print("我出了布,你输了")      
    
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-24 10:22:50 | 显示全部楼层
请把代码贴出来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

import random

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

if secret == 1:
    answer ="剪刀"
elif secret ==2:
    answer = "石头"
else:
    answer = "布"

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

if answer == temp:
    print("我出的是:",answer,"平局啦")
else: #不同时
    if answer=="剪刀":
        if temp == "石头":
            print("我出了剪刀,你赢了")
        else:
            print("我出了剪刀,你输了")
    elif answer =="石头":
        if temp == "布":
            print("我出了石头,你赢了")
        else:
           print("我出了石头,你输了") 
    else:
        if temp == "剪刀":
            print("我出了布,你赢了")
        else:
           print("我出了布,你输了")      
    

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-24 10:43:44 | 显示全部楼层
列个表格,一个个比就完了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

actually you can optimize it. too many if else statements here
想知道小甲鱼最近在做啥?请访问 -> 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?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-24 10:55:43 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

楼上那位说可以简化的,你看看他怎么说
想知道小甲鱼最近在做啥?请访问 -> 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

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

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有道理,这个索引比较学到了,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不愧是大佬级别
想知道小甲鱼最近在做啥?请访问 -> 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!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

player=input('请输入你要放出的手势(剪刀,石头,布):')
flag=False
if abs(secret-answer.index(player))==2:
    flag=True
if answer[secret]==player:
    print("我出的也是%s,平局啦!"%player)
elif (secret>answer.index(player)) != flag:#这里是逻辑异或运算
    print("噢耶,我出的是%s,你输了。"%answer[secret])
else:
    print("你真棒,我出的是%s,我输了。"%answer[secret])
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-18 13:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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