Python模式创建问题

时间:2015-11-14 00:04:08

标签: python

任务如下:"您必须编写一个函数模式,该函数模式返回以下模式(参见模式和示例),最多n行和#34;。我的代码适用于小数字,但对于大数字则不适用。任何想法为什么???

示例模式(5)

54321
5432
543
54
5

这是我(看起来很笨拙)的尝试:

def pattern(n):
    if n < 1:
        return ""

    num_range = range(n+1)
    rev_num = []
    for number in reversed(num_range):
        rev_num.append(number)
    joined_rev_num = ''.join(str(e) for e in rev_num)
    joined_str = joined_rev_num.replace('0', '')

    l = []
    rang = n
    for digit in joined_str:
        l.append(joined_str[0:rang])
        l.append('\n')
        rang -= 1
    del l[-1]       
    final_string = str(''.join(str(e) for e in l))
    print final_string

2 个答案:

答案 0 :(得分:1)

我认为Galax指出为什么你的代码不适用于setTitle(),并且当某些数字使用多个字符时,它会通过字符串逐字符号来处理你的迭代器。

考虑到这一点,您的代码可以简化。很多。

n>=10

答案 1 :(得分:1)

已经发布了一个很好的答案,但这是我之前提出的答案:

def pattern(n):
    for x in range(n):
        print(''.join(str(y) for y in range(n,x,-1)))

没有必要测试n的值,因为range()在传递零或负值时为空。