生成具有不同范围的两个循环

时间:2016-09-28 06:44:30

标签: python loops nested

我正在尝试生成两个循环,我希望第二个循环从第一个循环的第一个数字开始计算,范围从10到80.看起来像这样:

0
0
1
12345678910
2
234567891011121314151617181920
3
3456789101112131415161718192021222324252627282930

继续这样直到我的第一个循环中的8个和我的第二个循环中的80个。 我的代码到目前为止

count = 1
for i in range(9):
    for j in range(0, i,10):
        print(count, end=80)
        count = count i+1

         print()

任何关于我做错事的建议都会非常有帮助。

2 个答案:

答案 0 :(得分:1)

您的代码中存在许多语法错误。我想我在这里有一个可用的版本:

for i in range(9):
    end_second_loop = (i * 10) + 1
    print(i)
    for j in range(i, end_second_loop):
        print(j, end='')
    print()

我还会用你的第一个代码来解释语法错误。

为了让您的代码能够运行,必须删除前一次print()调用之前的额外空格,end=80必须更改end,在这种情况下必须一个字符串,例如end=''强制print()不添加换行符),+中缺少count = count i+1。我想你想要:

count = count + i + 1

让它运行,但尚未产生正确的输出。根据您格式化所需输出的方式,需要3 print()个语句。

  1. 第一个打印外循环中的数字
  2. 下一个打印从第一个数字到该数字的计数乘以10(使用end='',以便全部在线打印)
  3. 最后一个是空语句,以添加换行符
  4. 在外部循环内部,但在进入内部循环之前,我定义了end_second_loop以让第二个循环知道何时停止,并且它在外部循环的每次迭代时更新。然后内循环开始工作。重要的是,第3个print()语句必须在内部循环中称为外部,而在外部循环中称为内部。正如你最初所做的那样,它在内部循环中被调用,阻止它在一行上打印。通过将它移出该循环,并移动到第一个循环的末尾,它只在外循环的每次迭代中打印一次换行,并且仅在内循环完成后将其所有数字打印到一行。

    我希望有所帮助。

答案 1 :(得分:0)

您不需要for循环来打印整数列表:使用str.join方法。这是一个例子:

for x in range(9):
    print('{}\n{}'.format(str(x), ''.join(map(str, range(x, 10 * x + 1)))))

技巧是在执行连接操作之前将整数映射到字符串:map(str, range(x, 10 * x + 1))