因此,我得到了一个任务,我必须创建一个函数,接收一个数字,并将该数字分成若干行,这些行基本上比前一行多出一个星号(例如,如果我有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-*****
我怎样才能解决这个问题
弄清楚函数应该返回什么类型的值是很有帮助的。看起来你可以返回一个可能是字符串的列表。然后,你要做的一件事就是接受输入并做出那种类型的事情
例如,我们可能想要返回一个字符串。考虑到您只想打印值,这是有意义的。该字符串需要为每行(
"\n"
)包含一个换行符。一个很好的方法是使用"\n".join()
,它接受一个iterable,然后连接成一个字符串。这使得问题非常简洁:它运行:
注意表达式:
ast * n
将使用n
ast字符串生成一个字符串(即"$" * 5
给出'$$$$$'
)。此外,我们在这里使用range(1, n+1)
,因为范围从零开始,不包括最后一个数字。但是当n
为5时,我们需要1到5(包括)相关问题 更多 >
编程相关推荐