所以我有一個任務,我必須做一個函式,接收一個數字,并把這個數字變成一定數量的行,這些行基本上會比前一個行多一個星號(例如,如果我有5行,我的列印將看起來像這樣:
行 1-*
行 2-**
行 3-***
行 4-****
行5-*****
因此,我的代碼現在看起來像這樣:
def filastotal(n)。
ast = "*".
for i in range(n)。
ast = ast "*"/span>
return ast
cant = int(input("Ingrese la cantidad de filas: ")
總計 = filastotal(cant)
print(total)
所以我的想法是先用一個字串做一個星號,然后為n中的每個元素增加一個星號,但當我運行這個時,我只是得到我輸入的星號的數量,作為行,一個挨著一個。另外,我遇到的一個問題是,我的老師說函式只能做一件事,不能在做其他事情的函式中讀取或列印任何數值,所以考慮到這個函式應該接收行的數量并使它們作業,那么它就不應該在它們里面列印。 例如,如果我輸入一個5,我就會在同一行中得到5個星號,而不是
。行 1-*
行 2-**
行 3-***
行 4-****
行5-*****
我怎樣才能解決這個問題?
uj5u.com熱心網友回復:
弄清楚你的函式應該回傳什么型別的值是有幫助的。看起來你可以回傳一個串列,也許是一個字串。那么你想做的一件事就是接受輸入并做出這種型別的東西。
例如,也許我們想回傳一個字串。考慮到你想直接列印該值,這是有意義的。這個字串將需要為每一行包含一個換行符("
")。) 一個不錯的方法是使用"
".join(),它接收一個可迭代的字串并將其連接成一個字串。這使得問題變得超級簡單:
def filastotal(n)。
''取一個整數n并回傳一個有n行的字串''。
ast = "*"/span>
return "
".join(ast * n for n in range(1, n 1)
cant = int(input("Ingrese la cantidad de filas: ")
總計 = filastotal(cant)
print(total)
其中運行:
Ingrese la cantidad de filas: 5
**
***
****
*****
注意這個表達方式。ast * n將使一個字串與n ast字串(即"$" * 5得到'$$$$$')。另外,我們在這里使用range(1, n 1),因為范圍從零開始,不包括最后一個數字。但是當n是5時,我們希望1到5都包括在內。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/309281.html
標籤:
