美文网首页
Python 常见算法题

Python 常见算法题

作者: __RY__ | 来源:发表于2018-07-07 20:32 被阅读9次

打印菱形

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


n = 7
e = -(n//2)
for i in range(e,n+e):
    print(' '*abs(i)+'*'*(n-2*abs(i)))
   *
  * *
 *   *
*     *
 *   *
  * *
   *

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


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))
   *
  **
 ***
*******
   ***
   **
   *

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


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

打印直角三角

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

def triangle():
  for i in range(5):
       for i in range(5-i):
          print('*',end='')
      print()

打印等边三角形

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

n=5
j=1
for i in range(n-1,0,-1):
    print(' '*i+'*'*j)
    j+=2

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

a = 0
b = 1
print(a,b,end=' ')
while True:
    s = a+b
    if s > 100:
        break
    print(s,end=' ')
    a,b = b,s

#==========================

def fib(n):
    if n == 0:
        return 0
    elif n==1:
        return 1
    else:
        return fib(n-1) + fib(n-2)
print(fib(100))

#==========================

def fib(n):
    for i in range(n):
        a,b = 0,1
        while n>0:
            yield b
            a,b = b,a+b
            n -= 1
print(list(fib(100)))

求10万内的所有素数

count = 1
for i in range(3,100000,2):
    if i > 10 and i % 10 == 5:
        continue
    for j in range(3,int(i**0.5)+1,2):
        if i % j == 0:
            break
    else:
        count += 1
        print(i,count,end=' ') # 9592

猴子吃桃问题

猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第十天早上在想吃时,就只剩一个桃子了。求第一天共摘了多少个桃子?

peach = 1
for i in range(9):
    peach = (peach+1)*2
print(peach)

打印九九乘法表

1*1=1   
1*2=2   2*2=4   
1*3=3   2*3=6   3*3=9   
1*4=4   2*4=8   3*4=12  4*4=16  
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  


for i in range(1,10):
    for j in range(1,i+1):
        print('{}*{}={:<{}}'.format(j,i,i*j,2 if j<2 else 3),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




for i in range(1,10):
    line = ''
    for j in range(i,10):
        line += '{}*{}={:<{}}'.format(i,j,i*j,3 if j < 4 else 4)
    print('{:>70}'.format(line))


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 


for i in range(1,10):
    for j in range(i,10):
        print('{}*{}={:<4}'.format(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


for i in range(1,10):
    line = ''
    for j in range(1,i+1):
        line += '{}*{}={:<4}'.format(i,j,i*j)
    print('{:>75}'.format(line))

相关文章

网友评论

      本文标题:Python 常见算法题

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