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

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''')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容