美文网首页
Python学习第一周之编程小练习

Python学习第一周之编程小练习

作者: RussellYoung | 来源:发表于2018-03-25 23:35 被阅读0次

    1,打印如下图所示菱形

       *
      ***
     *****
    *******
     *****
      ***
       *
    

    方法一:

    num = int(input('>>>')) 
    for i in range(-num//2,num//2+1):
        if i < 0:
            print(' '*(-i)+'*'*(num+2*i))
        else:
            print(' '*i+'*'*(num-2*i))
    

    方法二:

    for i in range(-3,4):
        print(' '*abs(i)+'*'*(7-2*abs(i)))
    

    2,打印下图所示对顶三角形

    *******
     *****
      ***
       *
      ***
     *****
    *******
    

    方法一:

    n=7
    e=n//2
    for i in range(-e,n-e):
        prespace = -i if i<0 else i 
        print(' '*(e-prespace)+'*'*(2*prespace+1))
    

    3,打印下图所示闪电形状

       *   
      **   
     ***   
    *******
       *** 
       **  
       * 
    
    for i in range(-3,4):
        if i<0:
            print(' '*(-i)+'*'*(i+4)+' '*3)
        elif i>0:
            print(' '*(3)+'*'*(4-i)+' '*i)
        else:
            print('*'*7)
    

    4,打印100以内的斐波那契数列

    方法一:

    a=0
    b=1
    c=0
    print(a,b,end=',')
    while True:
        c=a+b
        if c>100:
            break
        print(c,end=',') #将结果输出到同一行,并以,隔开
        a=b
        b=c
    

    方法二:精简版

    a=0
    b=1
    c=0
    while c < 100:
        print(c)
        c=a+b
        a, b = b,c  #封装与解构,等号右边的先算
    

    方法三:递归

    # 递归方式实现 生成前20项
    lis =[]
    for i in range(20):
        if i ==0 or i ==1:#第1,2项 都为1
            lis.append(1)
        else:
            lis.append(lis[i-2]+lis[i-1])#从第3项开始每项值为前两项值之和
    print(lis)
    

    5,打印九九乘法表

    方法一:

    for i in range(1,10):
        for j in range(1,i+1):
             print("%d*%d=%2d" % (i,j,i*j),end="  ")
        print (" ")
    
    1*1= 1   
    2*1= 2  2*2= 4   
    3*1= 3  3*2= 6  3*3= 9   
    4*1= 4  4*2= 8  4*3=12  4*4=16   
    5*1= 5  5*2=10  5*3=15  5*4=20  5*5=25   
    6*1= 6  6*2=12  6*3=18  6*4=24  6*5=30  6*6=36   
    7*1= 7  7*2=14  7*3=21  7*4=28  7*5=35  7*6=42  7*7=49   
    8*1= 8  8*2=16  8*3=24  8*4=32  8*5=40  8*6=48  8*7=56  8*8=64   
    9*1= 9  9*2=18  9*3=27  9*4=36  9*5=45  9*6=54  9*7=63  9*8=72  9*9=81
    

    方法二:使用format函数更方便

    for i in range(1,10):
        line = ''
        for j in range(1,i+1):
                line += '{}*{}={:<3}' .format(i,j,i*j)
        print(line)
    
    1*1=1  
    2*1=2  2*2=4  
    3*1=3  3*2=6  3*3=9  
    4*1=4  4*2=8  4*3=12 4*4=16 
    5*1=5  5*2=10 5*3=15 5*4=20 5*5=25 
    6*1=6  6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 
    7*1=7  7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 
    8*1=8  8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
    9*1=9  9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
    

    方法三:运用了三元表达式

    for i in range(1,10):
        line = ''
        for j in range(1,i+1):
                line += '{}*{}={:<{}}' .format(i,j,i*j,2 if j<4 else 3)
        print(line)
    # 与方法二相比,间隔变一样了
    1*1=1 
    2*1=2 2*2=4 
    3*1=3 3*2=6 3*3=9 
    4*1=4 4*2=8 4*3=124*4=16 
    5*1=5 5*2=105*3=155*4=20 5*5=25 
    6*1=6 6*2=126*3=186*4=24 6*5=30 6*6=36 
    7*1=7 7*2=147*3=217*4=28 7*5=35 7*6=42 7*7=49 
    8*1=8 8*2=168*3=248*4=32 8*5=40 8*6=48 8*7=56 8*8=64 
    9*1=9 9*2=189*3=279*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 
    

    方法四:打印右对齐九九乘法表

    for i in range(1,10):
        for k in range(1,i):
            print (end="       ")
        for j in range(i,10):
                print("%d*%d=%2d" % (i,j,i*j),end=" ")
        print("")
    
    1*1= 1 1*2= 2 1*3= 3 1*4= 4 1*5= 5 1*6= 6 1*7= 7 1*8= 8 1*9= 9 
           2*2= 4 2*3= 6 2*4= 8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
                  3*3= 9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
                         4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
                                5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 
                                       6*6=36 6*7=42 6*8=48 6*9=54 
                                              7*7=49 7*8=56 7*9=63 
                                                     8*8=64 8*9=72 
                                                            9*9=81 
    

    方法五:用format函数打印右对齐九九乘法表

    for i in range(1,10):
        s = ''
        for j in range(i,10):
            s += '{}*{}={:<{}} '.format(i,j,i*j, 2 if j<4 else 3)
        print('{:>80}'.format(s))
    
               1*1=1  1*2=2  1*3=3  1*4=4   1*5=5   1*6=6   1*7=7   1*8=8   1*9=9   
                      2*2=4  2*3=6  2*4=8   2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
                             3*3=9  3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
                                    4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
                                            5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
                                                    6*6=36  6*7=42  6*8=48  6*9=54  
                                                            7*7=49  7*8=56  7*9=63  
                                                                    8*8=64  8*9=72  
                                                                            9*9=81  
    

    6,给一个数,判断它是否是素数(质数)

    a=int(input('Please input a number greater than 1 : '))
    if a == 2:
        print('''It's a Prime number''')
    for i in range(2,a):
        if a%i == 0:
            print('''It's not a Prime number''')
            break
    else:
        print('''It's a Prime number''')
    

    相关文章

      网友评论

          本文标题:Python学习第一周之编程小练习

          本文链接:https://www.haomeiwen.com/subject/cutlcftx.html