python-3.x 写一个函数,它接受一个字符串列表,并在一个矩形框中每行打印一个字符串,需要小的编辑

v440hwme  于 2023-10-21  发布在  Python
关注(0)|答案(2)|浏览(130)

我写道:

p=input("words?")
def frame(*words):
    size = len(max(words, key=len))
    print('*' * (size + 4))
    for word in words:
        print('* {a:<{b}} *'.format(a=word, b=size))
    print('*' * (size + 4))
frame(p)

然而,如果我们输入abc xyz uxv vxu,答案如下:

*******************
* abc xyz uxv vxu *
*******************

而预期的答案应该是:

*******
* abc *
* xyz *
* uxv *
* vxu *
*******
m1m5dgzv

m1m5dgzv1#

p=input("words?")
def frame(words):
    size = len(max(words, key=len))
    print('*' * (size + 4))
    for word in words:
        print(f'* {word} *')
    print('*' * (size + 4))
frame(p.split(" "))

根据Olvin Roght's的建议,我编辑了打印以使用f字符串,并将 *words更改为words,因为您没有向函数传递可变数量的参数(?).信息args
这里是输出

对于不同长度的字符串:(我改为f字符串,因为我不明白格式方法的目的,但我已经再次测试,并在问题中提出的原始打印语句工作)

p=input("words?")
def frame(words):
    size = len(max(words, key=len))
    print('*' * (size + 4))
    for word in words:
        print('* {a:<{b}} *'.format(a=word, b=size))
    print('*' * (size + 4))
frame(p.split(" "))

输出:

ncecgwcz

ncecgwcz2#

p=input(“words?“)def frame(words):size = len(max(words,key=len))print('' (size + 4))对于单词中的单词:print(f' {word}')print('' *(size + 4))frame(p.split(““))

相关问题