第 1 课 编程中的文本

打印命令 print()

打印数字 print(1024)

打印字符串 print(“1024”)

  • 单双引号都可以,一般双引号。
  • 如果字符串表达里有某个引号,可以选用另外一种引号。
  • 如果字符串表达里有单双引号,用转义字符。

python编码需要顶格编程

python 注释是#号

# 注释内容,#号后面有空格

第 2 课 变量与赋值

变量名只能由字母、数字、下划线组成。

  1. 不以数字开头
  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):

  1. 定义方式
  2. 访问元素
  3. 修改元素
  4. 添加元素
  5. 删除元素

in运算符

想要快速判断列表或者元组中是否有某一个元素,可以使用in运算符。

in运算符的左边是要查找的元素,右边是定义的元组或列表。

in运算的结果,是一个布尔值(True/False)。

第 14 课 for循环的基础操作

遍历字典的键
for 循环遍历字典的键,有两种方法可以使用:

  1. for 循环遍历字典;
    这个方法和 for 循环遍历列表的格式类似。
  2. 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相关推荐

  1. 零基础学python图文版-教到你会为止的Python入门课程即将开班

    原标题:教到你会为止的Python入门课程即将开班 [嫌长不看版] 1. " 码上行动"是我们编程教室制作的 Python 基础课程,完全零基础也可以学 2. 课程包括 视频.讲义 ...

  2. python青少年趣味编程-青少年趣味编程Python系列课程--2018-07-17

    青少年趣味编程Python系列课程--2018-07-17 一.系列课程介绍 1.python入门(面向零基础12岁以上的小朋友)--将python基础与python游戏设计结合进行讲解 (1).父与 ...

  3. python入门课程-Coursera上Python课程(公开课)汇总

    原标题:Coursera上Python课程(公开课)汇总 Python是深度学习时代的语言,Coursera上有很多Python课程,从Python入门到精通,从Python基础语法到应用Python ...

  4. python快速编程入门课后简答题答案-编程python入门 编程python入门课后习题

    编程python入门 编程python入门课后习题 米粒妈咪课堂小编整理了填空.选择.判断等一些课后习题答案,供大家参考学习. 第一章 一.填空题 Python是一种面向对象的高级语言. Python ...

  5. 儿童编程python入门_儿童编程python入门

    经常会有小朋友问我,"我想做个黑客,我该学什么编程语言?",或者有的小朋友会说:"我要学c,我要做病毒".其实对于这些小朋友而言他们基本都没有接触过编程语言,只 ...

  6. 儿童编程Scratch入门课程都学习什么内容?

    Scratch几乎是小孩学习编程,最先接触到的软件,与复杂的成人编程语言相比,Scratch更适合孩子理解编程的内在逻辑.孩子用Scratch进行图形化编程甚至不需要编码,而且图形化编程和音乐.图像. ...

  7. 大蟒蛇:Python入门课程主要讲什么?

    Python用中文表达的意思就是大蟒蛇,那么Python入门课程主要有什么? Python基础入门课程包含的内容:变量,运算符,输入输出和条件以及循环语句等知识点,认识Python,学习第一个Pyth ...

  8. (Python) 牛客 在线编程 python入门

    文章目录 前言 AC代码 01 输入输出 NP1 Hello World! NP2 多行输出 NP3 读入字符串 NP4 读入整数数字 NP5 格式化输出(一) NP6 牛牛的小数输出 02 类型转换 ...

  9. python 计算累计人数_免费Python入门课程,看到就是赚到~

    前言 人生苦短,我用python.当下最火的编程语言,你是否也想试试? Python发行于1991年,广泛应用于系统管理任务的处理和WEB编程.创始人阿姆斯特丹Guido为了打发圣诞节的无趣,决心开发 ...

  10. python入门课程-最好的Python入门教程是?

    Python教程领到手,学习不用愁!领! 作为一门编程语言,Python是属于入门比较简单的.所以身边不少人都选择了自学Python,而且网上相关资料也有很多,知识兔分享大量的Python教学课程,基 ...

最新文章

  1. php动态验证码脚本,这个PHP脚本有什么问题吗? (验证码)
  2. 滥用网络爬虫技术,多家公司被查!互金行业风控外包时代终结
  3. php链接本地mysql数据库配置文件_php连接 mysql 数据库如何添加一个公共的配置文件...
  4. 威纶通定时循环操作宏_威纶通触摸屏宏指令的使用
  5. html中select只读显示
  6. python 查找IP地址归属地
  7. 详解java类的生命周期 .
  8. 从入门到入土:python爬虫|scrapy初体验|安装教程|爬取豆瓣电影短评相关信息(昵称,内容,时间和评分)
  9. apqp过程流程图范本_过程流程图(APQP要求)
  10. Java开源电商系统
  11. 高等数学 中值定理 一张思维导图解决中值定理所有题型
  12. 001 【Chrome】浏览器自带取色器
  13. 2021电赛F题智能送药小车程序代码
  14. Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读
  15. 心无界,牧云端:华为云与人工智能的野望
  16. 【历史上的今天】4 月 10 日:Github 诞生;人类第一张黑洞照片;计算机延误航天飞机
  17. 麒麟电脑linux微信版本过低,Ubuntu安装微信,解决deepin“版本过低”或NO_PUBKEY问题...
  18. JUC笔记(synch、ReentrantLock、volatile等)
  19. 怎样用XMind 8将思维导图导出为Excel文件
  20. 不用写软件,纯JS 实现QQ空间自动点赞

热门文章

  1. mysql带参数游标_mysql游标的使用
  2. 医院耗材管理系统开发_17
  3. 文件编程概念(C语言库函数系统调用API)
  4. python学习笔记之读取pdf文件库pdfplumber(一)
  5. modelsim安装_Modelsim10.5安装教程
  6. CCNA3.0中文版教材
  7. JavaScript高级程序
  8. sql服务器密码如何显示,如何查看sql数据库密码
  9. QSqlRelationTableModel使用示例
  10. 熊猫烧香病毒源代码及分析