我正在尝试编写一个有关扑克游戏的程序,对于比较部分,我为每个设置调用(返回)倍数值。
在这种情况下,我返回了一个数组,其中一个是布尔值,一个是整数。但是,当我尝试在其他函数中使用它们时,出现错误('bool'对象不可下标),我不知道为什么。我的整个代码接近150行,要运行它,您将需要额外的文件,因此我将共享其中的某些部分。
这些是每种组合的设置部分
def straight(n):
F = converter(n)
if consecutive(F) == True:
return [True, F[0]]
return False
def full_house(n):
F = converter(n)
if len(set(F)) == 2:
for i in F:
if F.count(i) == 3:
return [True, i]
return False
这是我将其排名的部分
def ranking(n, k):
if n == "AKQJT" and flush(k) == True:
return 9
elif straight(n)[0]== True and flush(k) == True:
return [8,straight(n)[1]]
elif four_kind(n)[0]== True:
return [7,four_kind(n)[1]]
elif (full_house(n))[0]== True:
return [6,full_house(n)[1]]
elif flush(k) == True:
return 5
elif (straight(n))[0]== True:
return [4,straight(n)[1]]
例如,当我尝试
print(ranking("44447","DDDDD"))
我收到错误
elif straight(n)[0]== True and flush(k) == True: line ...
TypeError: 'bool' object is not subscriptable
但是有趣的是,当我尝试同花顺时(第二个elif部分对其进行了测试)。例如,
print(ranking("23456","DDDDD")
我得到一个类似的答案
[8,6]
这是真正的答案,但随后我再次遇到相同的错误。
答案 0 :(得分:2)
在默认情况下,您不返回数组:
return False
将其更改为类似
return [False, None]
或其他适合您情况的信息。
答案 1 :(得分:1)
请通过直线(n)签出您要返回的内容。我相信在这种情况下,您尝试返回 False 。因此,布尔值不可下标。
如果得到,则直接得到(n)为False。您不能编写if-elif条件来验证其情况。对于Straight(n)为False和Straight(n)不等于False的情况,您需要设计嵌套循环。