Python 逻辑 - 使用 for 循环减少 1 的集合来创建三角形

标签 python for-loop

这是一个 CS101 type Python class .

这道题要求程序员编写 for 循环来建立这个模式:

111
11
1

我这里有生成的示例代码

11111
11111
11111
11111
11111

for i in range(0, 5):
  X = 0
  for j in range(0, 5):
    X = (X*10)+1
  print(X)

这是我的尝试之一。显然这是行不通的。请帮忙!

n=int(input())
for i in range(0, n):
  X = 0
  for j in range(0, n):
    X = (X*10)+1
    i=(n-2)
  print(X)

请尝试仅使用循环来解释答案。我们还没有开始工作。我有 this stackoverflow answer但它被写成一个函数。

最佳答案

您可以使用从 n 到 1 的循环,向后(在本例中为 3,2,1):

n = 3
c = "1"

for i in range(n, 0, -1):
    print(c * i)

或与 while 循环相同:

n = 3
c = "1"

i = n
while i != 0:
    print(c * i)
    i -= 1

两个片段打印:

111
11
1

你看到的是“111”而不是 3,因为 c 是一个字符串,而 python 有一个神奇的东西,我称之为“字符串繁殖”——如果一个字符串与一个 n 相乘 整数,字符串重复n 次:

>>> s = "1"
>>> type(s)
<type 'str'>
>>> s * 2
'11'
>>> s * 10
'1111111111'

-1 in range 函数调用是 step 参数的值。如果 step 为负,则循环从范围的结尾到开头:

>>> range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(10, 0, -1)
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

注意:如果您使用的是 Python 2,请将 range 替换为 xrange

希望我已经解释清楚了。

UPD:简化版:

n = 3

while n != 0:
    number = 0
    for i in range(n):
        number += 10 ** i

    print number
    n -= 1

关于Python 逻辑 - 使用 for 循环减少 1 的集合来创建三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18552850/

相关文章:

python - 如何在matplotlib中制作具有不同y轴的堆叠折线图?

javascript - for 循环本身中的 value++

java - For Loop 遍历数组中的 JSON 对象

java - for循环中嵌套类,会不会有n个类的实例?

Python:MemoryError、OverflowError、即时系统卡住

python - 为什么Python中的.format方法需要显式字符串转换?

python - self.assertRaises 作为上下文管理器,msg 参数未按预期工作

python - 对于维度 1 的数组,轴 1 超出范围

python - 通过 Mixin 调用 Grandparent Method 而不执行父方法

Ruby:是否有可能一次增加一个以上的 for 循环?