Python 实例教学_01_基础语法
Python 实例教程
- 教学方法
- 课前准备
- 要求
- Python 实例教学_01_基础语法
- [Python 教学](https://blog.csdn.net/weixin_43955170/category_10852443.html?spm=1001.2014.3001.5482)
- 第一课
- [223. 矩形面积](https://leetcode-cn.com/problems/rectangle-area/)
- 基础知识
- Python 基础语法
- Python max()、min() 内置函数
- 第二课
- ★[860. 柠檬水找零](https://leetcode-cn.com/problems/lemonade-change/)
- 基础知识
- 一、if ... elif … else ... 条件语句
- 二、for、while 循环语句
- 三、in 成员运算符
- 四、list 列表
- 五、range、enumerate 内置函数
- 六、+= 加法赋值运算符
- 六、布尔类型(boolean)
- 第三课
- [1217. 玩筹码](https://leetcode-cn.com/problems/minimum-cost-to-move-chips-to-the-same-position/)
- [1184. 公交站间的距离](https://leetcode-cn.com/problems/distance-between-bus-stops/)
- 基础知识
- 判断奇偶性
- 切片
- 求和
- 自己编写代码实现最大值和求和
- swap 交换
- 第四课
- [1518. 换酒问题](https://leetcode-cn.com/problems/water-bottles/)
- 基础知识
- 整除
- while 循环
- divmod() 内置函数
- 第五课
- [2057. 值相等的最小索引](https://leetcode.cn/problems/smallest-index-with-equal-value/)
- [412. Fizz Buzz](https://leetcode.cn/problems/fizz-buzz/)
- 第六课
- [2239. 找到最接近 0 的数字](https://leetcode.cn/problems/find-closest-number-to-zero/)
- [747. 至少是其他数字两倍的最大数](https://leetcode-cn.com/problems/largest-number-at-least-twice-of-others/)
- 基础知识
- 条件表达式
- 单元测试
- [2235. 两整数相加](https://leetcode.cn/problems/add-two-integers/)
- [258. 各位相加](https://leetcode.cn/problems/add-digits/)
- [2432.. 处理用时最长的那个任务的员工](https://leetcode.cn/problems/the-employee-that-worked-on-the-longest-task/)
教学方法
1、利用 Leetcode 学习 Python 基础数据结构;
2、对理解不深的内容,先强行记忆,由点到面。
课前准备
注册 CSND 和 Leetcode 账号;
要求
1、必须记住相关的英语单词,掌握用法;
2、有一定的数学基础;
3、需要较好的理解和记忆能力;
4、要有较好的耐力,不要一有难度就放弃!只要坚持一定有很大的收获。
Python 实例教学_01_基础语法
Python 教学
第一课
223. 矩形面积
class Solution:def computeArea(self, ax1: int, ay1: int, ax2: int, ay2: int, bx1: int, by1: int, bx2: int, by2: int) -> int:a = (ax1 - ax2) * (ay1 - ay2)b = (bx2 - bx1) * (by2 - by1) w = min(ax2, bx2) - max(ax1, bx1)h = min(ay2, by2) - max(ay1, by1)c = max(w, 0) * max(h, 0)return a + b - c
基础知识
Python 基础语法
1、标识符: 只包含字母、数字、下划线(_),汉字也可以,但数字不能开头,自定义标识符不能使用关键字,如:min max if for 等,它们是留给系统用的。
2、变量: 事实上是一个地址,就象一个宿舍或几个宿舍,如:402 宿舍,这学期你住,下学期可能其他人住。地址是不变的,但内容是可变的。
3、=: 这里的等号不是指相等和数学中的概念不同,这里叫 赋值运算符,b402 = “应用3班”,表示现在 应用3班 在 b402 教室上课,用编程语言来讲,就是 “应用3班” 赋给 b402,前者是值(字符串),后者是变量。
4、==:双等于号是判断左右两边相等,是 比较运算符,相等结果为 真(True)、不相等为 假(False)。如:b402 == “应用3班”,如果 3班 不在 b402,为假,在为真。
5、min(a, b)、max(a, b) 内置函数,最简单的应用取两数的最小/大值。
a, b, c = 1, 2, 3
a = b = c = 10 # ▲ 等价于 a = 10; b = a; c = a
Python 可以按元组装包与解包赋值;简单的说就是一对一赋值。
class Solution: # 声明 Solution 类 def computeArea(self, ax1: int, ay1: int, ...) -> int: # 定义方法 computeArea
Python max()、min() 内置函数
函数功能为取传入的多个参数中的最大值,或者传入的 可迭代对象 元素中的最大值。
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
参数:
默认 数值型 参数,取值大者; 字符型 参数,取字母表排序靠后者。
key 可做为一个函数,用来 指定取最大值的方法。
default 用来指定最大值不存在时返回的 默认值。
arg1 字符型参数/数值型参数,默认数值型。
返回值:最大值。
max(1,2,3,4,5,6) # 1、传入多个参数取最大值(元组、列表、集合)。
max('12345') # '5' # 2、传入可迭代对象时,取其元素最大值。
max((), default = 1) # 3、传入可迭代对象为空时,必须指定参数 default,用来返回默认值。
max([]) # ValueError: max() arg is an empty sequence
# 4、传入命名参数 key,其为一个函数,用来指定取最大值的方法。
student = [{'name': 'li', 'age': 24},{'name': 'he', 'age': 45} ]
max(student, key = lambda x: x['age']) # {'name': 'he', 'age': 45}
第二课
★860. 柠檬水找零
知识点: boolean, , if elif else, for in
class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five, ten = 0, 0for i in bills:if i == 5: five += 1 # 不用找零,直接 五元 + 1elif i == 10: # 需要找一张五元ten += 1five -= 1elif i == 20:# 嵌套条件语句if ten > 0: # 先找 10 元的ten -= 1; five -= 1else: five -= 3if five < 0: return False # 说明五元的钞票不够找了,返回 False return True
基础知识
一、if … elif … else … 条件语句
if 条件: # 条件成立(即为真)执行下面的代码,冒号结束。语句块:用缩进表示
elif 条件:语句块
else: # 上面的条件不成立(即为假)执行下面的代码语句块
语句块:python 用缩进表示
二、for、while 循环语句
基本用法有三种: ⑴ ⑵ ⑶ 、⑷ 是 Python 语言的特殊用法。
三、in 成员运算符
in 如果在指定的序列中找到值返回 True,否则返回 False。in 能够快速判断某个元素是否在序列中。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。
四、list 列表
list 是一种顺序存储的数据结构,是一种 数据类型,可以存储不同类型的数据,就象一个列表,其中数据叫 元素。
五、range、enumerate 内置函数
range(10) 是一个对象 表示一个范围的数这里是 0 到 9,注意从 0 开始,不包含 10。
六、+= 加法赋值运算符
c += a 等效于 c = c + a
arr = [1,2,3,4,5,6] # 列表用 [] 表示,逗号分隔元素。
for i in range(len(arr)): # ⑴ i 是索引,对应元素 arr[i]循环体
for i, e in enumerate(arr): # ⑶ 同时需要索引与元素
for e in arr: # ⑵ e 是元素, e 是引用类型,对 e 的修改会影响到 arr。# ...# break 终止当前层循环,也就是跳出本层循环。同时跳过 else 部分。# continue 结束本次循环,相当短路操作。
else: # ⑷ 不是通过 break 结束循环时执行。
六、布尔类型(boolean)
python 0,“”、[]、()、set()、{},None 为 False,非零为 True。
第三课
1217. 玩筹码
第 i 个芯片的 位置 是 position[i],注意不是筹码数。
知识点: for, %, min(), +=
class Solution:def minCostToMoveChips(self, position: List[int]) -> int: # odd = even = 0# for k in position:# if k % 2: odd += 1# else: even += 1# return min(even, odd)# d = [0, 0]# for i in position: d[i%2] += 1# return min(d)return min(x := sum(i & 1 for i in position), len(position) - x)
1184. 公交站间的距离
class Solution:def distanceBetweenBusStops(self, distance: List[int], start: int, destination: int) -> int: if destination < start: # 交换出发点和目的地距离相等start, destination = destination, start d = sum(distance[start : destination]) # 出发点到目的地距离return min(d, sum(distance) - d)
基础知识
判断奇偶性
% 模运算符,n % 2
& 位运算符 与,n & 1 # 位运算符 与(&)
切片
切片指的是对序列进行截取,选取序列中的某一段。
切片的语法是: list[start:end:step]
以 冒号分割索引,start 代表 起点索引,end 代表 结束点索引。省略 start 表示以0开始,省略 end 表示到列表的结尾。注意,区间是左闭右开的!。分片不会修改原有的列表,可以将结果保存到新的变量。
如果提供的是负整数下标,则从列表的最后开始往头部查找。
切片过程中还可以设置 步长,以第二个冒号分割,例如 list[3:9:2],表示每隔多少距离取一个元素。
求和
sum(iterable[, start]) # python 内置函数
iterable – 可迭代对象,如:列表(list)、元组(tuple)、集合(set)、字典(dictionary)。
start – 指定相加的参数,如果没有设置这个值,默认为 0。
sum([1,2,3]) # in list
sum([1,2,3],5) # in list +start
sum((1,2,3)) # in tuple
sum({1,2,3}) # in set
sum({1:5,2:6,3:7}) # in dictionary key
sum(range(1,4)) # in range()sum(i % 2 == 0 for i in position) # 生成器 偶数的个数
自己编写代码实现最大值和求和
arr = [1,2,3,4,5,6]
max_ = -float("inf") # 注意初始化时取 arr 中最小数或更小的数,一般取无穷小 -float("inf")
sum_ = 0
for x in arr:if x > max_: max_ = xsum_ += x # 累加
print("最大值:", max_, "和:", sum_)
swap 交换
a, b = b, a # 右边取得的原来的值 注意和 a = b; b = a 不同。
第四课
1518. 换酒问题
class Solution:def numWaterBottles(self, numBottles: int, numExchange: int) -> int:res = rem = numBottles # 全部喝完,rem 为空瓶数while rem >= numExchange:numBottles, rem = divmod(rem, numExchange) # 可换酒 numBottles 瓶,剩余 rem 个空瓶。res += numBottles # 全部喝完rem += numBottles # + 空瓶 return res
基础知识
整除
d, r = divmod(a, b) <=> d = a // b, r = a % b
// 整除
/ 除,结果是浮点数。
while 循环
while 条件:# 循环体
else:# break 终止循环时不执行
divmod() 内置函数
divmod(a, b) 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。
第五课
2057. 值相等的最小索引
class Solution:def smallestEqual(self, nums: List[int]) -> int:for i, x in enumerate(nums):if i % 10 == x: return ireturn -1
412. Fizz Buzz
class Solution:def fizzBuzz(self, n: int) -> List[str]:res = [''] * 列表包含 n # n 个 空串# res = []for i in range(1, n + 1):if i % 15 == 0: x = "FizzBuzz" # 先处理 15 的倍数elif i % 3 == 0: x = "Fizz"elif i % 5 == 0: x = "Buzz"else: x = str(i) # 转换成字符串res[i - 1] = x# res.append(x)return res# return ['Fizz'[i%3*4:]+"Buzz"[i%5*4:] or str(i) for i in range(1, n+1)]
第六课
2239. 找到最接近 0 的数字
class Solution:def findClosestNumber(self, nums: List[int]) -> int:ans = inffor x in nums:if abs(x) == abs(ans): ans = max(x, ans)elif abs(x) < abs(ans): ans = x return ans
747. 至少是其他数字两倍的最大数
class Solution:def dominantIndex(self, nums: List[int]) -> int:# 方法一:最大值 >= 2 倍次大值first = second = id = 0for i, n in enumerate(nums):if n > first:first, second = n, firstid = ielif n > second:second = nreturn id if first >= 2 * second else -1# 方法二:求最大值ans = max_ = -1 for i, x in enumerate(nums): if x >= max_ * 2: ans = i # 当前的 max_ 对当前的 x 是满足条件的,先保存下来,但不一定是最终值。elif x > max_ // 2: ans = -1 # 说明 max_ 不符合条件,先记 ans = -1 max_ = max(max_, x) return ans# 方法三:最大值函数max_, ans = max(nums), -1for i, x in enumerate(nums):if max_ == x: ans = ielif x > max_ // 2: return -1return ans# 方法四:离线排序q = sorted(range(len(nums)), key=lambda i:nums[i])return -1 if nums[q[-2]]*2 > nums[q[-1]] else q[-1]
基础知识
条件表达式
结果 a if 条件 else 结果 b
单元测试
2235. 两整数相加
258. 各位相加
2432… 处理用时最长的那个任务的员工
class Solution:def hardestWorker(self, n: int, logs: List[List[int]]) -> int:ans = pre = most = 0for i, t in logs: dif = t - prepre = tif most < dif or most == dif and ans > i:ans = imost = difreturn ans
Python 实例教学_01_基础语法相关推荐
- Python 实例教学_ 04_排序
Python 实例教程 Python 实例教学_ 04_排序 第十九课 [870. 优势洗牌](https://leetcode.cn/problems/advantage-shuffle/) [90 ...
- Python 实例教学_ 03_列表
Python 实例教程 Python 实例教学_ 03_列表 第十三课 [844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-c ...
- 【Python自动化运维】Python环境安装及基础语法
[Python自动化运维]Python环境安装及基础语法 1. Python环境安装 2. Python基础语法 1. Python环境安装 pyenv官方安装手册:https://github. ...
- Python基础教学系列— 基础语法
标识符 所谓的标识符就是对变量.常量.函数.类等对象起的名字. 首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不同 python对于表示标识符的命名有如下规 ...
- 【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类
目录 很多小伙伴可能都没有看过凡哥的视频,所以大家可能对凡哥不是很了解这里先和大家来个自我介绍 凡哥我已经有着十二年互联网自动化测试和测试开发工程师,拥有丰富的自动化测试平台及测试开发经验,擅长接口测 ...
- python汇编指令_Python基础语法
阅读目录: 第一节:编程基础 第一节:编程基础 第二节:语言分类 第三节:高级语言的发展 第四节:程序program 第五节:Python解释器 第六节:Python基础语法 第七节:程序控制 第八节 ...
- python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- python expect模块_PYTHON基础语法全面总结
YOU CAN DRINK ALL YOU LIKE, BUT IN THE MORNING YOU GET HEADACHE WITH THE SAME PROBLEMS. PYTHON基础语法总结 ...
最新文章
- API接口自动化之2 处理http请求的返回体,对返回体做校验
- Ubuntu 常用命令收集
- Java中数组以及集合
- Roman to Integer - LeetCode
- 技术干货|基于Apache Hudi 的CDC数据入湖
- [题解]Codeforces Round #519 - B. Lost Array
- AM335 嵌入式 linux,am335x开发板建立嵌入式 Linux NFS 开发环境
- python3类的继承详解_python3 多重继承机制
- hive mysql 字符集_创建Hive表会自动更改mysql Metastore的字符集设置
- 生成树协议(STP)原理与配置PVST+实现负载均衡
- OSI 七层网络协议的定义与理解
- c# 关于继承类中构造函数的实现
- python机器学习案例系列教程——基于规则的分类器
- 4. Nginx 与 PHP
- 2023年山东大学社会工作考研成功上岸经验分享
- linux--封装redhat镜像
- html百度站内搜索代码,网站添加百度站内搜索的教程
- mysql数据库丢失还原_MySQL数据库丢失后如何自动恢复呢?
- 并行计算 SLIC超像素算法(二) 代码分析
- 短视频剪辑如何入门?短视频剪辑常用的配音软件
热门文章
- UG\NX二次开发 旋转变换 uf5945、uf5947
- 村上春树:“高墙与鸡蛋” 林少华译
- 计算机动画的 优缺点,浅谈计算机动画画面的视觉特征
- 2019年杭州个税计算工具excel版
- Elastic Beanstalk
- 电蒸汽发生器省电攻略,这样做能节约不少的成本
- 7 Papers | 腾讯王者荣耀绝悟AI;ICLR高分论文Reformer
- 基于三维GIS技术的智慧园区解决方案
- 【论文精读】ROC和PR曲线的关系(The relationship between Precision-Recall and ROC curves)
- 数据仓库设计规范(更新中)1024投稿