Python 如何在没有数组帮助的情况下检查3/5值是否相同?
大家好。我对编码还不熟悉,目前正试图弄清楚我是否有一套5个骰子。die1,die2,die3,die4,die5,我想检查3/5是否有相同的值。如果没有阵列的帮助,这是可能的吗? :当然可以。使用集合。计数器:Python 如何在没有数组帮助的情况下检查3/5值是否相同?,python,Python,大家好。我对编码还不熟悉,目前正试图弄清楚我是否有一套5个骰子。die1,die2,die3,die4,die5,我想检查3/5是否有相同的值。如果没有阵列的帮助,这是可能的吗? :当然可以。使用集合。计数器: 严格地说,这确实使用了一个列表,我认为这就是你的意思;数组完全是另一回事,因此它取决于您的限制的确切含义。您可以随时将其更改为元组…快速更新。谢谢大家的快速回答。在另一个论坛上给出我的答案: 我是这样做的: DICE值=标准偏差1、标准偏差2、标准偏差3、标准偏差4、标准偏差5 打印值
严格地说,这确实使用了一个列表,我认为这就是你的意思;数组完全是另一回事,因此它取决于您的限制的确切含义。您可以随时将其更改为元组…快速更新。谢谢大家的快速回答。在另一个论坛上给出我的答案: 我是这样做的: DICE值=标准偏差1、标准偏差2、标准偏差3、标准偏差4、标准偏差5 打印值 对于diceValues中的项目: count=diceValues.countitem 不带数组的打印计数:
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的数字执行循环或显式字符串/整数搜索会更快,但在这种情况下,隐式数组循环是可能的:-这里的3/5是什么?你能详细说明你的问题吗?当然。每个可能的骰子值需要一个变量作为计数器和许多ifs。编辑:甚至可以在没有计数器和单个、大量if的情况下工作。对不起,我解释得不好。我试图检查5个骰子中是否至少有3个骰子的值相同。希望这有帮助:谢谢,你的代码真的很好,但我正在尝试避免使用[d1,d2,d3,d4,d5]。@Mark有什么特别的原因吗?那么d1,d2,d3,d4,d5呢?它使用一个元组。为什么元组可以,但不是列表?我只是在练习。超级新的编码,我想学习尽可能多的:,必须谷歌元组现在元组是完全一样的列表,除了你不能改变其中的内容。
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)