如何在没有数组帮助的情况下检查3/5值是否相同?

2024-06-08 12:05:22 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好。我是一个新的编码和目前正在试图找出如果我有一套5死。die1,die2,die3,die4,die5,我想检查3/5是否有相同的值。如果没有数组的帮助,这是可能的吗? :)


Tags: 编码数组die2die1die3die4die5
3条回答

快速更新。谢谢大家的快速回答。在另一个论坛上给出我的答案: Counting repeated characters in a string in Python 我是这样做的: DICE值=str(die1)、str(die2)、str(die3)、str(die4)、str(die5) 打印(值)

对于值中的项: 计数=DICE值。计数(项目) 打印(计数)

不带数组:

s = (die1==1)+(die2==1)+(die3==1)+(die4==1)+(die5==1)
if s >= 3:
    print('yes')
else:
    s = (die1==2)+(die2==2)+(die3==2)+(die4==2)+(die5==2)
    if s >= 3:
        print('yes')
    else:
        s = (die1==3)+(die2==3)+(die3==3)+(die4==3)+(die5==3)
        if s >= 3:
            print('yes')
        else:
            s = (die1==4)+(die2==4)+(die3==4)+(die4==4)+(die5==4)
            if s >= 3:
                print('yes')
            else:
                s = (die1==5)+(die2==5)+(die3==5)+(die4==5)+(die5==5)
                if s >= 3:
                    print('yes')
                else:
                    s = (die1==6)+(die2==6)+(die3==6)+(die4==6)+(die5==6)
                    if s >= 3:
                        print('yes')
                    else:
                        print('no')

在找到更好的解决方案后编辑我的帖子:

dice = (10**die1 + 10**die2 + 10**die3 + 10**die4 + 10**die5) // 10

print(dice % 10 >= 3 or dice // 10 % 10 >= 3 or dice // 100 % 10 >= 3 or 
      dice // 1000 % 10 >= 3 or dice // 10000 % 10 >= 3 or dice // 100000 % 10 >= 3)

我知道对一个大于等于3的数字执行循环或显式字符串/整数搜索会更快,但在这种情况下,隐式数组循环是可能的:-)

当然可以。使用collections.Counter

from collections import Counter

d1 = 1
d2 = 3
d3 = 4
d4 = 3
d5 = 3

counter = Counter([d1, d2, d3, d4, d5])
roll, count = counter.most_common()[0]

if count >= 3:
    print('At least 3 out of 5 values are the same.')

严格地说,这确实使用了list(我认为这就是您的意思;数组完全是另一回事),因此它取决于您的限制的确切含义。你可以把它改成tuple。。。你知道吗

相关问题 更多 >