【问题标题】:Comparing and Combining List Items in Python在 Python 中比较和组合列表项
【发布时间】:2015-12-19 00:52:21
【问题描述】:

我正在处理Advent of Code: Day 2,并且在处理列表时遇到了麻烦。我的代码采用一个字符串,例如 2x3x4,并将其拆分为一个列表。然后它检查列表中的“x”并删除它们并将该值提供给计算所需面积的方法。问题是,在它删除'x'之前,我需要找出'x'之前是否有两个数字并将它们组合起来,以解释两位数。我研究过正则表达式,但我认为我没有正确使用它。有什么想法吗?

def CalcAreaBox(l, w, h):
    totalArea = (2*(l*w)) + (2*(w*h))+ (2*(h*l))
    extra = l * w
    toOrder = totalArea + extra
    print(toOrder)

def ProcessString(dimStr):

    #seperate chars into a list
    dimStrList = list(dimStr)
    #How to deal with double digit nums?

    #remove any x
    for i in dimStrList:
        if i == 'x':
            dimStrList.remove(i)
    #Feed the list to CalcAreaBox
    CalcAreaBox(int(dimStrList[0]), int(dimStrList[1]), int(dimStrList[2]))

dimStr = "2x3x4"  
ProcessString(dimStr)

【问题讨论】:

标签: python regex list


【解决方案1】:

你可以在你的字符串上使用 split

#remove any x and put in list of ints
dims = [int(dim) for dim in dimStrList.split('x')]
#Feed the list to CalcAreaBox
CalcAreaBox(dims[0], dims[1], dims[2])

当然,您需要考虑处理字符串中不完全是两个 X 的情况

【讨论】:

  • 做到了,它在我所有的测试用例中都是正确的(尽管它是 dimStr.split 为后代)。所有的字符串都有相同数量的 X,所以它应该是好的。感谢您的帮助!
  • 啊,是的,你当然是对的 dimStr 而不是 dimStrSplit。很高兴它奏效了! :) 请将此标记为答案,如果它解决了您的问题。
【解决方案2】:

您的问题更适合 Code Review 而不是 Stack Overflow。

由于你的任务有点挑战,我不会告诉你一个确切的解决方案,但给你一个关于 Python 字符串的split 方法的提示(参见documentation)。

此外,您应该根据PEP8 中的建议检查您的代码样式,例如Python 通常具有全小写字母的函数/变量名称,单词用下划线分隔(如calc_area_box)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多