首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >10位数字的反向模式(模式问题)

10位数字的反向模式(模式问题)
EN

Stack Overflow用户
提问于 2021-01-26 08:47:13
回答 1查看 202关注 0票数 1

这是我要打印的图案。

1

3 2

6 5 4

10 9 8 7

现在我有了一个解决方案,但是我不知道到底是如何工作的。

解决办法:

代码语言:javascript
运行
复制
length = 6
start = 1
stop = 2
currentNumber = stop
for row in range(stop, length):
    for col in range(start, stop):
        currentNumber -= 1
        print(currentNumber, end=" ")
    print(" ")
    start = stop
    stop += row
    currentNumber = stop

我认为这是如何运作的:

代码语言:javascript
运行
复制
# for row in range(2, 6): 2, 3, 4, 5,
# for col in range(1, 2):
#  currentnum = 2-1 = 1
#  print( 1 )
#  start = stop (start = 2)
#  stop += 2 (row = 2,3,4,5) so now stop = 2 + 2 = 4
# currentNumber = 4

# for row in range(4, 6): 4,5
# for col in range(2, 4): 2, 3 means 2 time will loop run
#  currentnum = 4-1 = 3,
#  currentnum = 3-2 = 2
#  print( 3, 2 )
#  start = stop (start = 4)
#  stop += 3 (stro = 4+3 = 7)
#  currentnum = 7

                    **PROBLEM** 

# for row in range(7, 6):    
# for col in range(4, 7): 5,6,7 means 3 time will loop run
#  currentnum = 7-1 = 6,
#  currentnum = 7-2 = 5,
#  currentnum = 7-3 = 4,
#  print( 6, 5, 4)
#  start = stop (start = 7)
#  stop += 3 (stro = 7+3 = 11)
#  currentnum = 11

下面是问题(talking from the #commented calculations):

代码语言:javascript
运行
复制
for i in range(11, 6):
    for j in range(4, 7):
        print("h")
    print("k")
print("j")

这个For循环不会执行,因为(11,6)。

这就是我的计算出错的地方,我知道我不知道这个解决方案是如何工作的。任何对当前解决方案有更好的解决方案或解释的人都将不胜感激。

只是想知道代码是如何工作的,

谢谢你。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-26 12:23:21

我认为在你的理解中的问题是重写第一个for循环每次停止被改变。但是,不应该这样做,因为for循环只在开始时进行计算,因此在循环已经运行时,更改变量stop不应该对其产生影响,如果这是有意义的话。我在这里更正了你的“理解”部分:

代码语言:javascript
运行
复制
#### for loop does not change
# for row in range(2, 6): 2, 3, 4, 5,

### for loop 2 ###
#     for col in range(1, 2):
#         currentNumber -= 1  # 2-1 = 1
#         print(1)
#      start = stop  # (start = 2)
#      stop += 2  # (row currently = 2) so now stop = 2 + 2 = 4
#      currentNumber = 4

### for loop 3 ###
#     for col in range(2, 4): 2, 3 means 2 time will loop run
#         currentnum = 4-1 = 3,
#         currentnum = 3-2 = 2
#         print(3, 2)
#     start = stop  # (start = 4)
#     stop += 3  # (row currently = 3) so now stop = 4 + 3 = 7
#     currentnum = 7

### for loop 4 ###
#     for col in range(4, 7):  # 4, 5, 6 i.e. loop 3 times
#         currentnum = 7-1 = 6,
#         currentnum = 6-1 = 5
#         currentnum = 5 - 1 = 4
#         print(6, 5, 4)
#     start = stop  # (start = 7)
#     stop += 4  # (row currently = 4) so now stop = 7 + 4 = 11
#     currentnum = 11

### for loop 5 ###
#     for col in range(7, 11):  # 7, 8, 9, 10 i.e. loop 4 times
#         currentnum = 11 - 1 = 10
#         currentnum = 10 - 1 = 9
#         currentnum = 9 - 1 = 8
#         currentnum = 8 - 1 = 7
#         print(10, 9, 8, 7)
#     start = stop  # (start = 11)
#     stop += 5  # (row currently = 5) so now stop = 11 + 5 = 16
#     currentnum = 16

希望这是有意义的,但可以要求澄清。注意,最后几行并不重要,因为它是最后一个for循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65898246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档