【问题标题】:How do I write an iterative code for a single-lined pattern?如何为单行模式编写迭代代码?
【发布时间】:2020-03-15 04:39:27
【问题描述】:

我想寻求帮助,编写一个模式的迭代代码,它将通过以下测试用例:

pattern(1) gives *-

pattern(4) gives *-*--*---*----

pattern(6) gives *-*--*---*----*-----*------

我试过这样写,但它给了我 *- *- *- *- 代替

def pattern(number):
    result = "#-"
    for i in range(1,number):
            result += "#-"
    return result

【问题讨论】:

    标签: python string algorithm for-loop iteration


    【解决方案1】:

    您甚至不需要完整的 for 循环。你可以使用str.join 和一个简单的理解

    def pattern(number):
        return '*'.join('-' * n for n in range(number+1))
    
    >>> pattern(1)
    *-
    >>> pattern(4)
    *-*--*---*----
    >>> pattern(6)
    *-*--*---*----*-----*------
    

    【讨论】:

    • 我会在这里使用itertools 模块而不是map'*'.join(repeat("-", i) for i in range(1, number + 1)).
    • 或者那个生成器也很好:)
    • 这是解决此代码的一种有趣方法,尽管我还没有学会如何使用 join 函数。谢谢大家的帮助! :)
    【解决方案2】:

    你可以试试:

    def pattern(number):
        result = "*-"
        for i in range(1,number):
                result += "*" + "-"*(i+1)
        return result
    

    这给出了:

    >>> pattern(1)
    '*-'
    >>> pattern(4)
    '*-*--*---*----'
    >>> pattern(6)
    '*-*--*---*----*-----*------'
    

    【讨论】:

    • 感谢您的帮助!你是怎么得出结果 += "*" + "-"*(i+1) 的?
    • 字符串可以在 python 中相乘 - 见pythoncentral.io/use-python-multiply-strings
    • 您提供的网站对我的学习很有帮助。非常感谢!
    猜你喜欢
    • 2016-09-22
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多