问题描述
您如何编写程序以仅使用一个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
循环中创建第二条语句以递减计数,从而创建第二个列表列表。现在,您可以按顺序打印两个列表列表。