轩少不冷 发表于 2020-9-24 10:18:14

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

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

昨非 发表于 2020-9-24 10:22:50

请把代码贴出来

昨非 发表于 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("我出了布,你输了")      
   

昨非 发表于 2020-9-24 10:43:44

列个表格,一个个比就完了{:10_277:}

Seawolf 发表于 2020-9-24 10:52:01

昨非 发表于 2020-9-24 10:42


actually you can optimize it. too many if else statements here

昨非 发表于 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?

轩少不冷 发表于 2020-9-24 10:55:43

昨非 发表于 2020-9-24 10:42


是我想多了呀{:10_277:}

昨非 发表于 2020-9-24 10:56:46

轩少不冷 发表于 2020-9-24 10:55
是我想多了呀

楼上那位说可以简化的,你看看他怎么说

Seawolf 发表于 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

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

昨非 发表于 2020-9-24 11:04:32

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

有道理,这个索引比较学到了,谢谢

轩少不冷 发表于 2020-9-24 11:05:07

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

不愧是大佬级别{:10_254:}

轩少不冷 发表于 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!

sunrise085 发表于 2020-9-24 11:12:41

轩少不冷 发表于 2020-9-24 11:05
不愧是大佬级别

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

player=input('请输入你要放出的手势(剪刀,石头,布):')
flag=False
if abs(secret-answer.index(player))==2:
    flag=True
if answer==player:
    print("我出的也是%s,平局啦!"%player)
elif (secret>answer.index(player)) != flag:#这里是逻辑异或运算
    print("噢耶,我出的是%s,你输了。"%answer)
else:
    print("你真棒,我出的是%s,我输了。"%answer)
页: [1]
查看完整版本: [萌新求助!] 关于猜拳游戏