python练习题


一,冒泡排序
data=[11334,123,1,3,2,123,4324,435,46,57,768,87,89,79,79,9,79879,8979,799]
# 冒泡排序,将前一位元素和之后的元素进行比对,继续进行下一次循环
l=len(data)
for i in range(l):
    for j in range(l-1):
        if data[i] < data[j]:
            data[i],data[j] = data[j],data[i]
print(data)
二,判断水仙花数

水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

for i in range(2,1000):
    #先获取数的百位,十位和个位数,用他们的3次方和来判断是否等于数的本身
    #获取数的百位数int(i / 100)
    #获取数的十位数int(i / 10 % 10)
    #获取数的个位数int(i % 10)
    if (int(i / 100) ** 3) + (int(i / 10 % 10) ** 3) + (int(i % 10) ** 3) == i:
        print("{}:是水仙数".format(i))
三,回文数判断

回文数:从左往右和从右往左读都是一样的数

1,判断一定范围的回文数:
def huiwen(num):
    snum = str(num)
    lenth = len(snum)
    if lenth < 3 or lenth > 7:
        print('您输入的数据{}不在判断范围,请重新输入长度为3-7的数据'.format(num))
    if lenth == 3:
        if snum[0] == snum[-1]:
            print('{}:是回文数'.format(num))
        else:
            print('{}:不是回文数'.format(num))
    elif lenth == 4 or lenth == 5:
        if snum[0] == snum[-1] and snum[1] == snum[-2]:
            print('{}:是回文数'.format(num))
        else:
            print('{}:不是回文数'.format(num))
    elif lenth == 6 or lenth == 7:
        if snum[0] == snum[-1] and snum[1] == snum[-2] and snum[2] == snum[-3]:
            print('{}:是回文数'.format(num))
        else:
            print('{}:不是回文数'.format(num))


inputData = input("请输入数据:")
huiwen(inputData)
2,直接翻转字符串判断
def huiwen2(num):
    snum =str(num)
    if snum == snum[::-1]:
        print('{}是回文数'.format(snum))
    else:
        print('{}不是回文数'.format(snum))
inputData = input("请输入数据:")
huiwen2(inputData)
 四,实现斐波那契数列

斐波那契数列的定义:

斐波那契数列指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)

1,迭代实现
#首先定义斐波那契的前两个数据
fib = [1,1]
max=int(input("请输入一个整数:"))
for i in range(2,max):
    #fib的前两个数据之后相加等于下一个数据
    x = fib[i-1]+fib[i-2]
    fib.append(x)
print(fib)
2,递归实现
def diguiFib(num):
    if num <= 2:
        return 1
    else:
        return diguiFib(num - 1) + diguiFib(num - 2)
for i in range(1, 21):
    print(diguiFib(i), end=' ')
五:输出九九乘法口诀表
#输出99乘法口诀表
for i in range(1,10):
    for j in range(1,i+1):
        print("%d*%d==%d"%(j,i,i*j),end='  ')
    print()