Python学习总结(day3-day5)
1 复习
day1-day2详细内容可见上一章
①注释
Ⅰ 作用:解释说明
Ⅱ 添加注释 :快捷键ctr+/
②缩进:
Ⅰ 一般顶格无缩进
Ⅱ 缩进快捷键:Tab
Ⅲ 当两行代码写在一行时需要","隔开
③标识符、关键字
Ⅰ 标识符:字母、数字、下划线(注:数字不能开头)
Ⅱ 关键字:True、False、None,特殊含义的词语(中国共产党)
④基本数据类型
Ⅰ 数字:a.意义;b.数学数字;c.int、float
Ⅱ 文本:’ '、" ";str(字符串)
Ⅲ布尔:True、False;(bool)布尔值
Ⅳ空值:None
⑤获取数据类型
int(数据)、float(数据)、str(数据)、bool(数据)
⑥输出:print
⑦输入:input
2 变量
①变量的作用:保存数据(将数据保存到变量中之后,就可以通过使用变量来使用数据)。
Ⅰ使用方式
a.需要时直接提供数据
示例:
需求:打印年龄=18
#方法一:
print(18)
print(89)
#方法二:
age = 18
score = 89
print(age)
print(score)
#比较:法一简单,但需要添加注释,不然意义不明;法二复杂一些,但是可以意义
b.数据保存到变量中以后再使用
示例:
英雄联盟台词:我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长
需求:打印五次台词
print('我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长')
print('我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长')
print('我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长')
print('我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长')
print('我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长')
#如上,代码冗长,报看(不好看),而且如果需要修改,工作量很大。
message = '我不顾一切的冲出去,为你开辟一条安稳的路,我满腔热血的拍打着, 为你抛开
任何绊脚的石,最后,我坦然的微笑着用我的身体为你抵挡一切.因为我的身体上旋转着
我们的誓言。——牛头酋长'
print(message)
print(message)
print(message)
print(message)
print(message)
#得到结果一样,但是下面这份代码的更简洁,如需修改也更为方便。
#通过以上对比得到结论:使用数据的数据一般不要直接使用,而是先将数据保存到变量中,再通过使用变量来使用数据。
②定义变量
Ⅰ 含义:创建变量保存数据
Ⅱ 语法:变量名 = 数据
说明:
a.变量名:有程序员自己命名,但必须符合要求规范
要求:是标识符,不能是关键字;
规范:
见名知义(看到变量名就知道这个变量中保存的是什么数据);
不使用系统函数名(print、input、type)、类名(int、float、str、bool)或模块名(random);
所有的字母都小写,多个单词之间用下划线隔开(目前Python变量名也可以使用驼峰式命名
b.“=”:赋值符号,固定写法
c.数据:需要保存到变量中的对象,可以是任何有结果的表达式
例如:具体的数据、已经赋值过的变量、有结果的运算表达式等
示例:
#狗的名字叫菜菜
dog_name = '菜菜'
#用已经赋值过的数据来给变量赋值
a = 100
b = 'abc'
c = a
print(c)
d = 10 + 20
e = input('请输入一个数据:')
③使用变量
Ⅰ 定义:使用变量就是使用变量中保存的数据。(数据能做的事情,保存这个数据的变量都可以做)
注意:变量必须先定义再使用
示例:
④重新给变量赋值:后赋的值会覆盖掉原有值
示例:
⑤同时定义多个变量:
Ⅰ 同时定义多个变量为相同值:变量1=变量2=变量3=…=数据
Ⅱ 同时定义多个变量为不同值:变量1,变量2,变量3,…=数据1,数据2,数据3,…
示例:
3 数学运算符
①赋值运算符和复合赋值运算符
赋值运算符:+(加)、-(减)、*(乘)、/(除)、%(取余)、//(整除)、**(幂运算)
+(加)、-(减)、*(乘)、/(除)和数学中的一样
不管是简单的赋值运算符还是复合赋值运算符,其功能都是给变量赋值(将一个数据保存到一个变量中)。注意:所有赋值运算符的左边必须是变量,右边必须是能够提供数据的表达式。 其中,除法运算的运算结果的类型一定是浮点型。
复合赋值运算符:+=、-=、*=、/=、%=、//=、**=
语法:变量 += 数据,先将变量中的数据取出来和后面的数据进行加法运算,然后让加法运算的结果保存到前面的变量中。 注意:复合赋值运算符前面的变量必须是已经赋值过的变量
示例:
②取余(取模)
示例1:
示例2:判断两个数是否存在整数关系(即余数是否为0)
示例3:取整数的低位数(即让整数对10或者10的幂次方进行取余操作)
③幂运算
示例:
④整除
示例1:
示例2:去掉一个正整数的低位数,保留高位数
练习:获取任意一个正整数的10位数。
num = 23456
print(num // 10 % 10)
print(num % 100 // 10)
方法一:去掉个位数
方法二:只取十位数和个位数
4 运算
①比较运算:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、!=(不等于)。注意:所有的比较运算的运算结果都是布尔值。
示例1:
示例2:
②逻辑运算
Ⅰ 与(and):如果需要两个条件同时满足,就用and来连接这两个条件;相当于生活中的并且。
运用规则:条件1and条件2:如果两个条件都是True,结果就是True,只要有一个是False
True and True:True
True and False:False
False and True:False
False and false:False
示例:写出判断num是否能同时被3和7整除的条件
练习:写出判断出num是否是大于10的偶数的条件
num = 34
print('num是否是大于10的偶数:',num > 10 and num % 7 == 0)
Ⅱ 或(or):如果需要两个或者多个条件中有一个条件成
运算规则:条件1 or 条件2:如果两个条件都是False,结果才是False;只要有一个是True,结果就是True
True or True :True
True or False : True
False or True:True
False or False:False
练习1:判断num是否能被3或者4整除的条件
num = 234
print('num是否能被3或者4整除:', num % 3 or num % 4 == 0)
练习2:判断指定年份是否是闰年(世纪闰年:能被400整除的年;普通闰年:能被4整除但不能被100整除的年)
year = int(input('请输入年份:'))
print(f'{year}是否是闰年:', (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0))
year = 2003
print(f'{year}是否是闰年:', (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0))
Ⅲ 非(not):对一个条件进行否定
运算规则:not条件:对指定条件进行否定
not True:False
not False: True
示例1:年龄不大于12的条件
示例2:判断num是否等于10
练习:num是否能被3和7同时整除
num = 21
print(num != 10)
print(not num == 10)
③赋值运算:=、+=、-=、*=、/=、%=、//=、**=,所有的赋值运算符都是用来给变量赋值的。
Ⅰ=:将指定数据保存到指定变量中
示例:
Ⅱ+=:将变量保存的数据取出来后进行加法运算,再将结果重新赋值给前面的变量。注意:复合的赋值运算符前面的变量必须是已经定义过的变量。
示例:
Ⅲ-=、*=、/=、%=、//=、**=,同上。
示例:
Ⅳ赋值运算表达式没有结果
示例:
5 运算符优先级
数学运算符>比较运算符>逻辑运算符>赋值运算符
幂运算>乘(*)、除(/)、取余(%)、整除(//)>加(+)、减(-)
6 作业
详见作业章
示例:
7 流程控制
根据代码执行顺序的不同,可将代码分为3种
①顺序结构(默认):代码从上往下按顺序执行(每条语句执行一次)
示例:
②分支结构:根据条件判断是否执行
示例:
③循环结构(for、while):让代码重复执行(代码只写一遍,重复执行多次)
示例:
8 分支控制
①if 单分支结构:如果…就…
Ⅰ语法:if 条件语句:
代码段
Ⅱ说明:if:固定写法;条件语句:任何有结果的表达式,一般为布尔值的表达式;“:”:固定写法;代码段:结构上和if保持一个缩进的一条或者多条语句(至少一条),逻辑上满足条件才需要执行。
示例:根据num的值打印’偶数’(如果num的值是偶数就打印’偶数’)
练习1:根据num的值打印’3的倍数’
num = 79
if num % 3 == 0:
print('3的倍数')
练习2:如果year对应的年份是闰年就打印’闰年’
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400) == 0:
print('闰年')
练习3:若x是整数就打印’整数’
x = 23
if type(x) == int:
print('整数')
②if 双分支结构:如果…就…否则…
语法:if 条件语法:
代码段1(满足条件会执行的代码)
else:
代码段2(条件不成立会执行的代码)
示例:根据num的值打印’偶数’或者’奇数’
练习:根据year的值打印’闰年’或者’平年’
year = 2000
if (year % 4 == 0 and year % 100 != 0) or (year % 400) == 0:
print('闰年')
else:
print('平年')
③if多分支结构:根据不同的条件做不同的事情
方法1:根据不同条件做不同的事情,其中一个条件成立的时候另外的条件也可能成立
语法:if 条件1:
代码段1
if 条件2:
代码段2
if 条件3:
代码段3
方法2:根据不同条件做不同的事情,其中一个条件成立的时候另外的条件绝对不会成立(从前往后判断条件,执行第一个满足条件对应的代码段,一旦某个条件成立,后面的条件不会再判断)
语法:if 条件1:
代码段1
elif 条件2:
代码段2
elif 条件3:
代码段3
…
else:
代码段N
案例:打印指定的百分制分数对应的等级:>=90 - A; [80, 90) - B; [60, 80) - C; <60 - D
9 循环结构
①for循环
for 循环变量 in range(start, end):
语句1
语句2
语句3
range(100) - 0~99的取值范围
range(0, 100) - 0~99的取值范围
range(1, 101) - 1~100的取值范围
示例1:
示例2:输出如下所示的图案
range(1, 10, 2) - 1~9的范围,每次取值在原来的基础上+2
示例3:输出1-9的数字以及它们的平方和立方
示例4:1-100求和
示例5:找出100~999之间的水仙花数(153 = 1 ** 3 + 5 ** 3 + 3 ** 3)
示例6:输入一个大于1的正整数,判断它是不是质数(质数:只能被1和自身整除的数叫做质数,也叫作素数(prime number)。假设这个数是N,如果是质数,那么在2到N-1之间应该没有它的因子。)
示例7:输出100以内的质数
②while循环
while 循环条件(产生布尔值的表达式):
语句1
语句2
语句3
条件如果成立,就执行循环体中的代码;条件不成立,离开循环执行后续代码。
注意:在写while循环的时候,如果循环条件一直成立,循环就成了死循环!!!循环次数在一开始就能确定下来,我们可以直接构造一个范围使用for循环;如果循环次数不能确定,需要通过条件进行控制,我们就使用while循环。
示例1
写while循环会出现死循环,此时在终端用Ctrl+C,终止进程的执行(Windows:任务管理器;macOS:活动监视器)
示例2:
猜数字小游戏:
计算机产生一个1-100随机数让人来猜,人输入自己猜的数字,计算机会提示人"大一点"、“小一点”、“猜中了”,如果没有猜中游戏继续,如果猜中了游戏结束,如果猜了7次以上,计算机提示"智商捉急"。
10 作业(day4)
题目:
作业1:输出一个乘法口诀表(九九表)
作业2:输入两个正整数,求它们的最大公约数和最小公倍数
作业3:输入十个数,计算出平均值
作业4:输入两个正数n和k,n>=k,计算排列数和组合数
作业5:输入三角形三条边长,先判断能否构成三角形,如能计算其周长和面积
①自写结果
②评讲结果
11 分支循环结构经典案例
①百钱百鸡问题
公鸡5元一只,母鸡3元一只,小鸡1元三只,欲用100元买100只鸡,问公鸡、母鸡、小鸡各多少只?
提示:三个未知数,两个方程,可以假设公鸡、母鸡、小鸡分别为x,y,z只
x + y + z = 100
5x + 3y + z/3 = 100
②捕鱼
有ABCDE五个人去捕鱼,捕完鱼太累倒头睡觉。第二天,A第一个醒过来,他把鱼分成5份,扔掉多余的1条,拿走自己的一份;B第二个醒过来,他以为鱼还没有分过,把剩下的鱼分成5份,扔掉多余的1条,拿走自己的一份;C、D、E依次醒过来,都是按照上面的方法,把鱼分成5份,扔掉多余的1条,拿走自己的一份。问,他们最少捕了多少条鱼?
③CRAPS赌博游戏
摇两颗色子,玩家摇色子,如果第一次摇出了7点或11点,玩家胜;如果摇出2点、3点、12点,庄家胜;其他情况,游戏继续,玩家重新摇色子,如果摇出了第一次摇的点数,玩家胜;如果摇出了7点,庄家胜;其他情况,游戏继续,玩家重新摇色子,直到分出胜负。
要求:模拟游戏场景,输出玩家胜还是庄家胜;玩家一开始有1000元,每次玩的时候下注,赢了获得对应的注码;输了就输掉对应的注码;游戏结束的条件是玩家破产。
④把两颗色子摇10000次,统计每种点数出现的次数和频率
⑤找出10000以内的完美数。(完美数:如果一个数等于除自身以外所有因子的和,那么这个数就叫完美数。)
12 心得
经过一周的学习,我对python的了解也逐渐深入。基础知识对于我们新学者非常重要,所以在第一周的学习进程内比较缓慢且详细。
在最后两天案例的学习中,颇为迷茫,因为基础知识只能是帮助我们认识python,但当遇到实际问题时,还是依靠思维。代码的设计和语言的转换还是要依靠经验和重复练习,解题的套路千变万化,熟悉并灵活运用才能达到目的。条条大路通罗马,但罗马只有一个。
而且在学习中,我认识到代码不仅要写的好看,更要实现高效率。代码优化一直是我在学习中的重难点,招式很多,但是不止要潇洒更要高伤害。所以在后续的学习中,我会更加勤于思考这方面的问题。