编写一个函数,该函数接受一个字符串列表,并在矩形框架中每行打印一个字符串。需要少量编辑

时间:2019-05-07 15:48:26

标签: python python-3.x

我写道:

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 *
*******

1 个答案:

答案 0 :(得分:1)

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,因为您没有将可变数量的参数传递给function(?)。 args

上的信息

这是输出enter image description here

对于不同长度的字符串: (我更改为f字符串,因为我不了解format方法的用途,但是我再次进行了测试,并且问题中的原始打印语句起作用了。)

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(" "))

输出: enter image description here