Python学习笔记1(基础入门)
本文最后更新于:2024年4月10日
内容包括:编程基础&数据结构与判断&循环&函数和类&编程实践
编程基础
Lesson1:编程中的文本
概念
代码(Code)
程序员用某种编程语言写出来的文本,可以被计算机一行行地执行。
代码
Print()
在电脑屏幕上输出内容。
括号内为具体需要输出的内容。
输出的内容为字符串时,需要将字符串用双引号括起来。
在 Python 中,使用单引号或是双引号都可以创建字符串。
代码
字符串(String)
作用:编程中表示文本的数据类型。所有用引号括起来的数据,都是字符串。
在引号的内部,数据可以是英文、中文、数字等等,只要是被双引号括起来的数据,都是字符串。
Python的代码规范
空行:代码之间用空行分隔,表示一段新的代码的开始。在编写时不插入空行,Python运行也不会出错。
顶格:同一级别的代码需要顶格开始写,不能有空格,不然程序会报错。
概念
输入(Input)
输入是指外界传递给程序的数据。
输出(Output)
输出是指程序传递给外界的数据。
代码
注释(Annotation)
注释的作用是对代码进行批注说明。
注释以#开头,用于告诉电脑,这行代码是注释,不需要被电脑执行。
在 # 后空一格,与文本分开,这样内容不会堆积,看起来整洁和美观。
Lesson2:变量与赋值
概念
变量(Variables)
变量是编程语言中能存储数据的抽象概念,它可以存储各种数据。
变量名只能由字母、数字、下划线、中文组成。
需要注意的是:
变量不能以数字开头;
变量不能包含空格;
变量对大小写敏感,变量A和变量a是不同的。
常量(Constant)
常量是指在程序运行时不能被修改的数据。
比如整数 175,小数 52.5,字符串 “Tony” 都是常量,它们是不能被修改的。
代码
赋值(Assignment)
赋值需要用到等号“=”,所以等号“=”又叫做“赋值运算符”。
例如:name = “Tony”就是一次赋值,将常量”Tony”赋值给变量name。
变量作为一个存储数据的“地方”,其中的东西是可以改变的。
给一个变量进行两次赋值后,仅保留最后一次赋值的数据。
可以将变量A赋值给变量B。
代码
格式化输出(Formatted Output)
格式化输出让我们可以对字符串里的内容进行灵活替换。
name = “Tony”
print(f”My name is {name}”)
上述代码表示将变量name的值(此处为Tony)在print代码中输出。
字符串之前的小写字母 f 表示这个字符串需要进行格式化输出。
注意是小写字符f而不是大写字母F。
需要用变量替换的部分用大括号{}进行标记。
转义字符
转义字符是一种特殊的字符,它们以反斜线 \ 开头,例如换行符 \n 。
当字母 n 与反斜线 \ 结合后,它们的含义和功能相比之前发生了转变,因此这样的字符被称为转义字符。
Lesson3:编程中的数字
概念
整型(Integer)
整型是Python中用来表示整数的数据类型。
整型直接通过数字来表示,且无需添加引号。
如果用来表示负数,可以在数字前添加一个负号(-)。
跟字符串类似,我们也可以使用print()功能输出一个整型。
浮点型(float)
浮点型是用来表示浮点数的数据类型,是编程语言里用来呈现和存储小数的一种方式。
它通过数字和小数点来表示,无需添加引号。
如果表示负数,可以在数字前添加一个负号(-)。
同样的,使用print()功能也可以输出一个浮点型数据。
代码
四则运算
a = 1
b = 2
print(a+b)
print(a-b)
print(a*b)
print(a/b)
整型之间加、减、乘法的计算结果是整型。
整型之间除法的计算结果,都是浮点型。就算刚好整除,也会得到一个浮点型数据。
浮点型的计算结果是浮点型,只要参与运算的双方有一个是浮点型,那么结果也是浮点型。
代码
取整和取模(Round And Modulo)
当两个数无法整除的时候,我们会得到一个余数。
例如:7÷3=2……1,2被称作商,1被称作余数。
取整运算用于求取两个数相除之后的商。取整运算的符号是//。
取模运算用于求取两个数相除之后的余数。取模运算的符号是百分号 %。
四则运算,遵循“先乘除,后加减”的运算顺序。
倘若运算中,包含了取整取模,就要遵循“先乘除取整取模,后加减”的运算顺序。
字符串的运算
一般情况,字符串是不可以和整型以及浮点数数据进行运算的。
若进行运算,计算机会报错“TypeError”。
仅有两种情况下,字符串可以进行运算:
①整型和字符串相乘:整型*字符串,输出的结果,是将字符串重复几次拼接在一起。
②字符串和字符串相加:字符串+字符串,输出的结果,是这几个字符串的拼接。
Lesson4:编程中的真与假
概念
布尔数(Boolean)
布尔数是一种数据类型,它只有“真”(True)和“假”(False)两种值。
True 和 False 不加引号。
代码
比较运算(Comparison Operation)
a = 3
b = 1
print(a > b)
上述代码输出结果为true(a确实大于b)。
类似”>”,”<”这样,对二者进行比较的,我们称为比较运算符。
除了”>”,”<”这两个比较运算符以外,还有:
== 等于符号,注意是两个等号,要和=赋值区分开 ;
>= 大于等于符号;
<= 小于等于符号;
!= 不等于符号。
代码
逻辑运算(Logic Operation)
逻辑运算,是针对多个“真”、“假”命题进行判断的运算。
“并且(and)”、“或者(or)”和“非(not)”是常见的三种逻辑运算。
and运算符表示“并且”:
仅当and左右两边的布尔数均为True时,运算结果才为True。
其它情况下,运算结果都为False。
or运算符表示“或者”:
只要当or左右两边的布尔数有一个为True时,运算结果就为True。
也就是说,只有当or左右两边的布尔数均为False时,运算结果才为False。
not运算符表示“非”:
与and和or不同,not运算符只会运算一个布尔数,表示对这个布尔数进行取反。
也就是说,not True 运行结果是False,not False运行结果是True。
注意True和False都要首字母大写。
当涉及多个条件时,在Python中常会将比较运算和逻辑运算混合使用。
在此时,Python会优先执行比较运算,再按优先级顺序执行多种逻辑运算。
逻辑运算间的优先级为not > and > or。
如果想控制代码执行的顺序,可以对希望优先执行的运算使用括号。
概念
布尔表达式(Boolean Expression)
无论是进行简单的比较运算,还是进行了逻辑运算,或者是混合使用。
在Python中,只要运算结果是True或False。这样的运算式,都被统一称为布尔表达式。
Lesson5:单向选择的判断
概念
判断语句(Judgment Statement)
判断语句是程序的三大语句结构之一。
它的作用是根据判断的条件是否成立(真或假),来决定后续代码执行顺序。
代码
if判断(If Statement)
yourAge = 20
myAge = 18
if yourAge > myAge:
print(“你的年龄比我大”)
上述代码判断yourAge是否比myAge大,如果结果为True,则输出相应语句。
程序运行到 if 判断时,如果条件为真,则进入执行部分;完成后,程序接着运行 if 判断下面的代码。
程序运行到 if 判断时,如果条件为假,程序就直接跳开 if 判断的执行部分,运行后面的代码。
注意if判断的执行部分需要前置四个空格。
概念
关键字(Keyword)
关键字是程序语言中有特殊意义的单词,它们都不能被当作变量名使用。
在我们已经学过的知识里,and,or,not,True,False都是关键字。
此外,由于变量名区分大小写,所以 if 不能作为变量名,但 IF 、If、iF可以。
概念
缩进(Indentation)
Python 中不同层级的代码之间强制要求缩进,并且相同层级的代码要求缩进的空格数量一致。
在Python中,缩进的数量不做强制的要求,可以 1 个空格,可以 2 个空格。
建议每个缩进用 4 个空格,这是一种比较美观易读的代码风格。
代码块(Code Block)
同一层级的代码集合叫做代码块,代码块中的代码会按由上至下的顺序执行。
在 Python 中,通过缩进来划分代码块。
if 判断后面跟随条件,如果条件成立,程序执行归属于 if 判断的一个代码块。
这时候就需要使用缩进组织代码块,区分代码的层级。
在连续的多个 if 判断中,每一个 if 判断内都有一个代码块。
只有当 if 条件成立时,程序才会执行这个 if 判断里面的代码块。
如果条件不成立,程序就会跳开这个 if 判断,继续运行接下来的代码。
Lesson6:双向选择的判断
代码
if-else判断
yourScore = 80
myScore = 90
if yourScore > myScore:
print(“你的得分比我高”)
else:
print(“你的得分不比我高”)
关键字 else,如果之前的 if 判断条件不成立,就执行 else 的代码块。
在 else 之后使用冒号,表示后续缩进的代码块在判断条件不成立的时候会被执行。
程序运行到 if 判断时,如果条件为真,执行 if 的代码块。
程序运行到 if 判断时,如果条件为假,程序就直接跳开 if 判断的执行部分,运行 else 的代码块。
if-else 语句有两个特性:
①else 需与 if 搭配使用,它无法独立出现。必须先有 if,然后才能使用 else,否则程序就会报错。
②if 与 else 成互斥关系。程序不会既执行 if 内的代码块,又执行 else 内的代码块。
概念
空值(null)
空值,又叫 NULL 值,在 Python 中写作 None。None 是关键字。
它代表这个数值不是整型,不是字符串,不是浮点型,表示没有值。
注意,它和 0 不一样,因为 0 的值是 0,而空值的值是None。
非空(Non-null)
当一个变量里有值,并且这个值不是空值(None),我们就说这个变量“非空”。
同时我们也把所有不是空值的值称为“非空值”。
布尔表达式和非零非空数据,都可以作为判断语句的条件。
在判断语句中,对非零值判断为真;对数字0的判断为假;对 None 的判断为假。
数据结构与判断
Lesson1:复杂的多向选择
代码
elif判断
day = 3
if day == 1:
print(“元气满满地工作”)
elif (day >= 2) and (day <= 5):
print(“继续搬砖吧”)
else:
print(“世界这么大,出去走走吧”)
使用elif进行多向选择的判断。
if-elif-else 语句有3个特性:
①若不满足 if 条件,判断是否满足 elif 的条件,满足就执行 elif 内的代码块,不满足就执行 else 内的代码块。
②elif 需与 if 搭配使用,它无法独立出现。必须先有 if ,然后才能使用 elif ,否则程序就会报错。
③if 、elif 与 else 成互斥关系。程序不会同时执行 if 内、 elif 内和 else 内的代码块,只会执行其中一个。
判断的条件超过3个时,中间的多个条件都能使用 elif ,无论中间有多少个 elif ,它和 if 、elif 都是互斥关系。
概念
嵌套(Nested Structure)
嵌套语句是指将一个语句装在另一个语句里。
代码
if嵌套
time = 13
num = 2
if (time >= 9) and (time <= 23):
print(“在打折时间内”)
if num >= 2:
print(“全场八折”)
上述代码在第一个if内的代码块中嵌套了另一个if语句。
嵌套的原则是先确定外层条件再确定内层条件,只有当外层条件成立时,才进入到内层条件当中继续执行。
在相互嵌套时,一定要严格遵守不同级别代码块的缩进规范。
每嵌套一层都需要在原有缩进的基础上,再增加相应的缩进。
不仅是 if 嵌套 ,在Python中,if 、if-else 和 if -elif-else 之间也可以相互嵌套。
Lesson2:数据和判断小结
Lesson3:储存多个数据的元组
概念
数据结构(Data Structure)
数据结构是计算机存储和组织数据的方式。
数据结构有很多种,其中使用最多的,是元组(tuple)、列表(list)、字典(dict)这三种。
元组,是一种由多个数据组成的有序数据集合。
代码
元组(Tuple)
元组,是一种由多个数据组成的有序数据集合。
它就像一排抽屉,我们可以在抽屉里面放不同的东西。
calendar = (“1月1日”, “1月2日”, “1月3日”, “1月4日”)
print(calendar)
一个括号,是定义元组的固定格式。
三个逗号,逗号是用来分隔元组里面各个元素的固定符号。
元组里可以存储各种各样的数据类型,一个元组可以完全由整型、浮点型、字符串、布尔数构成。
也可以由这几种数据类型的常量混合组成。
代码
索引(Index)
元组中的数据是有顺序的。
例如calendar这个元组里面,排在第一位的是”1月1日”,第四位的是”1月4日”。
当我们输出calendar[0]的时候,就得到了这个元组的第一个数据。
像这样访问它内部数据的机制,叫做“索引”。
索引是在数据结构中用来定位和寻找数据的检索方式。
可以通俗理解为索引是数据的位置。
索引都是从0开始的。因此,第一个数据的索引为0,第二个数据的索引为1,以此类推。
可以通过中括号[]和索引的方式,直接访问到某一个位置的元素。
代码
IN运算
倘若一个元组的元素非常多,我们想要寻找某一个数据,是不是在元组中,用肉眼看的方式非常麻烦。
元组这样的数据结构,有一种运算方式,叫in运算符,可以进行快速判断。
numbers = (0,1,2,3,5,8,13,21,34,55,89,144,233,377)
result = 5 in numbers
print(result)
上述代码的输出结果为true。
课后练习
Lesson1:编程中的文本
注释练习
编写注释,并使用print()分行打印给定内容。
1 |
|
Lesson2:变量与赋值
格式化输出
将字符串”变量”赋值给 word,再使用 word 格式化输出以下句子:
今天我们学习了变量。变量能够存储不同的数据。
1 |
|
Lesson3:编程中的数字
情暖中秋
公司采购了100个月饼,以及一批包装盒,每个包装盒里需放3个月饼。
①计算出这些月饼一共可以装满多少个包装盒,将结果赋值给变量boxNum并使用print()格式化输出:
月饼可以装满{boxNum}个包装盒
②计算装满所有的包装盒后,还剩下多少个月饼没有包装,将结果赋值给变量left并使用print()格式化输出:
还剩下{left}个月饼没有包装
1 |
|
Lesson4:编程中的真与假
目标体重
最近正在健身的小夜目标体重为 60.2。今天称重发现自己的体重达到了 60.2。
输出小夜今天的体重,再与目标体重对比,如果相同则输出”True”。
1 |
|
Lesson5:单向选择的判断
选择一款手机
大学开学前,Jack想换一个白色的手机。
但Jack预算只有6000元,那么在最新一代手机里,他能换哪款手机呢?
已知:
iphone12 = 7299 颜色为红色
xiaomi10 = 3699 颜色为白色
请编写程序判断手机的价格和颜色,输出 Jack 可以购买的手机型号。
输出示例(手机型号全小写,按顺序输出):
可以购买xiaomi10
1 |
|
Lesson6:双向选择的判断
报考飞行员
小夜的男同学今年20岁,身高175,他想要报考飞行员。
飞行员的要求是年龄在17到27岁之间,身高在169到185之间,小夜的同学满足报考条件么?
请编写代码,让程序判断是否满足报考条件:
①20赋值给变量age,175赋值给变量height;
②使用 if-else 判断,如果age在17到27之间(包括17和27)。
并且height在169到185之间(包括169和185),输出“符合报考条件”;否者,输出“不符合报考条件”。
1 |
|
Lesson1:复杂的多向选择
奇数还是偶数
①给一个变量 num 赋值23。
②第一层判断,如果 num 大于0,就输出”num大于0”,再进一步判断:
—–如果 num 是偶数(除以2的余数为0),就输出”num是正偶数”,
——否则,输出”num是正奇数”。
③否则,直接输出”num小于等于0”。
1 |
|
Lesson3:储存多个数据的元组
身份证编码
小华的身份证编码如下:
id = (‘5’, ‘4’, ‘0’, ‘1’, ‘0’, ‘1’, ‘1’, ‘9’, ‘9’, ‘9’, ‘0’, ‘1’, ‘0’, ‘9’, ‘*‘, ‘*‘, ‘*‘, ‘*‘)
我国18位身份证号码的7-14位表示出生年、月、日。请据此输出小华的生日。
1.通过索引的方式提取身份证号码的7-14位拼接,并分别赋值给year,month,day;
2.格式化输出{year}-{month}-{day}。
输出示例:1999-01-09
1 |
|