我尝试在框架和对角线上打印'*'。
这就是我做的:
x=10
y=10
def print_frame(n, m, c):
print c * m
for i in range(1, n - 1):
print c ,' '*(n-2-i),c, ' '*i , c , c
print c * m
print_frame(10, 10, '*')
这是结果:
**********
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
**********
正如我在评论中指出的那样,只有方形矩阵具有对角线。但即使对于那些人来说,事情也比他们看起来“有点”复杂:
code.朋友:
#!/usr/bin/env python3
import sys
def print_square_frame(side, char="*"):
print(char * side) # Upper row
if side == 1:
return
for i in range(side // 2 - 1):
print(char + " " * i + char + " " * (side - 2 * i - 4) + char + " " * i + char)
if side % 2:
print(char + " " * ((side - 3) // 2) + char + " " * ((side - 3) // 2) + char) # Mid row
for i in range(side // 2 - 2, -1, -1):
print(char + " " * i + char + " " * (side - 2 * i - 4) + char + " " * i + char)
print(char * side) # Lower row
# Recursion
def _print_square_frame_rec(side, char, i):
if i == side // 2 - 1:
if side % 2 :
print(char + " " * ((side - 3) // 2) + char + " " * ((side - 3) // 2) + char) # Mid row
return
else:
s = char + " " * i + char + " " * (side - 2 * i - 4) + char + " " * i + char
print(s)
_print_square_frame_rec(side, char, i + 1)
print(s)
def print_square_frame_rec(side, char="*"):
print(char * side)
if side == 1:
return
_print_square_frame_rec(side, char, 0)
print(char * side)
# Recursion end
def main(argv):
dim = 10
if argv:
if argv[0].isdigit():
dim = int(argv[0])
print_square_frame(dim)
if __name__ == "__main__":
print("Python {:s} on {:s}\n".format(sys.version, sys.platform))
main(sys.argv[1:])
输出:
[cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q055342983]> "e:\Work\Dev\VEnvs\py_064_03.06.08_test0\Scripts\python.exe" code.py Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32 ********** ** ** * * * * * * * * * ** * * ** * * * * * * * * * ** ** ********** [cfati@CFATI-5510-0:e:\Work\Dev\StackOverflow\q055342983]> "e:\Work\Dev\VEnvs\py_064_03.06.08_test0\Scripts\python.exe" code.py 7 Python 3.6.8 (tags/v3.6.8:3c6b436a57, Dec 24 2018, 00:16:47) [MSC v.1916 64 bit (AMD64)] on win32 ******* ** ** * * * * * * * * * * * ** ** *******