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

Python 递增列表程序无法正确递增列表,需要帮助,python,Python,这是我从一篇博文中得到的代码,但现在我需要弄清楚为什么它会做一些意想不到的事情,我将描述它需要什么,如果它能正常工作,它会给出什么 Input(several examples): 006644322 112222333 Output(examples in order): 008866544 887777666 例如,我打字时很难 这 221111222 相反,你可以从我的两个例子中看到,计数器工作不正常,有人能告诉我为什么要尝试和修复什么吗?我试着修修补补,但没有用 [8,7,7,7,7,

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

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

牵引杆串=输入(“将牵引杆串放在这里(9位):”)
牵引杆组件=列表(映射(int,str(牵引杆组件)))
def计算单位(牵引):
对于范围内的i(len(trakermain)):
对于范围内的x(len(DruberMain)):
如果退税率main[x]==8:
回程牵引杆
对于范围内的j(len(牵引力分钟)):
如果退税率[j-1]<8且退税率[j]!=0:
退税率[j]+=1
打印(计算(牵引力)
这是我从中得到的源代码 我希望有人能给我一个想法,我很喜欢学习python,但到目前为止我还不知道为什么会发生这种情况,我很抱歉我在这里造成的麻烦是我修复的代码,我认为我现在应该工作所有值都正常工作
大声喊出barmar给我的想法,这很有效,不需要更多的帮助,现在,我似乎独自解决了这个问题,另一次编辑在答案中添加了我自己的代码,供其他人查看

这就是我带来的

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))
牵引杆串=输入(“将牵引杆串放在这里(9位):”)
牵引杆组件=列表(映射(int,str(牵引杆组件)))
def计算单位(牵引):
对于范围内的i(len(trakermain)):
对于范围内的x(len(DruberMain)):
如果退税率main[x]==8:
回程牵引杆
对于范围内的牵引杆间隙(len(牵引杆间隙)):
如果牵引AIN[DRAIRCAP-1]<9且牵引AIN[DRAIRCAP]!=0:
牵引杆主要部件[DRABERCAP]+=1
打印(计算(牵引力)
它起作用了,所以我不再抱怨了
编辑未使用的已删除变量

此解决方案应适用于:

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


我很困惑。输入是什么?什么是牵引杆串?如果上一个问题中的解决方案不起作用,您为什么要接受它?使用
max()
函数在
牵引杆串中查找最大值。从
8
中减去该值,得到需要添加到每个数字中的金额。然后在列表中循环,将其添加到除0之外的所有数字。我没有测试就接受了,如果第一次因为那天我很忙,我认为它会起作用,对不起,我想我会尝试自己修复它。我想我可以随时向原始人征求建议,因为这是他们的代码缺少了一些东西:
rubarmain[rubarcap]“+=< /代码>结束在该语句的中间。让我修复一下代码,让我看看是否可以在我的EndoIn中完成验证。”我想,不知怎么,我设法删除了++PART的那一个,似乎与问题的解决方案相同,只是变量<代码> j>代码>重命名为<代码> DuffBCAPCA/<代码>。它们都产生相同的结果:实际上,它们为第二个输入产生不同的结果。你的版本:我再次在示例中输入了一个错误,第二个错误,因为我的数学不是很好,但我测试了你的代码,到目前为止似乎工作正常。我将进一步尝试,然后再次确定它工作正常(我认为正如你所说,应该工作正常)我可能会把你的答案记为我接受的答案第一个答案应该是正确的例子是除非我的数学像大多数时候一样让我不及格,编辑:我也有点诵读困难,所以数学和这些结合起来会给我带来问题
[0, 0, 8, 8, 6, 6, 5, 4, 4]
[6, 6, 7, 7, 7, 7, 8, 8, 8]