Python练习(一)

一、打印正方形

##打印一个长度为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))

四、打印对顶三角形

序号对称序列星号数总空格数前置空格后置空格
137000
225211
313422
401633
513422
625211
737000

可以看出,只跟前导三角形,起点、终点有关

##居中对齐
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) + '*')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值