完成该模式#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 ""
答案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
)
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群
欢迎各位同学加群讨论,一起学习,共同成长!
转载请注明原文地址: https://mac.8miu.com/read-512745.html