我正在处理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)
答案 0 :(得分:1)
您可以在字符串上使用拆分
#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的情况
答案 1 :(得分:0)
您的问题更有可能适合代码审核而非Stack Overflow。
由于你的任务是一个小挑战,我不会告诉你一个确切的解决方案,但是给你一个关于Python字符串的split
方法的提示(参见documentation)。
此外,您应该根据PEP8中的建议检查代码的样式,例如Python通常具有全部小写字母的函数/变量名,由下划线分隔的单词(如calc_area_box
)。