一、打印正方形
##打印一个长度为n的正方形5
num = int (input("num:"))
for i in range(num): ##控制行数
for j in range (num): ##控制列数
print ("* ",end='')
print ()
##打印一个空心的长度为n的正方形
for i in range (num):
if i == 0 or i == (num-1) :
print ('* '*num)
else :
print ('* '+' '*(num-2)+'* ')
#边为3,则-1 0 1 --> range(-1,2)
#边为4,则-2 -1 0 1 --> range(-2,2)
#边为5,则-2 -1 0 1 2 --> range(-2,3)
#边为6,则-3 -2 -1 0 1 2 --> range(-3,3)
#规律:边长为n,则左边界为e=-n//2,右边界为n+e,即range(e,n+e)
n = int (input("长度:"))
e = -n//2
for i in range (e,n+e):
if i == e or i == n+e-1 :
print('* '*n)
else:
print('* '+' '*(n-2) + '*')
二、打印九九乘法表
for i in range(1,10):##外层循环控制打印行数
for j in range(1,10):
print(str(j)+'*'+str(i)+'=',i*j,end = " ")
if j==i:
#print()
break
print()
for i in range(1,10):##外层循环控制打印行数
for j in range(1,i+1):
print(str(j)+'*'+str(i)+'=',i*j,end = " ")
print()
for i in range(1,10):
line=''
for j in range(1,i+1):
line += str(j)+'*'+str(i)+'='+str(i*j)+' '
print(line)
for i in range(1,10):
line=''
for j in range(1,i+1):
line += "{}*{}={} ".format(j,i,i*j)
print(line)
for i in range(1,10):
for j in range(1,i+1):
if i==j:
endchar='\n'
else:
endchar=''
#endchar='\n' if i==j else '' ##三元表达式
print("{}*{}={} ".format(j,i,i*j),end=endchar)
##优化对齐
for i in range(1,10):
for j in range(1,i+1):
print("{}*{}={}{}".format(j,i,i*j, ' ' if j==2 and i<5 else ''),end='\n' if i == j else ' ')
##使用列表方式实现
for i in range(1,10):
line=[]
for j in range(1,i+1):
line.append("{}*{}={}".format(j,i,i*j))
print(*line)##参数结构,把列表中每个元素结构
##倒三角打印
for i in range(1,10):
line =''
for j in range(i,10):
line +='{}*{}={:<{}}'.format(i,j,i*j,2 if j<4 else 3 )
print('{:>60}'.format(line))
三、打印菱形
##打印菱形
##第一行打印:3个空格一个‘*’号3个空格
##第二行打印:2个空格3个‘*’号2个空格
##第三行打印:1个空格5个‘*’号1个空格
##第四行打印:0个空格7个‘*’号0个空格
##第五行打印:1个空格5个‘*’号1个空格
##第六行打印:2个空格3个‘*’号2个空格
##第七行打印:3个空格一个‘*’号3个空格
for i in range(-3,4): ##利用对称性,左闭右开
if i<0:
i = -i
print(' '*i + '*'*(7-2*i))
##改进
n=int(input('>>>'))
e=-(7//2)
for i in range(e,n+e):
if i<0:
i=-i
print(' ' * i + '*' * (7 - 2 * i))
n=int(input('>>>'))
e=-(7//2)
for i in range(e,n+e):
# if i<0:
# i=-i
print(' ' * abs(i) + '*' * (7 - 2 *abs(i))) ##abs()绝对值函数
##采用居中对齐的方式
#空格(绝对值) '*'号 空格(绝对值)
#3 1 3
#2 3 2
#1 5 1
#0 7 0
#1 5 1
#2 3 2
#3 1 3
n=7
e=7//2
for i in range(-e,n-e):
print ("{:^{}}".format('*'*(n-2*abs(i)),n))
四、打印对顶三角形
序号 | 对称序列 | 星号数 | 总空格数 | 前置空格 | 后置空格 |
---|---|---|---|---|---|
1 | 3 | 7 | 0 | 0 | 0 |
2 | 2 | 5 | 2 | 1 | 1 |
3 | 1 | 3 | 4 | 2 | 2 |
4 | 0 | 1 | 6 | 3 | 3 |
5 | 1 | 3 | 4 | 2 | 2 |
6 | 2 | 5 | 2 | 1 | 1 |
7 | 3 | 7 | 0 | 0 | 0 |
可以看出,只跟前导三角形,起点、终点有关
##居中对齐
for i in range (-3,4):
#print('{:^7}'.format('*'*(2*abs(i)+1)))
print('{:^{}}'.format('*'*(2*abs(i)+1),7))
##打印空格
for i in range(-3,4):
print(' '*(3-abs(i))+'{}'.format('#'*(2*abs(i)+1)))
##优化
n=int(input('>>>'))
e=n//2
for i in range(-e,n-e):
print("{}{}".format(' '*(e-abs(i)),'$'*(2*abs(i)+1)))
运行结果
*******
*****
***
*
***
*****
*******
五、打印闪电
#行号 *个数 前空格 后空格 总空格数 数据
#1 1 3 3 6 -3
#2 2 2 3 5 -2
#3 3 1 3 4 -1
#4 7 0 0 0 0
#5 3 3 1 4 1
#6 2 3 2 5 2
#7 1 3 3 6 3
#提示:找空格数规律
for i in range(-3,4):
if i<0:
print(' '* -i + (4+i) * '*')
elif i > 0:
print(' '*3 + (4-i)* '*')
else:
print('*'*7)
##优化
n=int(input('>>>'))
e=n//2
for i in range(-e,n-e):
if i<0:
print(' '* -i + (n-e+i) * '*')
elif i > 0:
print(' '*e + (n-e-i)* '*')
else:
print('*'*n)
运行结果
*
**
***
*******
***
**
*
六、打印举行
##打印一个长度为n的正方形5
num = int (input("num:"))
for i in range(num): ##控制行数
for j in range (num): ##控制列数
print ("* ",end='')
print ()
##打印一个空心的长度为n的正方形
for i in range (num):
if i == 0 or i == (num-1) :
print ('* '*num)
else :
print ('* '+' '*(num-2)+'* ')
#边为3,则-1 0 1 --> range(-1,2)
#边为4,则-2 -1 0 1 --> range(-2,2)
#边为5,则-2 -1 0 1 2 --> range(-2,3)
#边为6,则-3 -2 -1 0 1 2 --> range(-3,3)
#规律:边长为n,则左边界为e=-n//2,右边界为n+e,即range(e,n+e)
n = int (input("长度:"))
e = -n//2
for i in range (e,n+e):
if i == e or i == n+e-1 :
print('* '*n)
else:
print('* '+' '*(n-2) + '*')