递增列表程序无法正确递增列表,需要帮助

2024-05-15 00:32:09 发布

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

这是我从一篇博文中得到的代码,但现在我需要弄清楚为什么它会做一些意想不到的事情,我将描述它需要什么,如果它能正常工作,它会给出什么

Input(several examples):
006644322
112222333
Output(examples in order):
008866544
887777666

例如,我打字时很难 这 221111222 相反,你可以从我的两个例子中看到,计数器工作不正常,有人能告诉我为什么要尝试和修复什么吗?我试着修修补补,但没有用 [8,7,7,7,7,7,8,7,8]

drawbarstring = input("Put your drawbar string here(9 digits): ")
drawbarmain = list(map(int, str(drawbarstring)))

def compute_nums(drawbarmain):
    for i in range(len(drawbarmain)):
        for x in range(len(drawbarmain)):
            if drawbarmain[x] == 8:
                return drawbarmain

        for j in range(len(drawbarmain)):
            if drawbarmain[j-1] < 8 and drawbarmain[j] != 0:
                drawbarmain[j] += 1

print(compute_nums(drawbarmain))

这是我从中得到的源代码 How do you find highest value in the list then increase it with the other values increasing as well expect a value that is set as 0 我希望有人能给我一个想法,我很喜欢学习python,但到目前为止我还不知道为什么会发生这种情况,我很抱歉我在这里造成的麻烦是我修复的代码,我认为我现在应该工作所有值都正常工作 对barmar给我的想法大声呼喊,这很有效,不需要更多的帮助,现在,我似乎独自解决了这个问题,另一次编辑在答案中添加了我自己的代码,供其他人查看


Tags: the代码inforlenifvalueas
2条回答

这一解决方案应在以下方面发挥作用:

def compute_nums(drawbarmain):
    cap = max(drawbarmain) # Find highest value
    inc = 8 - cap # amount to be added to make 8
    for i, val in enumerate(drawbarmain):
        if 0 < val < 8:
            drawbarmain[i] = val + inc # Add to all values other than 0
    return drawbarmain

print(compute_nums([0,0,6,6,4,4,3,2,2]))
print(compute_nums([1,1,2,2,2,2,3,3,3]))

输出为:

[0, 0, 8, 8, 6, 6, 5, 4, 4]
[6, 6, 7, 7, 7, 7, 8, 8, 8]

我的第二个结果与你的例子不一样,但如果我理解它的作用,我认为我的答案是正确的3是列表中的最高数字,因此需要将其增加5倍才能达到8,所有其他数字也需要增加5倍

DEMO

这就是我带来的

drawbarstring = input("Put your drawbar string here(9 digits): ")
drawbarmain = list(map(int, str(drawbarstring)))

def compute_nums(drawbarmain):
    for i in range(len(drawbarmain)):
        for x in range(len(drawbarmain)):
            if drawbarmain[x] == 8:
                return drawbarmain

        for drawbarcap in range(len(drawbarmain)):
            if drawbarmain[drawbarcap - 1] < 9 and drawbarmain[drawbarcap] != 0:
               drawbarmain[drawbarcap] += 1

print(compute_nums(drawbarmain))

它起作用了,所以我不再抱怨了 编辑未使用的已删除变量

相关问题 更多 >

    热门问题