在python中打印为中间字符串的长度
我尝试了排序(),但没有成功。在python中打印为中间字符串的长度,python,Python,我尝试了排序(),但没有成功。 我需要在不使用条件或循环的情况下解决这个问题 调用此函数时,它应返回一个星号(*)字符串,该字符串的长度与字符串参数的长度相同,且长度为中间值 def mid_string_of_stars(text1, text2, text3): maksimum=max(len(text1), len(text2), len(text3)) minimum = min (len(text1), len(text2), len(text3)) m
我需要在不使用条件或循环的情况下解决这个问题 调用此函数时,它应返回一个星号(*)字符串,该字符串的长度与字符串参数的长度相同,且长度为中间值
def mid_string_of_stars(text1, text2, text3):
maksimum=max(len(text1), len(text2), len(text3))
minimum = min (len(text1), len(text2), len(text3))
m=(maksimum+minimum)/2
middle_string='*'*m
return middle_string
这个怎么样
def mid_string_of_stars(text1, text2, text3):
maksimum=max(len(text1), len(text2), len(text3))
minimum = min (len(text1), len(text2), len(text3))
m = len(text1) + len(text2) + len(text3) - maksimum - minimum
# so that m is actually one of len(text1) or len(text2) or len(text3)
res = []
i = 0
while i<m:
res.append('*')
i = i + 1
return ''.join(res)
def中间字符串(text1、text2、text3):
maksimum=max(len(text1)、len(text2)、len(text3))
最小值=最小值(len(text1)、len(text2)、len(text3))
m=len(text1)+len(text2)+len(text3)-maksimum-最小值
#所以m实际上是len(text1)或len(text2)或len(text3)中的一个
res=[]
i=0
而我有几种方法可以解决这个问题
使用sorted
和索引似乎是最简单的(根据需要编写的代码量而言)。只需对三种长度进行排序,然后索引以获得中间的长度:
def mid_string_of_stars(text1, text2, text3):
order = sorted(map(len, (text1, text2, text3)))
return '*' * order[1]
另一种方法是使用arithmatic以及当前正在计算的最小值和最大值:
def mid_string_of_stars(text1, text2, text3):
maximum = max(len(text1), len(text2), len(text3))
minimum = min(len(text1), len(text2), len(text3))
middle = len(text1) + len(text2) + len(text3) - minimum - maximum
return '*' * middle
用另一种方法或编写最后一个代码时,将创建一个包含三个长度的元组的单个变量,然后在元组上使用sum
、min
和max
,以避免如此多的重复:
def mid_string_of_stars(text1, text2, text3):
lengths = (len(text1), len(text2), len(text3))
return '*' * (sum(lengths) - min(lengths) - max(lengths))
您的代码似乎正在查找最大和最小文本长度的平均值,这决不能保证等于中间长度
您可以尝试对文本长度进行排序,然后选择中间值。对于偶数的字符串,您可以将此数字四舍五入,然后选择两个中间值中的任意一个,但这是您的选择
这个代码对我有用:
text1 = 'hello'
text2 = 'my name'
text3 = 'is monty'
def mid_string_of_stars(text1, text2, text3):
lengths = sorted([len(text1),len(text2),len(text3)])
middle = round((len(lengths)-1)/2)
middle_length = lengths[middle]
middle_string = '*'*middle_length
return middle_string
希望这能有所帮助。看起来您的代码片段提供了平均值,而问题描述要求提供中值。您对排序的想法是正确的。您可以将字符串输入传递到数组,然后使用sort()修改列表(请参阅)然后获取中间元素的长度。我发现您已经知道如何使用len()然后创建“*”字符串,这样您就可以开始了。您的问题描述很难理解,也许可以提供一些示例输入和预期输出?当我给出3个字符串参数时,当字符串长度按升序或降序排列时,函数应该打印等于中间字符串长度的星号数。您可以st重复了你上面写的内容(很难理解),你能给出一个你要传入的三个字符串的例子,以及结果字符串的样子吗?@sedavidw据我所知,该函数以星号形式输出中间长度字符串的长度。如果dog
、helposer
和table
是字符串,则输出为****
。请欣赏他帮了我。现在我知道我在思考过程中忽略了什么。