簡體   English   中英

在多行上打印一個字符串

[英]Print a string on multiple lines

我需要以設定的間隔在多行上顯示一個字符串。 例如

如果字符串是ABCDEFGHI並且間隔是 3 那么它需要打印

ABC
DEF
GHI

現在,我有一個帶 2 個輸入的 function

def show_string(chars: str, interval: int) -> str:
    ...

請幫忙!

使用列表理解:

def show_string(chars: str, interval: int):
    [print(chars[obj:obj+interval]) for obj in range(0, len(chars), interval)]

您可以使用textwrap模塊中的內置 function wrap

from textwrap import wrap

def show_string(chars: str, interval: int):
    words = wrap(chars, interval)
    # Print the words
    for word in words:
        print(word)
    # Or return the list of words
    return words  # contains ['ABC', 'DEF', 'GHI']

看這個簡單的代碼:

test="abcdefghi"
x=[]
while len(test) != 0:
    x.append(test[:3])
    test=test[3:]

print(x)
print(''.join(x))

你可以試試這個,我用過while循環:

def foo(chars,intervals):
    i = 0
    while i < len(chars):
        print(chars[i:i+3])
        i+=3
foo("ABCDEFGHI",3)

您可以嘗試這可能比上一個答案更 Pythonic 的方式,但是這個 function 只返回 None,因為它只打印值

def show_string(chars: str, interval: int) -> None:

    [print(chars[i:i+interval]) for i in range(0, len(chars), interval)]

如果你要返回一個字符串列表,你可以簡單地重寫:

def show_string(chars: str, interval: int)-> list[str]:

    return [chars[i:i+interval] for i in range(0, len(chars), interval)]

我認為這樣的事情會有所幫助。

def show_string(chars: str, interval: int):
    for i in range(0, len(chars), interval):
        print(chars[i:i+interval]) 
from itertools import zip_longest 


def show_string(chars, interval):
    out_string = [''.join(lis) for lis in group(interval, chars, '')] 
    for a in out_string: 
        print(a)

# Group function using zip_longest to split 
def group(n, iterable, fillvalue=None): 
    args = [iter(iterable)] * n 
    return zip_longest(fillvalue=fillvalue, *args) 

show_string("ABCDEFGHI", 3)

Output:

ABC
DEF
GHI

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM