python - 从 10 反转数字模式。(模式问题)
问题描述
这是我要打印的图案。
1
3 2
6 5 4
10 9 8 7
现在我有一个解决方案,但我不知道它是如何工作的。
解决方案:
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
这就是我认为它的工作方式:
# 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
):
for i in range(11, 6):
for j in range(4, 7):
print("h")
print("k")
print("j")
由于 (11, 6),这个 For 循环不会执行。
那就是我的计算出错的地方,我知道我再次不知道这个解决方案是如何工作的。任何人对当前解决方案有更好的解决方案或解释将不胜感激。
只想知道代码是如何工作的
谢谢你。
解决方案
我认为您理解的问题是每次停止更改时都重新编写第一个 for 循环。但是,不应该这样做,因为 for 循环只在开始时计算,所以stop
一旦它已经在运行,改变变量不应该对循环产生影响,如果这有意义的话。我在这里更正了您的“理解”部分:
#### 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 循环。
推荐阅读
- ios - iOS 13 - Cordova azure 通知中心插件未注册设备
- javascript - 直接调用函数draw时得到不同的输出?反应俄罗斯方块
- python-3.x - 从 Python 中的列表元素中删除特定标点符号
- plc - 定时器触发警报
- r - 用于为正态分布生成多个 QQ 图的循环
- javascript - React.js 通过 e.target 访问组件道具
- python - 实例的默认 __str__ 方法
- c++ - 如何在 C++ 链表中使用模板?
- python - 如何在使用 .iter_rows 时获取“当前”行值?
- flutter - 在 Flutter 中消除大量像素溢出的最佳方法是什么?