python-----前面发布的练习题汇总

# 1、定义一个列表,要求该列表中的元素至少要包括字符串、整数、浮点数。(编写程序,将列表中 不是字符串的元素全部删除)

# 2、生成一个由100以内能够被5整除的数组的列表,然后将列表的数字从大到小排序。(下列介绍3种方法)

# 3. 创建一个元组,其中包含10个100以内的随机整数(练习+)
# import random
# t = tuple([random.randint(0, 100) for i in range(10)])
# print(t)
# 6. 题目:给出用户名列表和密码列表,三次输入机会
usr = {'zhangsan': '123', 'lisi': '567', 'wangwu': '890'}
ls_key = list(usr.keys())
ls_value = list(usr.values())
print(ls_key)
print(ls_value)

count = 0
while(count<=3):
    count += 1
    if count > 3:
        print('输入次数已超过3次')
        break
    usr = input('请输入用户名:')
    if usr not in ls_key:
        print('用户名输入错误')
        continue
    else:
        usr_pas = input('请输入用户密码:')
        if usr_pas == ls_value(ls_key.index(usr)):
            print('用户登录成功')
            break
        else:
            print('用户密码输入错误')
            continue
# 7. 给定节点个数,计算可能组成的二叉树个数(递归); 分析:二叉树是由左子树,右子树,根节点组成----转化成:左节点+右节点+根节点==fun(num_left) * fun(num_right)
def total_tree(num):
    if num in (0, 1):
        return 1
    else:
        result = 0
        for num_left in range(num):
            result += total_tree(num_left) * total_tree(num-num_left-1)
        return result

if __name__ == '__main__':
    # 给定节点个数,计算可能组成的二叉树个数
    print(total_tree(10))
# 8. 计算斐波那契数列:n=1,2 f(n-1)+f(n-2)=1; n>=3, f(n)=f(n-1)+f(n-2)   (递归)
def feibo(num):
    if num in (1, 2):
        return 1
    else:
        return feibo(num-1)+feibo(num-2)

if __name__ == '__main__':
    # 20个数的斐波那契数列
    for i in range(1, 21):
        print(feibo(i))

# 方法二:如何解决递归函数计算复杂度大的问题,采用缓冲区参与计算buffer(递归+buffer)
def feibo(n, buffer):
    result = 0
    if n in buffer:
        return buffer[n]
    elif n in (1, 2):
        buffer[n] = 1
        return 1
    else:

        result = feibo(n-1, buffer)+feibo(n-2, buffer)
        buffer[n] = result
        return result

if __name__ == '__main__':
    buffer = {}
    for i in range(1, 51):
        print(feibo(i, buffer))
"""9. 找出下列两个列表中所有含2个‘e’的名字并打印"""
# 方法一:
ls1 = ['tom', 'andew', 'jack',' jeef']
ls2 = ['steven', 'bill', 'alice', 'jennief', 'eve']
ls = []
for i in ls1+ls2:
    if i.count('e') == 2:
        ls.append(i)
print(ls)
# 方法2:列表推导式
ls = []
ls = [i for i in ls1+ls2 if i.count('e') == 2]
print(ls)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值