Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中打印为中间字符串的长度_Python - Fatal编程技术网

在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
是字符串,则输出为
****
。请欣赏他帮了我。现在我知道我在思考过程中忽略了什么。