一会儿循环来向上和向下计数

问题描述

您如何编写程序以仅使用一个while循环而不使用for或if语句从用户的整数输入中向上或向下计数?

我已经成功地数了数,但似乎无法弄清楚如何算数。它也需要看起来像一个侧向三角形,在数字(等于要打印的数字)之前留有空格。

到目前为止,这是我的代码

n = int(input("Enter an integer: "))
i = " "
lines = 0
while lines <= n-1: 
    print(i * lines + str(lines))
    lines += 1

解决方法

您可以通过充分利用负数和绝对值abs()来解决此问题,这将使您可以在初始数字超过零时“切换方向”:

n = int(input("Enter an integer: "))
s = " "
i = n * -1

while i <= n: 
    num = n - abs(i)

    print(s * num + str(num))
    i += 1

这将产生:

Enter an integer: 3
0
 1
  2
   3
  2
 1
0
,

将打印行移至while循环之后。使用您当前打印语句中的内容,在while循环中形成列表列表(或数组)。然后在单个while循环中创建第二条语句以递减计数,从而创建第二个列表列表。现在,您可以按顺序打印两个列表列表。