分配是编写一个程序,打印函数2 ^ n的图表,如下所示:
*
**
****
********
****************
********************************
****************
********
****
**
*
我能够编程后半部分(在示例中从2 ^ 6向下),但我不知道如何反转while
函数来创建上半部分。到目前为止,这是我的代码:
import math
n=None
while n is None:
try:
n=input("Enter an integer for the power of two you wish to represent: ")
n=int(n)
except ValueError:
print("That is not an integer. Please try again.")
else:
while n>=0:
amt=(math.pow(2,n))
print('*'*int(amt))
n=int(n)-1
当我输入6时,输出
********************************
****************
********
****
**
*
那么我如何才能让它在上半场完成呢?
答案 0 :(得分:1)
import math
def draw(n):
i = 0;
while i <= n:
d = i
if i > n /2:
d = n - i;
print("*" * int(math.pow(2,d)))
i+=1
draw(12)
对于n = 12;
*
**
****
********
****************
********************************
****************************************************************
********************************
****************
********
****
**
*
答案 1 :(得分:0)
您可以计算结果值并将其存储在列表中,然后反转列表的两半以获得预期结果
import math
n=None
while n is None:
try:
n=input("Enter an integer for the power of two you wish to represent: ")
n=int(n)
except ValueError:
print("That is not an integer. Please try again.")
else:
lst = [math.pow(2,abs(r)) for r in range(0-n, n)]
lst = lst[len(lst)/2:] + lst[:len(lst)/2+1]
for item in lst:
print('*'*int(item))
答案 2 :(得分:0)
我不会在使用功能时使用。从我的角度来看,for循环在这里更好。 所以你可以,例如在两个for循环中使用你的代码,一个是升序,第二个是降序。
for power in range(n):
amt=(math.pow(2,power))
print('*'*int(amt))
for power in range(n-1)[::-1]:
amt=(math.pow(2,power))
print('*'*int(amt))
答案 3 :(得分:0)
您可以通过以下方式在一个循环中解决此问题:
i=n*-1
while i<=n:
x =n-abs(i)
amt=(math.pow(2,x))
print('*'*int(amt))
i=i+1