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