我試圖通過按照一個模式重復其專案來格式化一條訊息:
message = '123'
pattern = '** *** **** * **'
預期輸出:12 312 3123 1 23
下面是我目前的代碼,但卻是輸出。123 12 31 231 23
def main()。
message = "123"
pattern = "** ** ** **"
print(patterned_message(message, pattern))
def patterned_message(message, pattern)。
c = 0 message, pattern.
res = "": c = 0.
jstr = [x.strip(" ") for x in message ]
for i in pattern:
if c == (len(jstr))。
c=0
else:
if i == " "/span>:
res = " ".
else:
res = i.replace("*","{}".format(jstr[c]))
c = 1.
return res
if __name__ == '__main__'/span>:
main()
uj5u.com熱心網友回復:
你可以使用itertools.cycle作為一個生成器和一個小的串列理解:
from itertools import cycle
訊息 = '123'/span>
pattern = '** *** **** * **'.
x = cycle(message)
out = ''. join(next(x) if i == '*'/span> else ' ' for i in pattern)
print(out)
輸出。'12 312 3123 1 23'
對于Python學習者來說,這里有一個更經典的方法:
def patterned_message(message, pattern)。
out = [' ']*len(pattern)
n = 0
for i, char in enumerate(pattern)。
if char == '*'/span>:
out[i] = message[n%len(message)] 。
n =1
return ''/span>.join(out)
patterned_message('123', '** ** **** * **')
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/307838.html
標籤:
下一篇:如何在php中增加完整的字串?
