python学习习题总结(2)——正方形,菱形,九九乘法表

#正方形
#三种状态分别逐行打印
sideLen = int(input('>>>'))
print('*'*sideLen)
for i in range(sideLen-2):
    print('*',' '*(sideLen-2),'*',sep='')
print('*'*sideLen)
#二维矩阵,单个字符逐行打印
for i in range(sideLen):
    for j in range(sideLen):
        if i == 0 or i == sideLen-1:
            print('*',end='')
        else:
            if j==0 or j == sideLen-1:
                print('*',end='')
            else:
                print(' ',end='')
    print()
#两种情况逐行打印
top = '*'*sideLen
mid = '*'+ ' '*(sideLen-2)+'*'
for i in range(sideLen):
    if i == 0 or i == (sideLen-1):
        print(top)
    else:
        print(mid)


#菱形,找对称,三元表达式
space = ' '
pixel = '*'
number = int(input('请输入一个奇数:'))
middle = (number-1)//2
for i in range(-middle,middle+1):
    print(space*abs(i),pixel*(number-2*abs(i)),sep='')   
#意外打出箭头
for i in range(-middle,middle+1):
    print(space*(middle-abs(i)),pixel*(number-2*abs(i)),sep='')
##箭头
for i in range(-middle,middle+1):
    print(space*3*abs(i),pixel*(number-2*abs(i)),sep='')
##闪电    
for i in range(-middle,middle+1):
    print(space*(middle-abs(i)),pixel*(1+2*abs(i)),sep='')
##漏斗    
for i in range(-middle,middle+1):
    if i > 0:
        print(space*abs(i),pixel*(middle-abs(i)+1),sep='')
    elif i < 0:
        print(space*middle,pixel*(middle-abs(i)+1),sep='')
    else:
        print(pixel*number)
###另一种实现 单字符逐行打印
#菱形
for i in range(-middle,middle+1):
    for j in range(-middle,middle+1):
        if abs(i)+abs(j) >= middle+1:
            print(space,end='')
        else :
            print(pixel,end='')
    print()
#闪电    
for i in range(-middle,middle+1):
    for j in range(-middle,middle+1):
        if (i < 0 and j > 0) or (i > 0 and j < 0):
            print(space,end='')
        else:
            if abs(i)+abs(j) >= middle+1:
                print(space,end='')
            else :
                print(pixel,end='')
    print()
#漏斗
for i in range(-middle,middle+1):
    for j in range(-middle,middle+1):
        if abs(i) >= abs(j):
                print('*',end='')
        else:
                print(' ',end='')
    print()


#九九乘法表,三元表达式,format格式化
#将每一个小单元格式化,组成一个大单元
for i in range(1,10):
    s = ''
    for j in range(1,i+1):
        s += '{}*{}={:<{}} '.format(j,i,i*j,1 if j==1 else 2)
    print(s)
print('……'*20)
for i in range(1,10):
    s = ''
    for j in range(i,10):
        s += '{}*{}={:<{}} '.format(i,j,i*j,1 if j<4 else 2)
    print('{:>60}'.format(s))
print('……'*20)
for i in range(1,10):
    print(' '*7*(i-1),end='')
    for j in range(i,10):
        print('{}*{}={:<{}}'.format(i,j,i*j,2),end=' ')
    print()
print('……'*20)
#不同点在乘积的宽度
for i in range(1,10):
    for j in range(1,i+1):
        product = str(i*j)
        if j>1 and i*j<10:
            product += ' '
        print('{}*{}={} '.format(i,j,product),end='')
    print()


猜你喜欢

转载自blog.csdn.net/qq_33287645/article/details/79684591