我一直想弄清楚這個問題,但完全卡住了。我已經用R語言編碼多年,最近一直在嘗試學習Python。
我想在 Python 中創建一個函式,該函式接收一個字串串列并回傳一個新的字串串列,每個字串都用空白填充,以便在列印時居中。
以一個給定的串列為例:
a = ["I LIKE"/span>,"Dogs"/span>,"Black Dogs, Green Dogs"/span>, "壞狗,卑鄙的狗","所有種類的狗","我喜歡狗", "狗"]
應該回傳為:
I LIKE
犬類
黑狗,綠狗
.
.
等
到目前為止,我有這樣的做法,但它顯然不能正常作業。我也不知道我是否因為有多個for回圈而想多了?
def center_me(x)。
num = 0 x.
long_num = 0: num = 0.
for i in a:
if len(i) > long_num:
long_num = len(i)
res = i
ssv = len(res)
for i in a:
max = len(i)
if len(a) > num:
new = ssv - max
print(" "/span> * new, i, " "/span> * new)
# test itdef simple_test()。
a = ["我喜歡","狗","黑狗,綠狗","壞狗。卑鄙的狗","所有種類的狗","我喜歡狗", "狗"]
for e in center_me(a):
print(e)
uj5u.com熱心網友回復:
嘗試:
a = [
"I LIKE"/span>,
"狗"。
"黑狗,綠狗"。
"壞狗,惡狗"。
"所有種類的狗"。
"我喜歡狗"。
"狗",
]
max_len = len(max(a, key=len)
for s in a:
print(" " * (max_len // 2 - len(s) // 2) s)
印刷品:
I LIKE
犬類
黑狗、綠狗
壞狗,壞狗
所有種類的狗
我喜歡狗
狗狗
uj5u.com熱心網友回復:
也許你想自己寫代碼,但如果你只是想得到一些能用的東西,用普通的Python語言:
a = [
"I LIKE"/span>。
"狗"。
"黑狗,綠狗"。
"壞狗,惡狗"。
"所有種類的狗"。
"我喜歡狗"。
"狗",
]
for line in a:
print(f'{line: ^{len(max(a, key=len))}s}' )
這使用一個f-string的型別:
print(f'{x:^10s}')
這將列印出x居中的10個位置。
如果你確實想自己做這些作業,那么這么多的回圈絕對是想多了。
請考慮一下:
def center_these(xs)。
m = len(max(a, key=len)
for x in xs:
space = m - len(x)
print(' ' * (space // 2) x ' ' * (space // 2 space % 2)
center_these(a)
這個函式的作業原理是計算串列中的最大長度,然后對于串列中的每個字串,列印其長度與最大長度之差的一半的空格數(向下取整),然后是字串本身,然后再列印相同的空格數,但要加上余數。
例如:如果m是10,而你要列印short,那么short的長度是5,(8-5)//2是2,而(8-5)% 2是1,所以列印出來的是' ' * 2 'short' ' * (2 1)
如果你不需要在每行實際列印相同數量的字符,并且很樂意讓這一行提前結束,你也可以:
def center_these(xs)。
m = len(max(a, key=len)
for x in xs:
print(' '/span> * ((m - len(x)) // 2) x)
這與@AndreyKesely的建議相似。
既然你剛剛開始學習Python,這里的關鍵收獲是Python允許你相當靈活地使用算術運算:
# this is 'aaa'/span>
'a' * 3
# 這是'niiice'
'n'/span> 'i'/span> * 3 'ce'/span>
當然,你需要了解所有的基本數學運算子,如//(整數除法)和%(modulo,即整數除法余數)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/324437.html
標籤:
