嵌套 for/while 循环 python 三角形

时间:2021-03-02 23:15:57

标签: nested-loops

代码

num = int(input(“Enter the number of lines: “))
for i in range(10):
  for j in range(1,i):
    print(num, the end='')
num = num+1
print() 

我正在编写一个程序,它应该是这样的。

Enter the number of lines: 10

11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 
30 31 32 33 34 35 36 37 
38 39 40 41 42 43 44 
45 46 47 48 49 50
51 52 53 54 55
56 57 58 59
60 61 62
63 64 
65

我没有讲师提供的任何示例,我只是按照网站上的步骤进行操作,但是我的代码输出是这样的:我很困惑我在哪里犯了错误,没有任何线索可以穿{ {1}} 或 for。请帮帮我,谢谢。

while

2 个答案:

答案 0 :(得分:0)

试试这个:

input_data = input('Enter number of lines: ')
num = int(input_data)

# how many items to print in the first line?
items_to_print = num

# what's the starting number?
print_number = 11

for i in range(0, num):
    
    # don't decrease num
    # decrease items_to_print
    # each line will reduce 1 item to print
    for j in range(0, items_to_print):

        print(print_number, end = ' ')
        print_number += 1

    print()
    items_to_print -= 1

结果:

Enter number of lines: 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37
38 39 40 41 42 43 44
45 46 47 48 49 50
51 52 53 54 55
56 57 58 59
60 61 62
63 64
65

说明

从小事做起,一路向上。

首先这样做:

input_data = input('Enter number of lines: ')
num = int(input_data)
print(num)

如果您输入 10,则会打印 10。太好了。

第二步,添加第一个for循环,测试是否会打印10行。

input_data = input('Enter number of lines: ')
num = int(input_data)

for i in range(0, num):
    print(f'Printing line {i}')

第三,尝试打印一个 10 x 10 的块。因此,您添加另一个名为 items_to_print 的变量。将其设置为 num。如果输入 10 作为输入,则会得到 10 行 10 列。

input_data = input('Enter number of lines: ')
num = int(input_data)

print_number = 0
items_to_print = num

for i in range(0, num):
    print(f'Printing line {i}')

    for j in range(0, items_to_print):
        print(print_number, end = ' ')

第四步是在重新启动 i 循环之前减少打印的零的数量。因此,您减少 items_to_print。

input_data = input('Enter number of lines: ')
num = int(input_data)

print_number = 0
items_to_print = num

for i in range(0, num):
    print(f'Printing line {i}')

    for j in range(0, items_to_print):
        print(print_number, end = ' ')

    items_to_print -= 1

既然您的打印效果很好,让我们将 print_number 设置为从 11 开始,每次在 j 循环中发生打印时,增加 print_number。然后您将拥有我在此答案顶部发布的相同代码。

答案 1 :(得分:0)

嗯,你有三个小问题,所以让我们一次解决一个。

第一:默认范围函数从 0 开始,因此当您的 j 从 1 开始时,您将错过循环的一次迭代。这解释了缺少一列和行而不是两行,所以让我们继续。

第二:range 函数是非包含性的,这意味着您是 I 从 0 到 9,然后在内部循环中您从 1 到最大 8。这是您缺少的第二次迭代。

第三:你从 1 循环到一个递增的值,你想要的是相反的,所以你需要一个递减的范围。

这就是您编写的代码的样子。

num = 11
for i in range(10, 0, - 1):
    for j in range(i):
        print(num, end = " ")
        num += 1
    print()

祝你好运,编码愉快