首页 > 解决方案 > 如何使用定义的参数构建一系列位置?

问题描述

我有一个非常基本的编程背景,但我得到了一个快速的任务,即拥有一个可以获取源和目标位置的程序,并基本上吐出源和目标之间所有位置的范围。

我构建了输入 GUI,并将所有变量传递给一个函数,现在我只需要弄清楚如何正确循环它。

位置是这种形式(没有空格):XXXXXXXXXXX 001 X 01 01

X 是根据我传入的值进行硬编码的。最后一个条目应该首先缩放。我还在最后两个字段中的每个字段中都有一个可能的最大值的条目。

示例来源:XXXXXXXXXXX003X0102

示例目的地:XXXXXXXXXXX004X0201

在这种情况下,程序将根据 003 和 004 之间的范围输出以下内容,最后 2 个位置的最大范围为 03 和 02(将添加空格以便于阅读):

[使用输入和最大值的范围是"XXXXXXXXXXX 003->004 X 01->03 01->02"]

XXXXXXXXXXX 003 X 01 02
XXXXXXXXXXX 003 X 02 01
XXXXXXXXXXX 003 X 02 02
XXXXXXXXXXX 003 X 03 01
XXXXXXXXXXX 003 X 03 02
XXXXXXXXXXX 004 X 01 01
XXXXXXXXXXX 004 X 01 02
XXXXXXXXXXX 004 X 02 01

现在我能够创建一个 GUI 来输入所有这些值并将它们传递给一个函数。

我认为这将最好使用输入范围内的 3 个嵌套 for 循环,但我真的很困惑如何在嵌套在循环中时使用前导 0 加上条件最大值来递增。

伪未完成代码->

def addressGenerator(bMax, cMax, X, sourceA, sourceB, sourceC, destinationA, destinationB, destinationC):
    for x in range(sourceA, destinationA):
        for y in range(01, bMax):
            for z in range(01, cMax):
                # content

标签: python

解决方案


现在,不要担心前导零。相反,使用整数来维护您的计数,然后使用格式化的打印语句为您插入零:

for x in range(3,5):
    for y in range(1,4):
       for z in range(2,5):
          print("XXXX{:03d}XX{:02d}{:02d}".format(x, y, z))

推荐阅读