在x行上打印字符串的x个字符

2024-09-30 12:11:52 发布

您现在位置:Python中文网/ 问答频道 /正文

如何编写一个函数,以x个字母的部分反复打印一个单词,直到到达x行。例如,以下各项:

nelio("ab",3) 
print()
nelio("aybabtu",5) 

将打印:

aba
bab
aba

aybab
tuayb
abtua
ybabt
uayba

我从下面编写一个程序开始,它只打印整个单词x次,但不知道如何从这里开始

def nelio(word,size):
    i = 0    
    while i < size:
        print(word)
        i+=1      

if __name__ == "__main__":
    nelio("auto",3) 

Tags: 函数sizeab字母单词wordprintbab
3条回答

一个有趣的小方法是使用发电机。通常,您只需要使用^{},但如果您说无法导入,则没有问题:

def cycle_word(word):
    while True:
        for letter in word:
            yield letter

现在你可以用它来获得下一个字母:

def nelio(word, count):
    letters = cycle_word(word)
    for _ in range(count):
        new_word = ''.join(next(letters) for _ in range(count))
        print(new_word)

如果你不想处理模,只需要先展开单词,然后做一些简单的切片

def nelio(word, repeat):
    expanded_word = word
    while len(expanded_word) < repeat * repeat:
        expanded_word += word

    start = 0
    for _ in range(repeat):
        end = start + repeat
        print(expanded_word[start:end])
        start += repeat

if __name__ == '__main__':
    while True:
        answer = input('Give me a word, repeat [hello, 2]: ')
        word, repeat = answer.split(',')
        nelio(word, int(repeat))

结果

Give me a word, repeat [hello, 2]: ab, 3
aba
bab
aba
Give me a word, repeat [hello, 2]: aybabtu, 5
aybab
tuayb
abtua
ybabt
uayba
Give me a word, repeat [hello, 2]: 
def nelio(word,size):
    i = 0
    for line in range(size):
        for char in range(size):
            print(word[i % len(word)], end="")
            i += 1
        print()

if __name__ == "__main__":
    nelio("auto",3)
    print()
    nelio("ab",3) 
    print()
    nelio("aybabtu",5) 

输出:

aut
oau
toa

aba
bab
aba

aybab
tuayb
abtua
ybabt
uayba

相关问题 更多 >

    热门问题