夜曲编程Python入门课程Pro
第 1 课 编程中的文本
打印命令 print()
打印数字 print(1024)
打印字符串 print(“1024”)
- 单双引号都可以,一般双引号。
- 如果字符串表达里有某个引号,可以选用另外一种引号。
- 如果字符串表达里有单双引号,用转义字符。
python编码需要顶格编程
python 注释是#号
# 注释内容,#号后面有空格
第 2 课 变量与赋值
变量名只能由字母、数字、下划线组成。
- 不以数字开头
- 大小写敏感
格式化输出:
name = "Tony"
print(f"My name is {name}")
转义字符: 左V括号
总结:
abc = "123";
print("abc") # 打印字符串,打印结果为:abc
print(abc) # 打印变量abc,打印结果为:123
print(f"{abc}") # 格式化打印,打印变量abc,打印结果为:123。
print(f"{abc}abc") # 格式化打印,打印变量abc和字符串"abc",打印结果为:123abc。格式化打印场景应该是:字符串拼接变量名的情况
python三引号用法可实现简单换行输出 实现与\n一样效果
print('''I
love
This
World''')
输出效果
I
love
This
World
python里面的特别打印:数字*字符串是连续打印字符串多次
print(3 * "18")
结果:
181818
第 3 课 编程中的数字
当整型和整型进行加、减、乘法运算时,运算结果是整型。
当整型和整型相除,或者有浮点型参与运算时,运算结果都是浮点型。
/ 除
// 取整除
print(7//3) # 取整运算
print(7%3) # 取模运算
在python中, 没有隐式转换的概念,即 数字型与字符串型不能拼接。除了乘号的情况,代表打印字符串几次
print(3 * "18")
第 4 课 真与假
python中的真假都是首字母大写 True False
python中的逻辑运算都是小写 and or not
第 5 课 单项选择中的判断
python中的 if没有括号,以: 结尾
if yourAge > myAge: print("你的年龄比我大")print("层级要")
第 6 课 双向选择的判断
if 变量 如果变量是非零非空,则为True
if:do sth
else:do sth
在判断语句中,对非零值判断为真;对数字0的判断为假;对 None 的判断为假。
python变量空值赋值是None
第 7 课 复杂的多向选择
if:do sth
elif:do sth
else:do sth
第 8 课 数据和判断小结
第 9 课 储存多个数据的元组/数组
number = (-1, 3, 67, -9, 5, 6, 23)
print(number)
print(number[0])
print(number[2])
print(number[4])
第 10 课 灵活多变的列表
数组是() 列表是[]
friendName = ["Kevin", "Tony", "Asum"]
print(friendName)
列表中的数据也可以是整型,浮点型,字符串或布尔数的任意组合。
如图所示,列表mixedList中,包含整型、浮点型和字符串三种数据类型。
切片要遵循“左闭右开”原则,就是取左边的数据,不取右边的数据,与数学中的区间类似[1, 3),取左不取右。
someLetters = ["a", "b", "c", "d", "e"]
print(someLetters[1:3])
()开辟的是数组,[]开辟的是列表
第 11 课 列表的便捷操作
列表的api
append
insert(idx, val)
查找[]
删除pop del
添加append insert(idx, val)
修改[]=
pop与del不同点
pop可提取删除的数据,赋值给另一个变量
pop可以删除列表的最后一个元素
del直接删除列表里的元素,无法提取或保存
第 12 课 一对一的字典
字典的api
查找[]
删除pop
添加[]=
修改[]=
我们还可以通过"keys()"功能获取这个字典所有的键。
除了使用“keys()”以外,我们也可以通过in运算来检查字典是否包含某个键。
第 13 课 数据结构小结
定义方式
定义元组、列表和字典的方式如图所示,分别使用小括号 () 、方括号 [] 和花括号 {} 。
三种数据结构的每一项元素都是由逗号分隔开。
对于元组和列表来说,除了访问单个元素外,还可以使用切片来截取多个连续的元素。
今天,我们从以下几个方面复习了元组(tuple)、列表(list)和字典(dict):
- 定义方式
- 访问元素
- 修改元素
- 添加元素
- 删除元素
in运算符
想要快速判断列表或者元组中是否有某一个元素,可以使用in运算符。
in运算符的左边是要查找的元素,右边是定义的元组或列表。
in运算的结果,是一个布尔值(True/False)。
第 14 课 for循环的基础操作
遍历字典的键
for 循环遍历字典的键,有两种方法可以使用:
- for 循环遍历字典;
这个方法和 for 循环遍历列表的格式类似。 - for循环遍历字典中的所有键;
使用 for 循环遍历 dict.keys(),将字典中的键赋值给变量,再通过 print() 输出变量。
for i in state和 for i in state.keys()对于遍历字典state的效果是一样的。
第 15 课 for循环的复杂应用
累加器
names = ["Tim", "Amy", "Eva"]
count = 0
for name in names:count = count + 1print(f"第{count}名是{name}")
第 16 课 条件循环语句
for循环和while循环的区别
\1. for循环常用于处理列表内的每个元素。
\2. for循环有天然的边界条件,while循环没有,需要我们精心设计边界条件。
\3. 大多数时候,for循环和while循环可以互换使用。
# 学生成绩列表
mark = [56,78,73,92,87,98,28,91,85,70,66,45,93]
min = mark[0]
max = mark[0]
for m in mark:if max < m:max = mif min > m:min = m
print(f"本班最高分为{max},最低分为{min}")
第 17 课 跳出循环的办法
break直接终止整个循环结构;
continue是跳过当前循环中剩下的代码,继续进入下一次循环。
第 18 课 循环的综合应用
for i in range()的功能是:遍历一个整数列表。
其中range()的功能是:创建一个整数列表。
例如:range(5)可以生成一个从0 开始到5结束但不包括5的整数列表[0,1,2,3,4]。
range(5)可以生成从0到4的整数列表。
如果我们需要生成从1到4的整数列表,只需要在range(5)中添加一个初始计数值1,改成range(1,5)就可以啦。
range与切片的区别:
range是生成整数列表,切片是对元组/列表进行切割。
九九乘法表
for i in range(1, 10): for j in range(1, i + 1): print(f"{i}*{j}={i*j}")
三位数组合
这是一道经典编程题,通过1,2,3,4四个数字进行组合,一共会有多少种三位数?
输出所有的三位数组合。
备注:每个数字可以使用多次。
for i in range(1, 5): for j in range(1, 5): for k in range(1, 5): res = i * 100 + j * 10 + k print(res)
第 19 课 初识函数
无参函数
def sayWelcome():print("欢迎光临")print("商品一律九折")sayWelcome()
sayWelcome()
有参函数
def sayWelcome(discount):print("欢迎光临")print(f"商品一律{discount}")
sayWelcome("九折")
sayWelcome("五折")
第 20 课 函数结构
函数经过内部代码的执⾏会产⽣⼀个结果,这个结果可以是⼀个具体的值也可以是多个值。
在本例中,函数计算出正⽅形的周长和面积,函数返回了两个值。
当函数同时返回多个值时,以逗号 “,” 隔开,并且返回值以元组的格式返回。
第 21 课 函数的参数
必选参数
默认参数
必选参数 vs 可选参数
第 22 课 递归与匿名函数
匿名函数定义:
匿名函数是一种不需要为函数命名的函数定义方式,以 lambda 关键字开头。
power = lambda x:x*x*x
print(power(5))
area = lambda l,w,h : l*w*h
print(area(10, 8, 6))
匿名函数不适合处理复杂代码块
递归
匿名函数使用判断表达式
偶数归零定义匿名函数,传入参数x,通过模2运算判断参数x是奇数还是偶数,若为奇数,返回参数x,否则返回0值。
最后,通过参数x为11调用并输出结果。
square = lambda x:x if x % 2 == 1 else 0print(square(11))
递归求和编写一个函数func(),传入参数x,x为列表,使用func()计算参数x内元素的和。
函数内首先判断x是否为空列表,若为空则返回0值,其余利用递归返回列表中第一个值到最后一个值的和。
最后,利用传入参数x为 [1,2,3,4,5]调用函数func(),输出结果。
def func(x): if x == []: return 0 else: return x[0] + func(x[1:])print(func([1,2,3,4,5]))
每日花一半小米有10000块钱,每天花一半,能花多少天呢?
编写一个名为cost() 的函数,传入两个参数分别为money和day,计算参数money最多可以花多少天。
当money小于或者等于0时,返回f"钱花完了,花了{day}天"。 注意:参数money除2时需要取整,以保证有限次递归。
def cost(money, day): if money <= 0: return f"钱花完了,花了{day}天" else: day += 1 money //= 2 return cost(money, day) print(cost(10000, 0))
第 23 课 类与对象
类代表一些拥有相同特性与功能的事物,如鸟类,人类,猫类等。
类中的某一个具体实例称为这个类的实例对象,简称为对象。
类的定义
class Phone(): def makeCall(self, who): return f"正在拨打电话给{who}" def sendMsg(self, who, txt): return f"正在发送短信给{who}, 内容为{txt}"myPhone = Phone()yourPhone = Phone()ret = myPhone.makeCall("Tony")print(ret)ret2 = yourPhone.sendMsg("Jeremy", "中午吃啥?")print(ret2)
类的属性与初始化
class Phone(): def __init__(self, bd, clr): print("创建实例对象时,自动调用此方法") self.brand = bd self.color = clr
练习
汽车信息
创建一个类Car,用来存储有关汽车的信息。初始化以下信息,品牌brand,型号model,购买年份year。 创建getCarInfo()方法,用来返回汽车的基础信息。
创建一个参数为"Audi",“A6L”,"2019"的对象,调用该对象的getCarInfo()方法,输出对应的汽车基础信息。(注意: 各信息之间用英文空格隔开哦~)
输出示例:
Audi A6L 2019
class Car(): def __init__(self, brand, model, year): self.brand = brand self.model = model self.year = year def getCarInfo(self): return self.brand + " " + self.model + " " + self.yearmyCar = Car("Audi", "A6L", "2019")print(myCar.getCarInfo())
第 25 课 使用别人代码的模块机制
导入模块
导入模块(II):导入模块里面的一部分内容
from datetime import datetodayDate = date.today()print(todayDate)
练习:
使用 from…import… ,从datetime模块中导入date类。
获取今天日期的年份,并判断跟实际今年的年份(2021)是否相等。相等输出True,不相等输出False。
from datetime import dateyear = date.today().yearprint(year == 2021)
安装第三方模组
在Windows命令提示窗口里,使用 pip install「ModuleName」命令安装第三方模块。
第 26 课 文件操作入门
使用with打开文件
path = "/Users/aLing/bobo.jpg"with open(path,"rb") as imageFile: print(imageFile)
由于我们要打开一张图片,在这里打开方式为:rb。rb 表示以只读的方式读取二进制文件,即 Read Binary 的缩写。
open() 函数在读取文件时,有时候会发生异常。为了能在发生异常时,自动释放打开的文件资源,我们可以搭配使用 with…as…语句。
使用 with…as…语句,首先执行 with 后面的 open() 函数,返回值会赋给 as 后面的变量。
现在在程序中能够批量打开图片,接下来就要批量读取图片。
在这里,我们可以调用 read() 函数,read() 函数可以逐个字节(或者逐个字符)读取文件中的内容。
由于是以二进制格式打开图片,所以读取的图片内容是二进制格式。
path = "/Users/aLing/bobo.jpg"with open(path,"rb") as imageFile: print(imageFile.read())
最后的代码
# 发件人、收件人sender = "aLing@qq.com"receiverDict = {"xixi":"adc@yequ.com", "kiki":"def@yequ.com", "feifei":"hij@yequ.com", "bobo":"klm@yequ.com", "cici":"opq@yequ.com", "huahua":"rst@yequ.com", "yeye":"uvw@yequ.com", "jingjing":"xyz@yequ.com", "tongtong":"yza@yequ.com"}# 将文件路径/Users/aLing,赋值给变量pathpath = "/Users/aLing"# for 循环遍历字典receiverDict,将键赋值给变量receiverfor receiver in receiverDict: # 将字符串path + "/"+ receiver + ".jpg"拼接,赋值给变量filePath filePath = path + "/"+ receiver + ".jpg" # 使用with...as以rb方式,打开路径为filePath的图片,并赋值给imageFile with open(filePath, "rb") as imageFile: # TODO 使用read()读取imageFile,赋值给变量fileContent fileContent = imageFile.read() # TODO 使用print()输出变量fileContent print(fileContent)
练习一:
with…as 语句配合 open() 函数的方式,读取一个txt文件。
由于要打开一个txt文件,在open()函数中打开方式为"r"。
文件路径:
“/Users/file/诗句.txt”
with open("/Users/file/诗句.txt", "r") as txtFile: print(txtFile.read())
第 27 课 开源模块的应用
登录邮箱
代码的作用
登录邮箱需要使用 smtpObj 调用方法 login() ,该方法中需要传入两个参数,一个是登录的账号,一个是该账号的授权码。
代码的拆解
导入模块中的类后,我们来学习怎么运用。
\1. MIMEMultipart 负责整合邮件内容。
message = MIMEMultipart() —— 表示实例化一个 MIMEMultipart 对象,赋值给 message ,便于后面将邮件信息写入变量中。
\2. Header 负责编辑邮件内容。
message[“From”] = Header(“阿玲aLing@qq.com”)
表示先实例化一个 Header 对象,传入发件人信息;然后将发件人信息,赋值给 message[“From”]。
总结
发送邮件使用 sendmail(),传入三个参数:
\1. 发件人邮箱 sender;
\2. 收件人邮箱 receiverDict[receiver];
\3. 邮件内容 message.as_string(),使用 as_string() 方法将message设置为文本格式。
练习
整理本节课代码,点击「run」运行即可。
对应右侧代码,尝试使用自己的帐号和授权码,修改收件人信息,在本地发送一封简单的邮件吧。
注意:课程中的发件人和收件人帐号均不能使用,否则会报错。
# 使用import导入smtplib模块
import smtplib
# 使用 from...import 从 email.header 导入Header
from email.header import Header
# 使用 from...import 从 email.mime.multipart 导入MIMEMultipart
from email.mime.multipart import MIMEMultipart
# 邮箱帐号设置,"aLing@qq.com"赋值给mailUser
mailUser = "aLing@qq.com"
# 邮箱授权码设置,"abcnawckdujkdace"赋值给mailPass
mailPass = "abcnawckdujkdace"
# 使用smtplib.SMTP_SSL(服务器, 端口号),端口号为465,赋值给smtpObj
smtpObj = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 使用login()函数传入邮箱账户和授权码,登录邮箱
smtpObj.login(mailUser, mailPass)
# 发件人、收件人
sender = "aLing@qq.com"
receiverDict = {"xixi":"adc@yequ.com", "kiki":"def@yequ.com","tongtong":"yza@yequ.com"}
# for 循环遍历字典receiverDict,将键赋值给变量receiver
for receiver in receiverDict:# 实例化 MIMEMultipart 对象,赋值给messagemessage = MIMEMultipart()# 将发件人信息写入 message["From"]message["From"] = Header(f"阿玲<{sender}>")# 将收件人信息写入 message["To"]message["To"] = Header(f"{receiver}<{receiverDict[receiver]}>")# 将主题写入 message["Subject"]message["Subject"] = Header(f"{receiver}-年会邀请函")# 使用sendmail(发送人,收件人,message.as_string())发邮件smtpObj.sendmail(sender, receiverDict[receiver], message.as_string())# 使用print()输出"发送成功"print("发送成功")
第 28 课 实现高效办公
编辑邮件正文
邮件正文需要创建 MIMEText 实例,传入三个参数:
\1. 正文:“Dear xx,邀请你参加年会。”;(可根据实际情况编辑内容。)
\2. 文本类型:“plain”;
\3. 编码:“utf-8”。
题目
整理批量发送邮件的代码,如图所示,复习相关知识点,点击「run」直接运行代码即可。
# 导入所需模块
import smtplib
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
# 邮箱帐号和授权码,连接和登录邮箱
mailUser = "aLing@qq.com"
mailPass = "abcnawckdujkdace"
smtpObj = smtplib.SMTP_SSL("smtp.qq.com", 465)
smtpObj.login(mailUser, mailPass)
# 发件人、收件人
sender = "aLing@qq.com"
receiverDict = {"xixi":"adc@yequ.com", "kiki":"def@yequ.com","tongtong":"yza@yequ.com"}
# 文件路径
path = "/Users/aLing"
for receiver in receiverDict:# 编辑并整合发件人、收件人、主题信息message = MIMEMultipart()message["From"] = Header(f"阿玲<{sender}>")message["To"] = Header(f"{receiver}<{receiverDict[receiver]}>")message["Subject"] = Header(f"{receiver}-年会邀请函")# 编辑邮件正文mailContent = MIMEText(f"Dear {receiver} 邀请你参加年会", "plain", "utf-8")# 读取图片文件filePath = path + "/" + receiver + ".jpg"with open(filePath, "rb") as imageFile:fileContent = imageFile.read()# 编辑附件信息att = MIMEImage(fileContent)att.add_header("Content-Disposition", "attachment", filename="邀请函.jpg")# 整合正文和图片message.attach(mailContent)message.attach(att)# 发送邮件smtpObj.sendmail(sender, receiverDict[receiver], message.as_string())print("发送成功")
第 29 课 大数据挖掘和分析
网络爬虫
定义
网络爬虫,是指“按照一定规则自动抓取网页信息的程序”。
数据分析
定义
数据分析,是将隐藏在一大批看来杂乱无章的数据中的信息 集中 和 提炼 出来。
从而找出数据的内在规律,发现洞见,驱动人的决策。
一个数据分析的流程,包括了数据清洗,描述性分析,探索性分析。
第 30 课 写给夜曲的一封信(内含彩蛋)
题目
No.098通过率:90.58%困难
最后一个人
有50个人围成一圈,顺序排号。从第一个人开始,按1到3循环报数,凡报到3的人退出圈子,问最后留下的那个人是在原来的50人中排第几号。
def jump(n, k):List = list(range(1, n + 1))index = 0while List:tmp = List.pop(0)index += 1if index == k:index = 0continue List.append(tmp)if len(List) == 1:print(List[0])break
jump(50, 3)
No.099通过率:78.90%
夜曲编程Python入门课程Pro相关推荐
- 零基础学python图文版-教到你会为止的Python入门课程即将开班
原标题:教到你会为止的Python入门课程即将开班 [嫌长不看版] 1. " 码上行动"是我们编程教室制作的 Python 基础课程,完全零基础也可以学 2. 课程包括 视频.讲义 ...
- python青少年趣味编程-青少年趣味编程Python系列课程--2018-07-17
青少年趣味编程Python系列课程--2018-07-17 一.系列课程介绍 1.python入门(面向零基础12岁以上的小朋友)--将python基础与python游戏设计结合进行讲解 (1).父与 ...
- python入门课程-Coursera上Python课程(公开课)汇总
原标题:Coursera上Python课程(公开课)汇总 Python是深度学习时代的语言,Coursera上有很多Python课程,从Python入门到精通,从Python基础语法到应用Python ...
- python快速编程入门课后简答题答案-编程python入门 编程python入门课后习题
编程python入门 编程python入门课后习题 米粒妈咪课堂小编整理了填空.选择.判断等一些课后习题答案,供大家参考学习. 第一章 一.填空题 Python是一种面向对象的高级语言. Python ...
- 儿童编程python入门_儿童编程python入门
经常会有小朋友问我,"我想做个黑客,我该学什么编程语言?",或者有的小朋友会说:"我要学c,我要做病毒".其实对于这些小朋友而言他们基本都没有接触过编程语言,只 ...
- 儿童编程Scratch入门课程都学习什么内容?
Scratch几乎是小孩学习编程,最先接触到的软件,与复杂的成人编程语言相比,Scratch更适合孩子理解编程的内在逻辑.孩子用Scratch进行图形化编程甚至不需要编码,而且图形化编程和音乐.图像. ...
- 大蟒蛇:Python入门课程主要讲什么?
Python用中文表达的意思就是大蟒蛇,那么Python入门课程主要有什么? Python基础入门课程包含的内容:变量,运算符,输入输出和条件以及循环语句等知识点,认识Python,学习第一个Pyth ...
- (Python) 牛客 在线编程 python入门
文章目录 前言 AC代码 01 输入输出 NP1 Hello World! NP2 多行输出 NP3 读入字符串 NP4 读入整数数字 NP5 格式化输出(一) NP6 牛牛的小数输出 02 类型转换 ...
- python 计算累计人数_免费Python入门课程,看到就是赚到~
前言 人生苦短,我用python.当下最火的编程语言,你是否也想试试? Python发行于1991年,广泛应用于系统管理任务的处理和WEB编程.创始人阿姆斯特丹Guido为了打发圣诞节的无趣,决心开发 ...
- python入门课程-最好的Python入门教程是?
Python教程领到手,学习不用愁!领! 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基 ...
最新文章
- php动态验证码脚本,这个PHP脚本有什么问题吗? (验证码)
- 滥用网络爬虫技术,多家公司被查!互金行业风控外包时代终结
- php链接本地mysql数据库配置文件_php连接 mysql 数据库如何添加一个公共的配置文件...
- 威纶通定时循环操作宏_威纶通触摸屏宏指令的使用
- html中select只读显示
- python 查找IP地址归属地
- 详解java类的生命周期 .
- 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)
- apqp过程流程图范本_过程流程图(APQP要求)
- Java开源电商系统
- 高等数学 中值定理 一张思维导图解决中值定理所有题型
- 001 【Chrome】浏览器自带取色器
- 2021电赛F题智能送药小车程序代码
- Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读
- 心无界,牧云端:华为云与人工智能的野望
- 【历史上的今天】4 月 10 日:Github 诞生;人类第一张黑洞照片;计算机延误航天飞机
- 麒麟电脑linux微信版本过低,Ubuntu安装微信,解决deepin“版本过低”或NO_PUBKEY问题...
- JUC笔记(synch、ReentrantLock、volatile等)
- 怎样用XMind 8将思维导图导出为Excel文件
- 不用写软件,纯JS 实现QQ空间自动点赞