如何根据变量添加值?

2024-04-28 13:07:33 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我得到了一个任务,我必须创建一个函数,接收一个数字,并将该数字分成若干行,这些行基本上比前一行多出一个星号(例如,如果我有5行),我的打印将如下所示:

line 1-*
line 2-**
line 3-***
line 4-****
line 5-*****

我的代码如下所示:

def filastotal(n):
    ast = "*"
    for i in range (n):
        ast = ast + "*"
    return ast

cant = int(input("Ingrese la cantidad de filas: "))
total = filastotal(cant)
print(total)

所以我的想法是先用一个字符串做一个星号,然后为n中的每个元素再加一个星号,但当我运行这个程序时,我只得到我作为一行一行输入的星号数。我遇到的另一个问题是,我的老师说函数应该只做一件事,不应该在做其他事情的函数中读取或打印值,所以考虑到这个函数应该接收行数并使它们工作,那么它就不应该在它们内部打印

例如,如果我输入一个5,我会在同一行中得到5个相邻的星号,而不是

line 1-*
line 2-**
line 3-***
line 4-****
line 5-*****

我怎样才能解决这个问题


Tags: 函数代码inforreturndeflinerange
1条回答
网友
1楼 · 发布于 2024-04-28 13:07:33

弄清楚函数应该返回什么类型的值是很有帮助的。看起来你可以返回一个可能是字符串的列表。然后,你要做的一件事就是接受输入并做出那种类型的事情

例如,我们可能想要返回一个字符串。考虑到您只想打印值,这是有意义的。该字符串需要为每行("\n")包含一个换行符。一个很好的方法是使用"\n".join(),它接受一个iterable,然后连接成一个字符串。这使得问题非常简洁:

def filastotal(n):
    '''Take an integer n and returns a string with n lines'''
    ast = "*"
    return "\n".join(ast * n for n in range(1, n+1))

cant = int(input("Ingrese la cantidad de filas: "))

total = filastotal(cant)

print(total)

它运行:

Ingrese la cantidad de filas: 5
*
**
***
****
*****

注意表达式:ast * n将使用nast字符串生成一个字符串(即"$" * 5给出'$$$$$')。此外,我们在这里使用range(1, n+1),因为范围从零开始,不包括最后一个数字。但是当n为5时,我们需要1到5(包括)

相关问题 更多 >