我写道:
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 *
*******
答案 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
上的信息对于不同长度的字符串: (我更改为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(" "))