Python水仙花、冥函数、质因数、完全数案例练习题!

Time will tell.

1.用for循环打印出所有水仙花数。

水仙花数是一个三位数,其各个位的数字的立方和等于该数本身。
如:153是一个水仙花数,153等于 1的3次方+5的3次方+3的3次方

代码:


for n in range(100,1000):
    i = n / 100
    j = n / 10 % 10
    k = n % 10
    if n == i ** 3 + j ** 3 + k ** 3:
        print n

2.将一个正整数分解成质因数。例如:输入90,打印出 90 = 2 * 3 * 3 * 5。

对 n 进行分解质因数,先找到一个最小的质数 k,然后按照下述步骤:

  1. 如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  2. 如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
  3. 如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

代码:


def reduceNum(n):
    print '{} = '.format(n),
    if not isinstance(n, int) or n <= 0 :
        print '请输入一个正确的数字 !'
        exit(0)
    elif n in [1] :
        print '{}'.format(n)
    while n not in [1] : # 循环保证递归
        for index in xrange(2, n + 1) :
            if n % index == 0:
                n /= index # n 等于 n/index
                if n == 1:
                    print index
                else : # index 一定是素数
                    print '{} *'.format(index),
                break
                
reduceNum(90)

3、用Python编写一个冥函数。


代码:


def s(x,t):
    m=1
    i=1
    while i<=t:
        m*=x
        i+=1
    return m

w=s(2,4)

print(w)

4.输入一个成绩分数,学习成绩>=90分的用A表示,60-89分之间的用B表示,60分以下的用C表示。


代码:


score = int(raw_input('输入分数:\n'))
if score >= 90:
    grade = 'A'
elif score >= 60:
    grade = 'B'
else:
    grade = 'C'

print '%d 属于 %s' % (score,grade)

5.随机输入一行字符,分别统计其英文字母、空格、数字和其它字符的个数。


代码:


import string
s = raw_input('请输入一个字符串:\n')
letters = 0
space = 0
digit = 0
others = 0
for c in s:
    if c.isalpha():
        letters += 1
    elif c.isspace():
        space += 1
    elif c.isdigit():
        digit += 1
    else:
        others += 1
print 'char = %d,space = %d,digit = %d,others = %d' % (letters,space,digit,others)

6、求s=a+aa+aaa+aaaa+aaaaa+ … 的值,a是一个数字。具体多少个数相加,由键盘随机输入。


代码:


Tn = 0
Sn = []
n = int(raw_input('n = '))
a = int(raw_input('a = '))
for count in range(n):
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
    print Tn

Sn = reduce(lambda x,y : x + y,Sn)
print "计算和为:",Sn

输出打印:


n = 4
a = 4
4
44
444
4444
计算和为: 4936

7、6=1+2+3。用代码找出1000以内的所有完全数。

完全数:一个数恰好等于它的真因子之和。

各个小于它的约数(真约数,列出某数的约数,去掉该数本身,剩下的就是它的真约数)的和等于它本身的自然数叫做完全数(Perfect number),又称完美数或完备数。

例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。


代码1:


from sys import stdout
for j in range(2,1001):
    k = []
    n = -1
    s = j
    for i in range(1,j):
            if j % i == 0:
                n += 1
                s -= i
                k.append(i)
   
    if s == 0:
        print j
        for i in range(n):
            stdout.write(str(k[i]))
            stdout.write(' ')
        print k[n]


代码2:

# 简洁版

from functools import reduce

def is_perfect_number2(num):
    if num == reduce(lambda x, y: x + y, [x for x in range(1, num) if not num % x]):
        return True
    else:
        return False


if __name__ == '__main__':
    for i in range(2, 1001):
        if is_perfect_number2(i):
            print(i)

8、一个球从100米高度自由落下,每次落地反跳原高度的一半,再落下,如此往复。求它在第10次落地时,共经过了多少米。第10次的弹跳高度是多少。


代码:


def bounce(num):
    height = 100
    total = 0
    for i in range(num):
        total += height
        height /= 2
    return total, height


if __name__ == '__main__':
    t, h = bounce(10)
    print("它在第10次落地时,共经过{}米,第10次反弹高度是{}".format(t, h))

结果为:

它在第10次落地时,共经过199.8046875米,第10次反弹高度是0.09765625米。

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


代码:


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

打印结果为:

1534

10、甲队为a,b,c三人,乙队为x,y,z三人。以抽签决定比赛名单,已知a不和x比,c不和x、z比,编程找出每个人的对战选手。


代码:


if __name__ == '__main__':
    w = [(i, j, k) for i in ['x', 'y', 'z'] for j in ['x', 'y', 'z'] for k in ['x', 'y', 'z']
         if i != j and j != k and i != k and i != 'x' and k not in ('x', 'z')]
    print('order is a -- %s\t b -- %s\tc--%s' % w[0])




Python水仙花、冥函数、质因数、完全数案例练习题!_第1张图片

絮叨

如果你对Python、自动化软件测试,和更多Ptyhon测试面试题感兴趣的话可以加入我们175317069一起学习,群里会有各项资料发放。也有行业深潜多年的测试人技术分析讲解。期待你的加入!

欢迎【评论】、【点赞】、【关注】礼貌三连~

Time will tell.(时间会证明一切)

你可能感兴趣的:(python,python,算法,程序设计,程序人生)