Python练习题答案: 完成该模式#15【难度:2级】--景越Python编程实例训练营,1000道上机题等你来挑战

mac2026-04-01  5

完成该模式#15【难度:2级】:

答案1:

def getHorizontal(s,x): return s+s[1:]*(x-1) def pattern(n,x=1,y=1,*a): if n<1: return '' l, x, y = 2*n-1, max(1,x), max(1,y) sngl = [getHorizontal('{}{}{}'.format(z%10, ' '*(l-2*z), z%10 if z!=n else '').center(l), x) for z in range(1,n+1)] cross = sngl + sngl[:-1][::-1] return '\n'.join( cross + cross[1:]*(y-1) )

答案2:

def pattern(n,x=1,y=1,*args): lines=[]; x-=1 for i in range(1,n+1): line=' '*(i-1)+str(i)[-1]+' '*(n-i) line+=line[-2::-1] line+=line[1:]*x lines.append(line) pat=lines+lines[-2::-1] pat+=pat[1:]*(y-1) return '\n'.join(pat)

答案3:

def pattern(n, x=1, y=1, *_): pat = ["".join([" " * (i - 1), str(i % 10), " " * (n - i)]) for i in range(1,n+1)] pat = ["".join([i, i[-2::-1]]) for i in pat] pat = ["".join([i, i[1:] * (x-1)]) for i in pat] pat1 = "\n".join(pat + pat[-2::-1]) return '' if n<1 else pat1+('\n'+"\n".join(pat[1:] + pat[-2::-1]))*(y-1)

答案4:

pattern=lambda n,x=1,y=1,*args: "\n".join((lambda h: h+(["\n".join(h[1:]) for k in range(1,y)]))([(lambda r: "".join(r)+"".join(["".join(r[1:]) for j in range(1,x)]))([" "]*(i-1)+[str(i%10)]+[" "]*(2*(n-i)-1)+[str(i%10)]+[" "]*(i-1)) for i in range(1,n)]+[(lambda r: r+"".join([r[1:] for j in range(1,x)]) )(" "*(n-1)+str(n%10)+" "*(n-1))]+[(lambda r: "".join(r)+"".join(["".join(r[1:]) for j in range(1,x)]))([" "]*(i-1)+[str(i%10)]+[" "]*(2*(n-i)-1)+[str(i%10)]+[" "]*(i-1)) for i in range(n-1,0,-1)])) if n>0 else "" # this one-liner was not so easy :D Dedicated to my fellow codewarrior ChristianECooper: # knowing that my code can be read by someone that good and precise keeps me surely # motivated; against him I may have the upper hand just with regexes (and he # certainly is better at explaining), but I won't give up that easily ;)​

答案5:

m,r=lambda s:s+s[-2::-1],lambda s,n:s+s[1:]*n pattern=lambda n,h=1,v=1,*a:'\n'.join(r(m(list(r(m(' '*(i-1)+str(i%10)+' '*(n-i)),h-1)for i in range(1,n+1))),v-1))

答案6:

def pattern(n,x=1,y=1,*e): if n<1: return '' lines=[' '*i+str((i+1)%10)+' '*(2*(n-(i+1))-1)+str((i+1)%10)+' '*i for i in xrange(n-1)] lines+=[' '*(n-1)+str(n%10)+' '*(n-1)]+lines[::-1] totalh=lines for j in xrange(x-1): totalh=[totalh[i][:-1]+lines[i] for i in xrange(2*n-1)] totalv=list(totalh) for j in xrange(y-1): totalv+=totalh[1:] return '\n'.join(totalv)

答案7:

def pattern(n=1, x=1, z=1, *args): if n < 1: return "" if n == 1: return "1" if x <= 0: x = 1 if z <= 0: z = 1 result = [("1" + (" " * (n * 2 - 1 * 2 - 1))) * x + "1\n"] for i in range(2, n): result.append((((" " * (i - 1)) + str(i % 10) + (" " * (n * 2 - i * 2 - 1)) + str(i % 10) + (" " * (i - 2))) * x + " \n")) result.append(((" " * (n - 1)) + str(n % 10) + (" " * (n - 2))) * x + " \n") return ("".join(result) + "".join(reversed(result[1:n - 1]))) * z + ("1" + (" " * (n * 2 - 1 * 2 - 1))) * x + "1"

答案8:

def pattern(n, x = 1, y = 1, *args): if n < 1: return '' base = next_columns(base_pattern(n), x - 1) return '\n'.join(base + base[1:] * (y - 1)) def base_pattern(n): if n < 1: return '' upper = [' ' * (i - 1) + str(i % 10) + ' ' * (2 * (n - i) - 1) + str(i % 10) + ' ' * (i - 1) for i in range(1, n)] return '\n'.join(upper + [' ' * (n - 1) + str(n % 10) + ' ' * (n - 1)] + upper[::-1]) def next_columns(patt, x): return [row + row[1:] * x for i, row in enumerate(patt.split('\n'))]

答案9:

def pattern(n, x=1, y=1,*args): a = [] for i in range(n): inner = 2*n -3 -2*i ln = '{0}{1}{2}{3}{0}'.format(' '*i, (i+1)%10, ' '*(inner if inner>0 else 0), (i+1)%10 if i!=n-1 else '') a.append(ln) a = a + a[-2::-1] for i in range(len(a)): a[i] = a[i]+a[i][1:]*(x-1) a = a+a[1:]*(y-1) return "\n".join(a)

答案10:

def pattern(n, x=1, y=1, *argv): base_list = list(range(1, n + 1)) + list(range(1, n))[::-1] print('base_list', base_list) x_full_list = base_list + base_list[1:] * (x - 1) print('x_full_list', x_full_list) y_full_list = base_list + base_list[1:] * (y - 1) print(y_full_list) # base_string = ''.join(x_full_list) # print('base_string', base_string) result_list = [] for i in y_full_list: one_layer = '' for j in x_full_list: if i == j: one_layer += str(i % 10) else: one_layer += ' ' result_list.append(one_layer) return '\n'.join(result_list)

景越Python基础训练营QQ群

欢迎各位同学加群讨论,一起学习,共同成长!

最新回复(0)