Python经典基础编程练习题(三)——每日10题

1.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字,n是项数。例如:2+22+222+2222+22222(此时共有a=2,n=5)

from functools import reduce
Tn = 0
Sn = []
n = int(input('n = :'))
a = int(input('a = :'))
for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print (Tn)

S = reduce(lambda x,y : x + y,Sn)#注意reduce和匿名函数的用法,累加
print (S)

2.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程 找出1000以内的所有完数。

for j in range(2,1001):
    l = []
    n = -1
    s = j
    for i in range(1,j):
            if j % i == 0:
                n += 1
                s -= i
                l.append(i)
    if s == 0:
        print (j)
        for i in range(n):
            print(l[i],end=' ')
        print(l[n])

3.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

h=100
sum=0
for i in range(1,11):
    sum+=1.5*h
    h=0.5*h

print('共经过%f米' % sum)
print('第十次弹起高度为%f' % h)

4.斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。求斐波那契数列的第10项

def fib(n):
    if n == 1 or n == 2:
        return 1
    return fib(n - 1) + fib(n - 2)


# 输出了第10个斐波那契数列
print(fib(10))

5.将一个列表的数据复制到另一个列表中

a = [1, 2, 3]
b = a[:]#不能用b=a,否则a中元素变动,会影响b
print b

6.暂停5秒输出

import time

myD = {1: 'a', 2: 'b'}
for key, value in dict.items(myD):
    print (key, value)
    time.sleep(5)  # 暂停 5 秒

7.暂停5秒输出,并格式化当前时间。

import time

print (time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

# 暂停5秒
time.sleep(5)

print (time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))

8.有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?斐波那契数列(1,1,2,3,5,8,13,21)

f1 = 1
f2 = 1
for i in range(1,22):
    print ('%12ld %12ld' % (f1,f2))
    if (i % 3) == 0:
        print ('')
    f1 = f1 + f2
    f2 = f1 + f2

9.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

x2 = 1
for day in range(9,0,-1):
    x1 = (x2 + 1) * 2
    x2 = x1
print (x1)

10.打印如下图案

   *

  ***

 *****

*******

 *****

  ***

   *

for i in range(4):
    for j in range(2 - i + 1):
        print(end=' ')
    for k in range(2 * i + 1):
        print('*',end='')
    print('')

for i in range(3):
    for j in range(i + 1):
        print(end=' ')
    for k in range(4 - 2 * i + 1):
        print('*',end='')
    print('')

 

你可能感兴趣的:(Python编程练习)