show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 这次了解的是优先级
- 每个运算符都有自己的优先级位置
- 逻辑运算符的优先级从高到低
- not
- and
- or
- 有什么比较复杂的逻辑运算么???🤔
- 每人五个骰子,摇出后,依其点数牌形可分为:
- 散牌(五个骰子点数各不一样)
- 一对(五个骰子中仅有两个骰子点数一样,其余皆不一样)
- 两对(两个对子加一个其他点数,如一对二加一对四加一个三)
- 三条(三个骰子的点数一致,余下两个骰子点数各不相同,如三个四加一个二和一个六)
- 葫芦(也就是扑克牌中的三条带一对:三个骰子点数同为某数,余下两个骰子点数同为另一数,如三个三加一对二)
- 炸弹(其中四个骰子的点数一致,如四个一加一个五)
- 顺子(五个骰子点数呈连续分布,如 12345 和 23456)
- 豹子(五个骰子点数全一样)
- 第一步就是
- 通过五个随机的色子
- 得到相应的级别
- 动手吧!
from random import randint
dices = []
for num in range(5):
dices.append(randint(1,6))
print(dices)
- 结果
- 投了骰子之后
- 需要整理
from random import randint
dices = []
for num in range(5):
dices.append(randint(1,6))
dices.sort()
print(dices)
- 结果
- 散牌(五个骰子点数各不一样)
- 一对(五个骰子中仅有两个骰子点数一样,其余皆不一样)
- 两对(两个对子加一个其他点数,如一对二加一对四加一个三)
- 三条(三个骰子的点数一致,余下两个骰子点数各不相同,如三个四加一个二和一个六)
- 葫芦(也就是扑克牌中的三条带一对:三个骰子点数同为某数,余下两个骰子点数同为另一数,如三个三加一对二)
- 炸弹(其中四个骰子的点数一致,如四个一加一个五)
- 顺子(五个骰子点数呈连续分布,如 12345 和 23456)
- 豹子(五个骰子点数全一样)
if (dices[0]==dices[4]):
level = 8
print("baozi")
elif (dices[4]==dices[3]+1==dices[2]+2==dices[1]+3==dices[0]+4):
level = 7
print("shunzi")
elif (dices[0]==dices[3] or dices[1]==dices[4]):
level = 6
print("zhadan")
elif ((dices[0]==dices[2]) and (dices[3]==dices[4])) or\
((dices[0]==dices[1]) and (dices[2]==dices[4])):
level = 5
print("hulu")
elif (dices[0]==dices[2] or dices[1]==dices[3] or dices[2]==dices[4]):
level = 4
print("santiao")
- 两对看起来情况很复杂啊
- 先去游乐场找找思路
- 这个思路看起来可行
from random import randint
dices = []
for num in range(5):
dices.append(randint(1,6))
dices.sort()
c = []
for num in range(1,7):
c.append(dices.count(num))
print(dices)
print(c)
- 结果
elif (c.count(2)==2):
level = 3
print("liangdui")
elif (c.count(2)==1):
level = 2
print("yidui")
else:
level = 1
print("sanpai")
- 当获得了 counts 之后
- 其实原来的代码也可以简化
from random import randint
dices = []
for num in range(5):
dices.append(randint(1,6))
dices.sort()
c = []
for num in range(1,7):
c.append(dices.count(num))
print(dices)
print(c)
if (dices[0]==dices[4]):
level = 8
print("baozi")
elif (dices[4]==dices[3]+1==dices[2]+2==dices[1]+3==dices[0]+4):
level = 7
print("shunzi")
elif (c.count(4)==1):
level = 6
print("zhadan")
elif (c.count(3)==1 and c.count(2)==1) :
level = 5
print("hulu")
elif (c.count(3)==1):
level = 4
print("santiao")
elif (c.count(2)==2):
level = 3
print("liangdui")
elif (c.count(2)==1):
level = 2
print("yidui")
else:
level = 1
print("sanpai")
- 这样就有了等级的基本规则
- 同级的也可以比大小
for dice in dices:
s = chr( 9855 + dice )
print(s,end=" ")
print()
- 可以控制颜色吗?
- 1、4可以是红的
for dice in dices:
s = chr( 9855 + dice )
if dice == 1 or dice == 4:
s = "\33[31m" + s + "\33[0m"
print(s,end=" ")
print()
from random import randint
dices = []
for num in range(5):
dices.append(randint(1,6))
dices.sort()
c = []
for num in range(1,7):
c.append(dices.count(num))
print(dices)
for dice in dices:
s = chr( 9855 + dice )
if dice == 1 or dice == 4:
s = "\33[31m" + s + "\33[0m"
print(s,end=" ")
print()
print(c)
if (dices[0]==dices[4]):
level = 8
print("baozi")
elif (dices[4]==dices[3]+1==dices[2]+2==dices[1]+3==dices[0]+4):
level = 7
print("shunzi")
elif (c.count(4)==1):
level = 6
print("zhadan")
elif (c.count(3)==1 and c.count(2)==1) :
level = 5
print("hulu")
elif (c.count(3)==1):
level = 4
print("santiao")
elif (c.count(2)==2):
level = 3
print("liangdui")
elif (c.count(2)==1):
level = 2
print("yidui")
else:
level = 1
print("sanpai")
- 胜负规则为豹子>顺子>炸弹>葫芦>三条>两对>对子>散牌
- 若属于同一类型,则依次比较类型构成主次要成分的骰子点数大小
- 如炸弹先比较四个相同骰子的点数,再比较散牌
- 葫芦先比较三个相同骰子再比较对牌
- 两对先比较较大的对,再比较稍小的对,最后比较散牌
- 如此类推
- 比较点数时 1 > 6 > 5 > 4 > 3 > 2
- 试举例,如双方均为葫芦
- 一人为三个五带对二
- 另一人为三个四带对六
- 前者胜
- 又若双方均为两对,同有对二、对六
- 但一方散牌为五
- 另一方为一
- 则后者胜
- 这真的有点复杂
- 有兴趣的同学可以把随机摇两把
- 然后比大小
- 可以做个字典
- 当级别相同的时候
- 去比较字典里面的数字
- 图中可知
- 有1个2
- 有2个3
- 有2个4
- 需要你想清楚
- 写好哦!
- 这次做了一个比较复杂的骰子的例子
- 真的是很复杂
- 综合运用逻辑类的与或非
- 为什么要强调逻辑类的与或非
- 难道说除了逻辑类
- 还有其他类的与或非???🤔
- 下次再说 👋