星号三角形Python(带输入)



我正在学习python 3的初学者课程,必须形成一个星号三角形,输出如下所示。星号三角格式

到目前为止,我的尝试如下:

def printRow(c, length) :
    line = c * length
    print(line)
myLen = 0
stars ="*"
n = myLen-1
spaces = (' '*n)
myLen = int(input("Enter number to make triangle: "))

if myLen<=0 :
    print("The value you entered is too small to display a triangle")
elif myLen>=40 :
    print("the value you entered is too big to display on a shell window")
while myLen>0 :
    print(spaces, stars, myLen)
    myLen = myLen-1

这是它在shell

中的输出

从这一点上我很迷茫,所以任何帮助都将是感激的。

这是一个非常基本的,可以改进,但你可以从中学习:

def asterisk():
    ast = "*"
    i = 1
    lines = int(input("How many asterisks do you want? "))
    space = " "
    for i in range(0, lines+1):
        print (lines * space, ast*i)
        lines -= 1
        i += 1

这将为您工作。

def printer(n):
    space=" "
    asterisk="*"
    i=1
    while(n>0):
        print((n*space)+(asterisk*i))
        n=n-1
        i=i+1
n=input("Enter a number ")
printer(n)

你的解决方案有几个问题,我不太确定你在那里想做什么。您创建了一个名为printRow的函数,但没有使用它。试着在调试时对代码进行一次演练。按照纸上写的去做。例如,写出每次迭代时变量的值以及每次迭代时的输出。它将帮助你找出你错在哪里。祝一切顺利!

正如Jeff L.提到的,你没有调用你的函数,所以你确实打印了一个空格,一个星号,然后是myLen的新值。

考虑到实际问题,我们试着从右到左,一条线一条线地画。首先计算空间的数量,以及每行的星星数量。打印出来,转到下一行

参见下面的代码:

space = ' ';
star = '*';
size = int(input("Enter number to make triangle: n"))
def printRow(current_row, max_row) :
    line = space * (max_row - current_row) + star * current_row;
    print(line)
if size<=0 :
    print("The value you entered is too small to display a triangle")
elif size>=40 :
    print("the value you entered is too big to display on a shell window")

for i in range(1, size + 1) :
    printRow(i, size);

相关内容

  • 没有找到相关文章

最新更新