繁体   English   中英

生成两个不同范围的循环

[英]Generate two loops with different ranges

我正在尝试生成两个循环,我希望第二个循环从第一个循环的第一个数字开始计数,范围为 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()

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

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

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. 最后一个是空语句,为了添加换行符

在外循环内部,但在进入内循环之前,我定义了end_second_loop以让第二个循环知道何时停止,并在外循环的每次迭代中更新。 然后内循环开始工作。 重要的是,第三次print()语句必须被称为内环以外,但外环 正如您一开始所拥有的那样,它是在内循环中被调用的,以防止它在一行上打印所有内容。 通过将其移出该循环,并到达第一个循环的末尾,它仅在外循环的每次迭代中打印一次换行符,并且仅在内循环完成后将其所有数字打印到一行。

我希望这有帮助。

您不需要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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM