Python系列教程
第1章 Python 语言概述
Python编程规范+最佳实践
python文件:.py,.ipynb, pyi, pyc, pyd, pyo都是什么文件?
第1章必背的内容
第2章 Python基础
字符串切片
Python数据类型大战:可变与不可变,谁主沉浮?
Python「布尔类型」:不只是True和False!
Python「枚举类型」:你真的了解枚举类型吗?
Python字符串格式化:哪种字符串格式化方法最快?
Python字符串编码:为什么你的网页显示乱码?
Python「内置变量」:不只是变量,更是编程的魔法!
Python变量的作用域,你真的了解吗?
Python中如何使用F-Strings格式化浮点数
第2章必备的内容
第3章 流程控制和异常处理
加速Python for循环
for循环
Python三元表达式:让代码简洁与效率提升成为可能
Python「While循环」:何时打破循环?
Python「异常处理」:程序出错了?不慌
这样可以减少IF语句的使用,从此告别if-else噩梦
Python循环加速的秘方,可提速上千倍!
如何在Python中优雅地使用断言?这篇文章给你答案!
Python异常处理:12个异常处理技巧,你掌握了几个?
Python中的and和or你真的会用吗,代码逻辑竟然可以如此简单!
Python的else子句7个妙用,原来还能这样用,整挺好!
快来看!Python写代码,没有pass怎么行?
第三章 必背的内容
第4章 高级数据结构
Python字典嵌套:编程界的俄罗斯套娃
Python「类型注解」:如何让你的Python代码够清晰?
列表越界了?来学学Python列表的花式操作!
Python字典的这些黑科技,你用过几个?
Python元组:为何你的代码需要这个'不变'的伙伴?
试试Python具名元组NamedTuple吧!用过的都说好
Python中的5种队列数据结构,你知道几个?
itertools模块让你的代码原地起飞!
第5章 正则表达式
正则表达式
本文档使用 MrDoc 发布
-
+
首页
第三章 必背的内容
```python # coding=utf-8 # @作者: 张泽楠 # @时间: 2024/6/18 15:29 # if条件判断 # 使用场景:当编程逻辑中出现“如果”或“否则”就可以考虑使用if语句 # if语句的语法1:单分支判断 # if 判断条件: # 执行语句 ## 案例1:用户从终端输入一个年龄,变量表示为age,如果大于等于18则输出可以上网 # age = input("请输入学生年龄:") # age = int(age) # if age >= 18: # print('可以上网') ## 案例2:用户从终端输入用户名,变量表示为name,再输入密码,变量表示为psw ## 如果用户名为root并且密码为123456,则提示登录成功 # and表示并且 # name = input('请输入用户名:') # psw = input('请输入密码:') # if name == 'root' and psw == '123456': # print('登录成功') # if语句的语法2:双分支判断 # if 判断条件: # 执行语句 # else: # 执行语句 ## 案例1:用户从终端输入用户名,变量表示为name,再输入密码,变量表示为psw ## 如果用户名为root并且密码为123456,则提示登录成功 ## 否则提示用户名或密码错误 # name = input('请输入用户名:') # psw = input('请输入密码:') # if name == 'root' and psw == '123456': # print('登录成功') # else: # print('用户名或密码错误') # if语句的语法3:多分支判断 # if 判断条件: # 执行语句 # elif 判断条件: # 执行语句 # elif 判断条件: # 执行语句 # elif 判断条件: # 执行语句 # else: # 执行语句 ## 案例1:用户从终端输入学生成绩,变量表示为score ## 如果score>=90,输出优秀 ## 否则如果score >= 80,输出良好 ## 否则如果score >= 60,输出及格 ## 否则输出不及格 score = input("请输入学生成绩:") score = float(score) if score >= 90: print('优秀') elif score >= 80: print('良好') elif score >= 60: print('及格') else: print('不及格') # coding=utf-8 # @作者: 张泽楠 # @时间: 2024/6/19 8:17 # for循环 # 语法: # for 迭代变量 in 可迭代对象: # 需重复执行的代码片段 # 可迭代对象:字符串、range、列表、元组、字典... # 1.循环遍历字符串 # data = "hello world" # for a in data: # print(a) # 案例:现有变量为字符串,内容为hello 123 world # 循环遍历每个字母,如果是字母则转成大写 ## 补充 字符串.isalpha() 判断是否由纯字母组成 ## 补充 字符串.lower() 字符串字母都转为小写 ## 补充 字符串.upper() 字符串字母都转为大写 # letters = "hello 123 world" # for letter in letters: # if letter.isalpha(): # letter = letter.upper() # print(letter) # 2.循环遍历列表 # scores = [90, 100, 85, 95, 60] # for score in scores: # print(score) # 案例:现有变量名为scores,里面存放了若干个成绩,内容为[90, 100, 85, 95, 60] # 请编写代码,找出成绩中的最大值和最小值 # 逻辑 # 1.假设最大值和最小值都是第0个元素 # 2.依次获取每个成绩并进行比较(不用和第0个比大小) # 如果成绩大于最大值,将更大的成绩更新到最大值里面 # 如果成绩小于最小值,将更小的成绩更新到最小值里面 # scores: list = [45, 90, 100, 85, 95, 60] # max_score = min_score = scores[0] # for score in scores[1:]: # if score > max_score: # max_score = score # if score < min_score: # min_score = score # print(max_score, min_score) # # scores: list = [45, 90, 100, 85, 95, 60] # max_score = max(scores) # min_score = min(scores) # print(max_score, min_score) # 案例(面试时大概率会考):现有一个变量名为numbers,内容为[1, 5, 2, 9, 10, -2, 16] # 要求:编写python脚本,让列表中的数字有序排列(要求为降序),结果应该为[16,10,9,5,2,1,-2] # 解题思路 # 1.循环遍历列表中的每个数字,进行比较 # 2.依次后面的数字进行比较 # 2.1 如果后面的数字更大,则交换位置 # 2.2 如果后面的数字更小,则不交换位置 # 原始数据[1, 5, 2, 9, 10, -2, 16] # 第1轮排序(找到最小值放到最后) # 第1次1和5 [5, 1, 2, 9, 10, -2, 16] # 第2次1和2 [5, 2, 1, 9, 10, -2, 16] # 第3次1和9 [5, 2, 9, 1, 10, -2, 16] # 第4次1和10 [5, 2, 9, 10, 1, -2, 16] # 第5次1和-2 [5, 2, 9, 10, 1, -2, 16] # 第6次-2和16 [5, 2, 9, 10, 1, 16, -2] # 第2轮排序(找到第2小值放到倒数第2个) # 第1次5和2 [5, 2, 9, 10, 1, 16, -2] # 第2次2和9 [5, 9, 2, 10, 1, 16, -2] # 第3次2和10 [5, 9, 10, 2, 1, 16, -2] # 第4次2和1 [5, 9, 10, 2, 1, 16, -2] # 第5次1和16 [5, 9, 10, 2, 16, 1, -2] # 第3轮排序 # 第1次5和9 [9, 5, 10, 2, 16, 1, -2] # 第2次5和10 [9, 10, 5, 2, 16, 1, -2] # 第3次5和2 [9, 10, 5, 2, 16, 1, -2] # 第4次2和16 [9, 10, 5, 16, 2, 1, -2] # 冒泡排序算法:面试官最爱问的排序算法之一 # 要求掌握: # 1.排序算法的原理 # 2.给定一段排序过程,将空缺处补充完整 # 3.手写Python代码 # 常用的排序算法:堆排序 快速排序 冒泡排序 选择排序 希尔排序 插入排序 归并排序 # numbers = [1, 5, 2, 9, 10, -2, 16] # for i in range(0, 7): # for j in range(0, 7-i-1): # if numbers[j] < numbers[j+1]: # numbers[j], numbers[j+1] = numbers[j+1], numbers[j] # print(numbers) # print('--------------------------') # print(numbers) # # numbers = [1, 5, 2, 9, 10, -2, 16] # numbers = sorted(numbers) # print(numbers) # 循环案例练习 # 用户从终端输入5,则打印下列图形 # 1 # 212 # 32123 # 4321234 # 543212345 总行数 = input("请输入1-10的任意一个整数:") 总行数 = int(总行数) for 行 in range(1, 总行数+1): 间隔 = (总行数 - 行) * " " 数字 = '' for i in range(行, 1, -1): i = str(i) 数字 = 数字 + i for j in range(1, 行 + 1): j = str(j) 数字 = 数字 + j print(间隔 + 数字) # coding=utf-8 # @作者: 张泽楠 # @时间: 2024/6/19 8:17 # 编程中常用的循环技术包括:for循环、while循环、递归 # while=外熬,当...时 # while循环 # 语法: # while 循环条件: # 循环内容 # for 迭代变量 in 迭代对象: # 循环内容 # 案例:使用while循环,打印5次Hello World # count = 1 # while count < 6: # print('Hello World') # count += 1 # 案例:使用while循环,计算1-100的和 # i = 1 # total = 0 # while i <= 100: # total = total + i # i = i + 1 # print(f"1-100的和为{total}") # 案例:由用户从终端输入任意个数字,直到用户输入的不是数字为止,最后打印所有数字的和 # 例如 # 请输入数字:50 # 请输入数字:45 # 请输入数字:50 # 请输入数字:abc # 总和为145 # 循环条件为:输入的内容不是数字 # 循环内容:累计求和 # total = 0 # while True: # num = input("请输入数字:") # if num.isdigit(): # num = int(num) # total = total + num # else: # break # 播瑞可 强制中断整个循环 # print(f'用户的数字之和为{total}') # 案例:使用while循环计算本年度的工资:用户从终端输入每月的工资,当总工资数超过12万,则不再输入 month = 1 # month=月份 total = 0 # total=总共 # 写法1 # while True: # money = input(f"输入第{month}个月的工资:") # money = float(money) # total = total + money # if total > 120000 or month >= 12: # break # month += 1 # 写法2 # while total < 120000 and month <= 12: # money = input(f"输入第{month}个月的工资:") # money = float(money) # total = total + money # month += 1 # print(f'本年度的工资总数为{total}') # 异常处理 ## 异常:报错 # 针对有可能出错的代码,通过“捕获”异常来处理 # 说明:如果项目中出现的错误个人无法立刻解决,可以通过try-except临时解决 try: print(3/0) except: print('发现了代码错误') print('hello world') # 综合案例练习 ## 手写一个计算器,用于计算+=*/的运算 ## 例如: ## 请输入您的计算方式(1加2减3乘4除):2 ## 请输入您的第一个数字:40 ## 请输入您的第二个数字:20 ## 40-20=20 ## 请输入您的计算方式(1加2减3乘4除):a ## 退出系统,欢迎下次再来 # 如果一个循环一直只执行,则称这个循环为_死_循环(1个字),该循环必须搭配_break_来使用(五个字母) # 如果代码不确定要写什么,但是又必须写点东西,则可以使用_pass_关键字(四个字母) # for循环和while循环中有两个关键字很常用,分别为_break_和_continue_(b开头和c开头) # num1 = '' # while True: # if not num1: # try: # num1 = input("请输入第1个数字:") # num1 = float(num1) # except: # print("输入的格式不正确!请重新输入") # continue # what = input("你想使用哪种计算方式:+-*/,输入其它则退出:") # if what not in '+-*/': # print('欢迎使用本系统,下次再见!') # break # try: # num2 = input("请输入第2个数字:") # num2 = float(num2) # except: # print("输入的格式不正确!请重新输入") # continue # if what == '+': # print(f"{num1} + {num2} = {num1+num2}") # num1 = num1+num2 # elif what == '-': # print(f"{num1} - {num2} = {num1-num2}") # num1 = num1 - num2 # elif what == '*': # print(f"{num1} * {num2} = {num1*num2}") # num1 = num1 * num2 # elif what == '/': # if num2 == 0: # print("除数不能为0!") # else: # print(f"{num1} / {num2} = {num1/num2}") # num1 = num1 / num2 # else: # print('欢迎使用本系统,下次再见!') # break # coding=utf-8 # @作者: 张泽楠 # @时间: 2024/6/20 9:41 # Python的数据类型有哪些?? # 数字类型Number、字符串str、列表list、字典dict、元组tuple、集合set # 列表类型 # 列表的应用场景:如果需要使用一个变量,用来存放长得相似的数据,则使用列表 # 列表的表现形式:[] # 创建一个字典,里面什么都不放,被称为“空字典” # 创建一个字符串,里面什么都不放,被称为“空字符串” # 创建一个列表,里面什么都不放,被称为“空列表” # 假如你去超市买菜,需要准备个空袋子,这个空袋子就相当于是空列表 # 操作1:创建空列表 list1 = [] list2 = list() print(list1) print(list2) # 操作2:创建一个带有若干数据的列表 # 案例:将5个学生的数学成绩放到变量中,成绩分别为90,50,60,70,100 scores = [90, 50, 60, 70, 100] # 案例:将5个学生的姓名放到变量中,分别为:张三、李四、王五、赵六、张飞 names = ['张三', '李四', '王五', '赵六', '张飞'] print(names) # 案例:将4个学生的数学和语文成绩放到变量中,分别为 100,90 86,70 90, 80,45 scores = [(100, 90), (86, 70), (90, ), (80, 45)] print(scores) # 说明:如果要把某个数据当做一个整体,则需要用_圆括号_括起来(三个字),而且里面至少包含一个_逗号_(2字) # 面试题 # a是什么类型(元组类型),b是什么类型(整型) a = (100, ) b = (100) # 操作3:向列表中追加append更多数据 # append屙喷得,表示追加 # 案例:现有一个变量,类型为列表,里面存放了若干个水果,包括:苹果、香蕉 # 现在用户又购买了梨,请通过脚本将梨放到列表的最后 fruits = ['苹果', '香蕉'] fruits.append('梨') print(fruits) # 案例:现有一个字符串,名为hello,请将字符串中的每个字母都放到列表中 names = 'hello' list1 = [] for name in names: list1.append(name) print(list1) # 案例:现有一段英文,内容为:Hello lisa Where are you from # 要求:将单词中首字母大写的单词放到列表中 # 思路: # 1.将字符串按照空格切割 # 2.循环遍历每个单词 # 2.1 判断一下每个单词的第1个字母是不是大写 # 2.1.1 如果是就追加到列表中 # 2.1.2 如果不是就什么也不做 # IT男分两类:丑直男 帅渣男 words = "Hello lisa Where are you from" words = words.split() results = [] for word in words: if word[0].isupper(): results.append(word) print(results) # 练习:现有一段英文,内容为:Hello lisa, Where are you from? I come from China! # 要求:将单词中首字母大写的单词放到列表中 # 提示:使用字符串的strip方法去除多余的符号 # 练习:让用户从终端输入若干个成绩并将成绩添加到列表中,如果输入的不是成绩则直接结束。最后计算成绩总和并打印。 # 提示:使用sum函数可以直接对列表求和 # 操作4:向列表中插入数据 # insert因色儿特:插入 names: list = ['张三', '李四', '王五'] ## 案例:将赵六插入到张三后 # 参数1:index因带可死:索引/首页 # 参数2:object偶不接可特:对象 # Python是面向_对象_的语言(万物皆对象)(2字) ## 面向对象->OO ## 面向对象编程Program->OOP ## 面向对象设计Design->OOD ## 面试题:面向对象语言的特点有哪些(三个):封装、继承、多态? # C语言是面向_过程_的语言(2字) names.insert(1, '赵六') print(names) # 案例:自己定义一个变量,里面存放若干个名字,假设存3个,请将死4个名字插入到列表的第100个位置 # names = [0, 1, 2] # names.insert(100, 6) # names.insert(99, 7) # names.insert(-2, 8) # print(names) names = [0, 1, 2, 3, 4, 5] names.insert(2, 'zhangsan') print(names) names.insert(-2, 'lisi') print(names) # 代码题 : names = ['a', 'b', 'c', 'd'] # 将f插入到2的位置,则names为:[a. b. f. c. d] # 将y插入到-3的位置,则names为:[a. b. y. f. c. d.] # 操作5:向列表中批量插入数据 a = ['1', '2', '3'] b = ['4', '5', '6'] # 将b列表的数据放入到a列表的末端,则脚本应该怎么写? # a = ['1', '2', '3', '4', '5', '6'] # for x in b: # a.append(x) # print(a) # 写法1:通过+拼接列表(个人推荐) c = a + b print(c) # 写法2:通过extend扩展列表(个人不用) a.extend(b) print(a) # 面试题:在不考虑元素位置的情况下,插入1000个数据,使用insert还是append?为什么? # 因为append比insert快 # 操作6:删除元素 # 删除:delete、remove、erase # 方式1(个人不用):remove瑞木吴=移除/删除,只会删掉第1个符合的元素 # 案例:现有列表,存放了若干姓名,请删除第2个 # 案例:现有列表,存放了若干姓名,请删除索引为2的姓名 names = ['张三', '李四', '王五', '赵六', '李四'] names.remove('李四') print(names) # 方式2:pop泡铺,表示弹出 # pop() 默认删除最后一个,速度最快 # pop(2) 删除索引值为2的元素 # pop(100) 删除索引值为100的元素,如果该元素不存在,则直接报错 # names = ['张三', '李四', '王五', '赵六', '李四'] # names.pop(100) # print(names) # 案例:自己创建一个列表,里面存放3个东西 # 删除第1个东西,删除第10个东西(不允许报错) names = [1, 2, 3, 4, 5, 6, 7] names.pop(0) print(names) # try: # names.pop(10) # print(names) # except: # print('索引超过范围,删除失败') # who = 10 # if len(names)-1 >= who: # names.pop(who) # print(names) # else: # print('索引超过范围,删除失败') # 方式3:使用del关键字删除 # del=delete第类特,表示删除 names = [1, 2, 3, 4, 5] del names[2] print(names) # 操作7:列表的访问和数据的修改 names = ['张三', '李四', '王五'] who = names[1] print(who) # 案例:现有列表名为list1,内容包括1、2、3、4、5...100,请打印第90个元素的值是多少 # numbs = range(1, 101) # list1 = [] # for num in numbs: # list1.append(num) # who = list1[89] # print(who) # range润节,表示范围,其特征和列表几乎一样,但是range不是列表 list1 = list(range(1, 101)) who = list1[89] print(who) # 案例:想办法生成一个列表,其内容是1,2,3,4...100,1,3,5,7,9,...99 # data1 = list(range(1, 101)) # data2 = list(range(1, 101, 2)) # list1 = data1 + data2 # print(list1) # list1 = list(range(1, 101)) + list(range(1, 101, 2)) # print(list1) # 新案例:创建一个列表,里面包含a-z26个字母,且字母要按顺序。 # 输出结果 ['a', 'b', 'c', ....'z'] # 写法1:手写列表,特点:简单、没难度,写起来麻烦 # list1 = ['a', 'b', 'c', 'd'] # 写法2:手写列表,特点:稍微简单,写起来麻烦 # str1 = 'abcdefg' # list1 = list(str1) # print(list1) # 写法3:利用范围 data1 = range(97, 123) list1 = [] for a in data1: b = chr(a) list1.append(b) print(list1) # 写法4:使用列表推导式简化写法3,1句代码生成列表 # 列表推导式的特点:代码简洁、性能比普通的for循环要快得多 list1 = [chr(x) for x in range(97, 123)] print(list1) # 案例:请将下面的脚本使用列表推导式来实现。 # 列表推导式的格式: # 列表变量 = [迭代变量 for 迭代变量 in 迭代对象 [if 判断条件]] # list1 = [] # for a in range(1, 101): # if a % 2 == 0: # list1.append('hello' + str(a)) # print(list1) # list1 = ['hello'+str(a) for a in range(1, 101) if a % 2 == 0] # print(list1) # 案例:请将下面的脚本使用列表推导式来实现。 # list1 = [] # for a in range(1, 101): # if a % 2 == 0 and a % 6 == 0: # list1.append(a) # print(list1) # list1 = [x for x in range(1, 101) if x % 2 == 0 and x % 6 == 0] # print(list1) # 案例:请将下面的脚本使用列表推导式来实现。 # list1 = [] # list2 = [] # for i in range(1, 101): # if i % 3 == 0: # list1.append(i) # if i % 5 == 0: # list2.append(i) # print(list1) # print(list2) # list1 = [i for i in range(1, 101) if i % 3 == 0] # list2 = [i for i in range(1, 101) if i % 5 == 0] # print(list1) # print(list2) # 案例:请将下面的脚本使用列表推导式来实现。 # 思考:能否用列表推导式进行优化??不能 # list1 = [] # for i in range(1, 5): # score = input("请输入一个变量") # name = input("请输入一个姓名") # score = int(score) # list1.append(score) # if name.startswith('张'): # print('欢迎加入张姓族谱') # print(list1) # 列表推导式的使用场景?? # 条件1:用于生成数据 # 条件2:逻辑必须足够简单 # 练习:创建列表1,里面存放a-z,创建列表2,里面存放A-Z,生成列表3,内容为(a,A), (b,B)... # 要求:列表3需要使用推导式来生成 # 提示:使用python的zip函数 # 列表推导式可以使用2个循环,例如 [(x, y) for x in list1 for y in list2] # list1 = [chr(x) for x in range(97, 123)] # list2 = [chr(x).upper() for x in range(97, 123)] # list3 = [x for x in zip(list1, list2)] # print(list3) # list3 = [x for x in zip([chr(x) for x in range(97, 123)], [chr(x).upper() for x in range(97, 123)])] # print(list3) list1 = [1, 2, 3] list2 = [4, 5, 6, 7, 8] list3 = list(zip(list1, list2)) print(list3) # 选B # A.直接抛出异常 # B. [(1,4), (2,5), (3,6)] # C. [(1,4), (2,5), (3,6), (,7), (,8)] # D. [(1,4), (2,5), (3,6), (7,), (8,)] ```
张泽楠
2024年6月21日 10:46
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码