函数传递
def func1(fun, num):
temp = pow(2, num)
fun(temp) # 调用传入的函数
def func2(num):
print(num)
# func1, func2是函数名,函数的引用
# func1(), func2()是调用函数
func1(func2, 100) #==> 1024
内置函数
def myFilter(function, iterable):
li = []
for temp in iterable:
ret = function(temp)
if ret:
li.append(temp)
return li
li = [11, 22, 33, 44, 55, 66]
ret = myFilter(lambda x:True if x > 22 else False, li)
print(ret)
# 自定义map
def myMap(function, iterable):
"""
自定义map方法
:param function:
:param iterable:
:return:
"""
li = []
for i in iterable:
ret = function(i)
li.append(ret)
return li
def function(args):
return args + 100
li = [11, 22, 33, 44, 55, 66]
newList = myMap(function, li)
print(newList)
文件管理
- 2.7 and 3.x
- 2.7有open和file方法,效果一样
- 3.x后把file方法去掉了,所以统一用open
- 基本操作
- 二进制操作
- 读写操作
- r+:用的最多
- 一进去如果不读,直接写,会在最前面插入
- 进去后如果有读取操作,不管指针在哪里,写入数据直接会在最后追加,可以通过seek调整指针后插入数据,但是会覆盖原位置上的字符
- w+:写读,创建或清空文件
- x+:写读,创建或者抛异常
- a+:追加
- 直接迭代file文件可以一行一行获取数据
模拟用户登陆界面
- str.strip():去除空格和换行符
- str.strip('char'):去除制定的字符
- 定义函数需要写注释"""文档注释""""
def main():
sel = input('请选择用户操作:1-登陆,2-注册')
if sel == '1':
userName = getUserName()
password = getPassword()
flag = False
with open('login.txt', mode='r', encoding='utf-8') as file:
for i in file:
userInfo = i.strip().split('&')
if userName == userInfo[0] and password == userInfo[1]:
flag = True
break
if flag:
print('登陆成功')
else:
print('登陆失败')
elif sel == '2':
userName = getUserName()
password = getPassword()
flag = False
with open('login.txt', mode='r+', encoding='utf-8')as file:
for i in file:
ls = i.strip().split('&')
if ls[0] == userName:
flag = True
break
if not flag:
file.write(userName)
file.write('&')
file.write(password)
file.write('\n')
print('注册成功')
else:
print("用户已经存在")
pass
else:
print('输入有误!')
面试题
- 函数式编程
- 面向对象
- 字节二进制转换
- http请求
- 数据库设计
- 算法(排序之类)
- 智力测试
冒泡排序
# 冒泡排序
li = [22, 3, 4, 5, 1, 32, 56, 4, 23, 67, 68, 66, 32]
def bobleSotr(ls):
for current in range(len(ls) - 1):
for i in range(len(ls) - 1 - current):
if ls[i] > ls[i + 1]:
temp = ls[i]
ls[i] = ls[i + 1]
ls[i + 1] = temp
bobleSotr(li)
print(li)
递归调用
- 作用:做计算器,小括号嵌套
- python自身有保护,递归调用次数超过某个值就会抛异常
- 斐波那契数列
- 0 1 1 2 3 5 8 13 21 34 55 89
def fun1(num):
if num == 1:
return 0
elif num == 2:
return 1
else:
return fun1(num - 1) + fun1(num - 2)
ret = fun1(9)
print(ret)