首页 > 解决方案 > Python 不会多次迭代循环

问题描述

我是 Python 新手,我正在尝试在杂货店中模拟 UPC 代码的练习。如果它的位置是奇数,我需要将列表中的每个数字乘以 3,如果它的位置是偶数,我需要乘以 1,然后我需要对所有结果求和。

def upc_code(code):
    given_check_digit = code[-1]
    new_code = code[0:-1]
    list_of_numbers = list(map(int, new_code.strip()))
    how_many = len(list_of_numbers)
    new_lst = []
    counter = 1
    for item in range(1, how_many + 1):
        check_odd_even = item % 2
        for digit in list_of_numbers:
            if check_odd_even == 1:
            index_number = digit * 3
            new_lst.append(index_number)
            counter += 1
        else:
            index_number = digit * 1
            new_lst.append(index_number)
            counter += 1
        break

使用 Pycharm 中的逐步执行功能,我发现一切正常,它通过第一个循环并检查数字是奇数还是偶数,然后逐步执行第二个循环并抓取索引中的第一项。它检查它是 1 还是 0 并正确进入 if/else 条件。这就是问题开始的地方,当它第二次遍历第二个循环(对于 list_of_numbers 中的数字)时,它不会抓取第二个索引、第三个索引等。它只是停留在第一个索引号。

这只是我的代码的其余部分,没关系。

result_of_sum = sum(new_lst)
check_digit = result_of_sum % 10
if 1 <= check_digit <= 9:
    print("Hello")
else:
    return False

如果有人能解释我做错了什么,以及为什么它没有在第二个循环中正确地通过列表,那将不胜感激。

标签: pythonloopsnested-loops

解决方案


推荐阅读