[英]How do I assign output of a function to a string variable?
我正在嘗試使用此 function 創建一個編號為 1-9 的 3 x 3 板:
board =(1,2,3,4,5,6,7,8,9)
def board_display():
print("_" *6)
for row in range(3):
print("".join((f"|{board[row*3+ position]}" for position in range(3))) + "|")
print("_" *6)
board_display()
Output:
|1|2|3|
______
|4|5|6|
______
|7|8|9|
______
現在我想將這個板分配給一個變量,比如“New_board”,這樣我就可以在其他函數中使用這個變量。 我怎樣才能做到這一點?
嘗試這個:
board='\n'.join(['|'+'|'.join(map(str,range(1+3*j,4+3*j)))+'|\n'+'-'*6
for j in range(3)])
這是結果:
>>> print(board)
|1|2|3|
------
|4|5|6|
------
|7|8|9|
------
如果可能的話,您應該簡單地將 append 所有行添加到一個列表中,然后將其與換行符連接起來(以模仿print()
的行為)。 像這樣:
def board_display():
res = []
res.append("_" *6)
for row in range(3):
res.append("".join((f"|{board[row*3+ position]}" for position in range(3))) + "|")
res.append("_" *6)
return "\n".join(res)
盡管我強烈反對它,但您可以使用contextlib
中的redirect_stdout()
。 然后您的代碼將如下所示:
import io
from contextlib import redirect_stdout
res = io.StringIO()
with redirect_stdout(res):
board_display()
output = res.getvalue() # Turn the StringIO() into 'str'
就像我說的,你絕對應該使用前面提到的方法(因為你可以修改函數)——但是把它當作一個有趣的事實和標准庫中隱藏的寶石。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.