Python 文本框列表
使用将提供一个包含多个项目的输入,其中每个项目由一个空格分隔。输入示例:Python 文本框列表,python,recursion,Python,Recursion,使用将提供一个包含多个项目的输入,其中每个项目由一个空格分隔。输入示例: star jupiter sun 然后输出将是 *********** * star * * jupiter * * sun * *********** *的长度取决于列表中最长的单词,其中最后一个字母后面应该有空格。我的代码的问题是我有一个固定长度*,它不依赖于最长单词的长度。较短单词右侧的*也与上述输出不一致。我有一个想法使用print((“”)随机最长单词的长度),但我不确定这是否可行。这是
star jupiter sun
然后输出将是
***********
* star *
* jupiter *
* sun *
***********
*
的长度取决于列表中最长的单词,其中最后一个字母后面应该有空格。我的代码的问题是我有一个固定长度*
,它不依赖于最长单词的长度。较短单词右侧的*
也与上述输出不一致。我有一个想法使用print((“”)随机最长单词的长度),但我不确定这是否可行。这是我的密码
s = str(input("Please enter a list of items seperated by a space:"))
print("*")
for word in s.split():
print("* " + word + " *")
print("*")
你可以用这一行来计算星星的长度
star_length = max(map(len, s.split())) + 2
这将star\u length
设置为最长单词的长度加上2。然后可以像这样输出它
print('*' * star_length)
for i in s.split():
print('* ' + i + (' ' * (star_length - len(i))) + ' *')
print('*' * star_length)
你可以用这一行来计算星星的长度
star_length = max(map(len, s.split())) + 2
这将star\u length
设置为最长单词的长度加上2。然后可以像这样输出它
print('*' * star_length)
for i in s.split():
print('* ' + i + (' ' * (star_length - len(i))) + ' *')
print('*' * star_length)
要查找最长的单词,您需要使用
max(listOfWords,key=lambda arg:len(arg))
此max
函数查找列表中最大的单词,并将使用key=function
对其进行排序。在这里,函数返回其参数的长度,因此它将按长度对其排序max
查找最大值
现在,您需要将其括在一个len()
中,以找出长度,并添加2,以查看应在顶部和底部放置多少颗星。例如,可以将字符串与数字相乘
“abc”*3将给出
abcabc`
如果要将*
字符相乘,则可能需要执行此操作
print(“*”*(len(max(listOfWords,key=lambda arg:len(arg)))+2))
记住乘法,即使是字符串,也比加法更紧密,所以我们必须使用括号
下一部分,我们需要使用类似的方法在线条的末端填充空格。我们想从最长单词的长度中减去单词的长度,得到我们需要填充的空间量
print(“*”+word+(len(word)-(len(max(listOfWords,key=lambda arg:len(arg)))+2))*”+“*”
最后一行与第一行相同。下面是完整的代码:
s = str(input("Please enter a list of items seperated by a space:"))
print("*" * (len(max(listOfWords, key=lambda arg: len(arg))) + 2))
for word in listOfWords:
print("* " + word + (len(word) - (len(max(listOfWords, key=lambda arg: len(arg))) + 2)) * " " + " *")
print("*" * (len(max(listOfWords, key=lambda arg: len(arg))) + 2))
此代码非常混乱,因此我可能犯了一个错误。要查找最长的单词,您需要使用
max(listOfWords,key=lambda arg:len(arg))
此max
函数查找列表中最大的单词,并将使用key=function
对其进行排序。在这里,函数返回其参数的长度,因此它将按长度对其排序max
查找最大值
现在,您需要将其括在一个len()
中,以找出长度,并添加2,以查看应在顶部和底部放置多少颗星。例如,可以将字符串与数字相乘
“abc”*3将给出
abcabc`
如果要将*
字符相乘,则可能需要执行此操作
print(“*”*(len(max(listOfWords,key=lambda arg:len(arg)))+2))
记住乘法,即使是字符串,也比加法更紧密,所以我们必须使用括号
下一部分,我们需要使用类似的方法在线条的末端填充空格。我们想从最长单词的长度中减去单词的长度,得到我们需要填充的空间量
print(“*”+word+(len(word)-(len(max(listOfWords,key=lambda arg:len(arg)))+2))*”+“*”
最后一行与第一行相同。下面是完整的代码:
s = str(input("Please enter a list of items seperated by a space:"))
print("*" * (len(max(listOfWords, key=lambda arg: len(arg))) + 2))
for word in listOfWords:
print("* " + word + (len(word) - (len(max(listOfWords, key=lambda arg: len(arg))) + 2)) * " " + " *")
print("*" * (len(max(listOfWords, key=lambda arg: len(arg))) + 2))
这段代码很混乱,所以我可能犯了一个错误。
print('*{}{}*'.format(I),*(star_length-len(I))
的可读性要高得多如果我的输入用coma而不是空格分隔,我有可能得到相同的输出吗?昏迷不应该在昏迷中output@user7043763差不多,但是你需要的不是s.split()
,而是s.split(',')
。map函数是什么?map(A,B)将返回B,但是B的每一项都应用于A。基本上,map(q,[“A”,“B”,“c”])
返回[q(“A”),q(“B”),q(“c”)
打印('*{}{}*'.format(i,,*(star_length-len(i)))
可读性更高如果我的输入用coma而不是空格分隔,我有可能得到相同的输出?coma不应该在output@user7043763差不多,但是您需要的不是s.split()
,而是s.split(',')
。map函数是什么?map(A,B)将返回B,但B的每一项都已应用于A。基本上,map(q、[“A”、“B”、“c”)
返回[q(“A”)、q(“B”)、q(“c”)]
。最好使用max(map(len,listOfWord))
而不是使用带关键参数的max
,因为在这种情况下单词本身并不重要,只是长度而已。@EliSadoff这是个好主意,但是我从来没有理解Python中的map
函数-它不像我期望的那样返回列表在Python 2中它返回一个列表,而在Python 3中它返回一个mappa可映射对象。这是因为python 3具有延迟迭代,这意味着如果您想将函数应用于不需要完全映射的结果对象,它将不会完全映射。如果您想从python 3中的映射中获取列表,您可以使用list(map(…)
@EliSadoff非常感谢!这有助于加载!不用担心,python是一种非常有趣的语言。我从其他用户那里学到了很多东西。如果你在这里保持活跃,你将真正了解该语言。你最好使用max(map(len,listOfWord))
而不是将max
与关键参数一起使用,因为在这种情况下,单词本身并不重要,只是长度而已。@EliSad