Python学习--最完整的基础知识大全
关于python的基础知识学习,网上有很多资料,今天我就把我收藏的整理一下分享给大家!
下面是我基础学习时的一点记录:
python3 循环语句
1. while
n=10sum = 0counter = 1while counter < n: sum = sum + counter counter += 1print("1到%d之和为:%d" %(n, sum))#while 循环使用 else 语句count = 0while count < 5: print (count, " 小于 5") count = count + 1else: print (count, " 大于或等于 5")
2. for
#可以使range以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长')for i in range(0, 10, 3): print(i)for i in range(-10, -100, -30): print(i)a_list = ['google', 'baidu', 'ie', 'firefox', '360']for i in range(len(a_list)): print(i, a_list[i])#使用range创建列表b_list = list(range(8))print(b_list)
3. break和continue
#使用break终止循环for letter in 'helloworld': if letter == 'r': break print("当前字母为:", letter)#使用continue跳过循环for letter in 'helloworld': if letter == 'l': continue print("当前字母为:", letter)
4. pass语句
#说明:pass就是一条空语句。在代码段中或定义函数的时候,如果没有内容,或者先不做任何处理,直接跳过,就可以使用pass。for letter in 'helloworld': if letter == 'l': pass print("执行pass块") print("当前字母为:", letter)
5. 使用enumerate函数进行遍历
c_list = [12, 34, 56, 78, 90]for i, j in enumerate(c_list): print(i, j)
6. 小练习
循环练习
for i in range(1, 6): for j in range(1, i+1): print('*',end='') print('\r')
9*9乘法表
for i in range(1, 10): for j in range(1, i+1): print("%d * %d = %d" %(j, i, i*j), end='\t') print('\r')
冒泡排序
def paixu(d_list): for i in range(0, len(d_list)): for j in range(i+1, len(d_list)): if d_list[i] >= d_list[j]: tmp = d_list[i] d_list[i] = d_list[j] d_list[j] = tmp print(d_list)li = [32, 23, 65, 32, 76, 79, 56, 89, 12]paixu(li)
Python3 迭代器与生成器
迭代器
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
import sysit = iter(c_list)print(c_list)print(next(it))for x in it: print(x, end=' ')it1 = iter(c_list)while True: try: print(next(it1)) except StopIteration: sys.exit()
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
调用一个生成器函数,返回的是一个迭代器对象。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。生成器函数
def fibonacci(n): a = 0; b = 1; counter = 0; while True: if (counter > n): return yield a a, b = b, a + b counter += 1#生成器函数返回一个迭代器fibo = fibonacci(10)while True: try: print(next(fibo), end=' ') except: sys.exit()
函数
函数传入不定长参数
#加了星号(*)的变量名会存放所有未命名的变量参数。如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。def printinfo(arg1, *vartuple): "打印任何传入的参数" print("输出:") print(arg1) for var in vartuple: print(var) returnprintinfo(10)printinfo(10, 20, 30)
匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda arg1, arg2: arg1 + arg2print(sum(10,20))
变量的作用域
Python中变量的作用域一共有4种,分别是:
- L (Local) 局部作用域
- E (Enclosing) 闭包函数外的函数中
- G (Global) 全局作用域
- B (Built-in) 内建作用域
以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内建中找。
B = int(2.9) # 内建作用域G = 0 # 全局作用域def outer(): E = 1 # 闭包函数外的函数中 def inner(): L = 2 # 局部作用域
一个完整的demo
import pickleimport osdatafile = 'C:\\Users\\root\\Desktop\\PyDemo\\person.data'line = '#########################################'message = '''#######################################*Welcome bookmark: ** press 1 to show list ** press 2 to add pepole ** press 3 to edit pepole ** press 4 to delete pepole ** press 5 to search pepole ** press 6 to show menu ** press 0 to quit *#######################################'''#打印菜单栏print(message)#创建一个人类,有姓名和电话号两个属性class Person(object): def __init__(self, name, number): self.name = name self.number = number#获取数据def get_data(filename = datafile): if os.path.exists(filename) and os.path.getsize(filename): with open(filename, 'rb') as f: return pickle.load(f) return None#写入数据def set_data(name, number, filename = datafile): personList = {} if get_data() == None else get_data() with open(filename, 'wb') as f: personList[name] = Person(name, number) pickle.dump(personList, f)#保存字典格式的数据到文件def save_data(dictPerson, filename = datafile): with open(filename, 'wb') as f: pickle.dump(dictPerson, f)#显示所有联系人信息def show_all(): personList = get_data() if personList: for v in personList.values(): print(v.name, v.number) print(line) else: print('空空如也,请添加联系人!') print(line)#添加联系人def add_person(name, number): set_data(name, number) print('添加联系人成功!') print(line)#更新联系人def edit_person(name, number): personList = get_data() if personList: if name in personList.keys(): personList[name] = Person(name, number) save_data(personList) print('更改联系人信息成功!') else: print('查无此人', name, ',请重试!') print(line)#删除联系人def del_person(neme): personList = get_data() if personList: if name in personList: del personList[name] save_data(personList) print('删除联系人成功!') else: print(name, '不存在!') print(line)#查询联系人def find_person(name): personList = get_data() if personList: if name in personList.keys(): print(personList.get(name).name, personList.get(name).number) else: print('查无此人!', name) print(line)while True: num = input('>>>') if num == '1': print('查看所有联系人:') show_all() elif num == '2': print('添加联系人:') name = input('请输入联系人姓名 >>') number = input('输入联系人电话号 >>') add_person(name, number) show_all() elif num == '3': print('更新联系人:') name = input('请输入联系人姓名 >>') number = input('输入联系人电话号 >>') edit_person(name, number) show_all() elif num == '4': print('删除联系人:') name = input('请输入联系人姓名 >>') del_person(name) show_all() elif num == '5': print('查找联系人:') name = input('请输入联系人姓名 >>') find_person(name) elif num == '6': print(message) elif num == '0': break else: print('输入错误,请重试!')
我的个人微信订阅号:【Java编程社区】 欢迎你的加入!