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 教学

Python 1-01 环境搭建
Python 1-02 基础语法
Python 1-06 基本数据类型
Python 1-07 数字
Python 1-08 bool NoneType
Python 1-12 条件与循环语句
Python 1-13 运算符

第一课

223. 矩形面积

知识点: return, max(), .min()

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. 公交站间的距离

知识点: 交换 sum

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. 换酒问题

知识点: while, /, %

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_基础语法相关推荐

  1. Python 实例教学_ 04_排序

    Python 实例教程 Python 实例教学_ 04_排序 第十九课 [870. 优势洗牌](https://leetcode.cn/problems/advantage-shuffle/) [90 ...

  2. Python 实例教学_ 03_列表

    Python 实例教程 Python 实例教学_ 03_列表 第十三课 [844. 比较含退格的字符串](https://leetcode.cn/problems/backspace-string-c ...

  3. 【Python自动化运维】Python环境安装及基础语法

    [Python自动化运维]Python环境安装及基础语法 1. Python环境安装 2. Python基础语法 1. Python环境安装   pyenv官方安装手册:https://github. ...

  4. Python基础教学系列— 基础语法

    标识符 所谓的标识符就是对变量.常量.函数.类等对象起的名字. 首先必须说明的是,Python语言在任何场景都严格区分大小写!也就是说A和a代表的意义完全不同 python对于表示标识符的命名有如下规 ...

  5. 【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类

    目录 很多小伙伴可能都没有看过凡哥的视频,所以大家可能对凡哥不是很了解这里先和大家来个自我介绍 凡哥我已经有着十二年互联网自动化测试和测试开发工程师,拥有丰富的自动化测试平台及测试开发经验,擅长接口测 ...

  6. python汇编指令_Python基础语法

    阅读目录: 第一节:编程基础 第一节:编程基础 第二节:语言分类 第三节:高级语言的发展 第四节:程序program 第五节:Python解释器 第六节:Python基础语法 第七节:程序控制 第八节 ...

  7. python编程语法-Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  8. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  9. python expect模块_PYTHON基础语法全面总结

    YOU CAN DRINK ALL YOU LIKE, BUT IN THE MORNING YOU GET HEADACHE WITH THE SAME PROBLEMS. PYTHON基础语法总结 ...

最新文章

  1. API接口自动化之2 处理http请求的返回体,对返回体做校验
  2. Ubuntu 常用命令收集
  3. Java中数组以及集合
  4. Roman to Integer - LeetCode
  5. 技术干货|基于Apache Hudi 的CDC数据入湖
  6. [题解]Codeforces Round #519 - B. Lost Array
  7. AM335 嵌入式 linux,am335x开发板建立嵌入式 Linux NFS 开发环境
  8. python3类的继承详解_python3 多重继承机制
  9. hive mysql 字符集_创建Hive表会自动更改mysql Metastore的字符集设置
  10. 生成树协议(STP)原理与配置PVST+实现负载均衡
  11. OSI 七层网络协议的定义与理解
  12. c# 关于继承类中构造函数的实现
  13. python机器学习案例系列教程——基于规则的分类器
  14. 4. Nginx 与 PHP
  15. 2023年山东大学社会工作考研成功上岸经验分享
  16. linux--封装redhat镜像
  17. html百度站内搜索代码,网站添加百度站内搜索的教程
  18. mysql数据库丢失还原_MySQL数据库丢失后如何自动恢复呢?
  19. 并行计算 SLIC超像素算法(二) 代码分析
  20. 短视频剪辑如何入门?短视频剪辑常用的配音软件

热门文章

  1. UG\NX二次开发 旋转变换 uf5945、uf5947
  2. 村上春树:“高墙与鸡蛋” 林少华译
  3. 计算机动画的 优缺点,浅谈计算机动画画面的视觉特征
  4. 2019年杭州个税计算工具excel版
  5. Elastic Beanstalk
  6. 电蒸汽发生器省电攻略,这样做能节约不少的成本
  7. 7 Papers | 腾讯王者荣耀绝悟AI;ICLR高分论文Reformer
  8. 基于三维GIS技术的智慧园区解决方案
  9. 【论文精读】ROC和PR曲线的关系(The relationship between Precision-Recall and ROC curves)
  10. 数据仓库设计规范(更新中)1024投稿