任务如下:"您必须编写一个函数模式,该函数模式返回以下模式(参见模式和示例),最多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
答案 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()
在传递零或负值时为空。