python - 如何检测元组的特定部分?
问题描述
处理一个家庭作业问题,该问题要求我编写一个程序,该程序需要一组元组并检测它是否算作多米诺骨牌循环。例如,如果给定 tuples [(1,2),(2,3),(3,4)]
,程序将返回True
。如果给出一个类似的例子[(1,2),(3,4),(7,6)]
,它将返回False
。此外,如果只给出了一组元组,但其中的两个值相同,例如[(5,5)]
,True
应该返回,否则False
,例如[(2,3)]
。这是我遇到问题的部分,是让程序检测何时给出单个元组以及其中的值是否相同。游戏中也有空的多米诺骨牌,如果给出一个空列表,例如“[]”,我希望程序返回 True。
这是我到目前为止所拥有的,None
当我尝试为一对元组运行它时它只会返回。对于多对元组,它可以工作。
def cycle(tiles):
for i in range(len(tiles)-1):
tile1 = tiles[i]
tile2 = tiles [i+1]
if tile1[1:] == tile2[0:1] or ((tile1 and not tile2) or (not tile1 and not tile2)):
return True
else:
return False
print (cycle([(4,4)]))
解决方案
这应该有效:
dominoes=[(1,2),(1,3),(3,4),(4,5),(5,6)]
def isdomino(agg, item):
#print(agg, item)
if agg[0] == 1:
if item[0] == item[1]:
return 'True', ''
else:
return 'False', ''
else:
if agg[0] == 'False':
return 'False', ''
if agg[1] == item[0]:
return 'True', item[1]
return 'False', item[1]
def checkdominoes(dominoes):
if len(dominoes) == 0:
return ('True', '')
else:
return reduce(isdomino, dominoes, (len(dominoes),dominoes[0][0]))
dominoes=[(1,2),(1,3),(3,4),(4,5),(5,6)]
something = checkdominoes(dominoes)
eval(something[0])
# False
dominoes=[(1,2),(2,3),(3,4),(4,5),(5,6)]
something = checkdominoes(dominoes)
eval(something[0])
# True
dominoes=[(1,2)]
something = checkdominoes(dominoes)
eval(something[0])
# False
dominoes=[(2,2)]
something = checkdominoes(dominoes)
eval(something[0])
# True
dominoes=[]
something = checkdominoes(dominoes)
eval(something[0])
# True
推荐阅读
- discord - 从频道设置中删除用户 Discord.js v12
- amazon-web-services - kafka-connect 休息 api 超时
- python - 从 postgres 获取结果并在 python 中将其转换为 json
- sql - 使用代码列与扩展表查询 SQL
- sqlite - SQLite 插入选择不同于
- sorting - 使用我自己的比较功能对 Flutter 小部件列表进行排序
- google-analytics - 谷歌分析限制“每天查询”服务“analytics.googleapis.com”错误未达到限制
- xml - 从 XML 中删除多个 XML 命名空间
- azure-devops - Azure DevOps yaml 模板中使用参数的多个需求
- powershell - Powershell - 用“$_.pdf”声明路径