谁能解释一下这段代码背后的逻辑

Can any one explain the logic behind this code

很抱歉问了这个非常基本的问题 - 但我不明白为什么它会这样做。

a = int(input('Enter No. of rows'))
for i in range (a,0,-1):
  print(i*'*')

感谢您抽出时间审阅并回答此问题。

range 函数接受三个参数。第一个参数。表示起始整数,第二个参数。表示停止的整数,以及第 3 个参数。代表数字应该增加多少。因此,在这种情况下,(start, stop, step) = (a, 0, -1)。这基本上意味着从 a(输入值)开始,移动到 0 并递增 -1

然后,在每次迭代中,打印重复 i 多次的星号 (*)。

可以参考范围函数here and here

循序渐进。

在第一行你有:

a = int(input('Enter No. of rows'))

首先,您有一个变量 a,它被归因于用户 inputint 值。 int()input() 都是函数。

这意味着用户输入的任何数字都将被转换为 int 类型,结果将归因于一个名为 a

的变量

然后你有一个 for 循环(参见文档 here):

for i in range (a,0,-1):

for 当您有一段代码要重复固定次数时,使用循环。它遍历序列(列表、元组、字典、集合或字符串)。

for 循环的语法如下:

for <item> in <iterable>:
    <loop body>

因此对于可迭代对象中的每一项,将执行 for 循环体内的代码。

然后你就有了range()函数(见文档here)。它需要 3 个参数:range(<starting int>, <stopping int>, <step int>)

starting int: 返回整数序列的起始整数

stopping int: 返回整数序列之前的整数。

step int:整数值,决定序列中每个整数之间的增量

负步长值意味着 range() 函数将以相反的顺序生成数字序列。

range (a,0,-1) 的情况下,这意味着从 range() 函数返回的数字序列应该从 a 的值开始,在 0 处停止并减少 1。

然后在最后一行你有:

print(i*'*')

(i*'*') 位意味着字符串 '*' 应该在控制台上打印 i 次(查看 this 解释)。