07:55达到实验室,刚刚冲完一杯豆浆和一杯热水。
准备背10-15Min单词,Action!
08:22 跟师弟聊天聊了五分钟
开始学习
1.1循环结构
if是判断一次,条件为True执行一次
while是判断N+1次,条件为True执行N次
while循环:
如果为False就没有然后了,为True就执行
举个if的例子,就这么一次
再举个while的例子
让我们调试一下
而if就没有了,就这么一次
while判断N+1次,条件为True执行N次
四个步骤
1.初始化变量
2.条件判断
3.条件执行体
4.改变变量
while记得加个:
根据以上这四个步骤写一段程序代码:
sum=0 #------初始化变量-- a=0 #------条件判断-- while a<5: #------条件执行体-- sum+=a #-----改变变量---- a+=1 print(sum)
sum=0
a=0
while a<5:
sum+=a
a+=1
print(sum)
取余为0写成x%2==0这才x%2=1就为奇数喽
来个计算 while
计算1-100之间的偶数和,那四个步骤,两种办法,使用while和if,但一定要记得缩进这个问题,if下的还是while下的。
第二种使用与逻辑,但是记住从2开始,因为0不是正偶数,1也不符合条件直接False。while遇到False直接作废就失去效果了。
上程序截图:
两种办法。注意取余哈 a%2==0。表示偶数。还有while后面+:还有缩进以及初始化和改变变量。
for-in循环、
必须针对是可迭代对象,(字符串和序列等)
for:自定义变量 ,in:可迭代对象:循环体
for+自定义变量 in +可迭代对象:
while if for都有:
第一次取p,第二次取y ....依次取
昨天学的range(),就是序列,也是可迭代对象,列表是[].,range记得哈 ,左闭右开。
如果循环体种不需要使用前面的自定义变量则将自定义变量写成“_”
循环了三次,这里的range变成了循环次数
所以就会产生,那么你循环体既然可以给我,这么多变量,我是不是可以用来就算1-100之间的数字和。依次给它使其计算。而且还能算偶数和。
sum=0 a=0 for a in range(1,101): if a%2==0: sum+=a print(sum)
让我们来做一个水仙数,就是每位的三次幂等于这个数。
for a in range(100,1000,2): ge = a%10 shi=a//10%10 bai=a//100 if ge**3+shi**3+bai**3==a: print(a)
这里的取余%10,意思是和10相除,剩下的余数就是个位
十位是和10整除再和10取余等于十位
百位是和100整除
然后a%=2,意思是和2取余后还给a; a%2==0,意思是a和2相除余数为0,a%10=b意思是b为a和10取余后的数还给b,我那个步长为2
1.2流程控制语句break
for ... in ...
...
if ...
break
第二种‘
while
...
if...
break
if 后面不解赋值,接的是等于==
我们举个例子,取存钱,然后输入三次密码,输入对就不用管了,但是有三次输入机会。
if ...break...意思是 当进入到if中,程序就会跳出来。相当于终止了。可以跳出while和for in循环。
for a in range(3): pwd=input('请输入密码') if pwd=="888": print('恭喜输入正确') break else: print('密码不正确')
我来详细的解释一下:
1.就是对于for..in..循环中,你若不用到变量,那么range有几次。就会循环几次。
这里是3次
2.别忘记,if 后面接的是== ,而不是赋值,赋值就错误了。
3.input是str类型的。
4.进入到if..break..那么程序就会跳出while与for...in..循环。程序终止。
我秉承着好奇心,尝试更换一下,没成想还真的实现了。原来输入台可以是数字也可以是字符串,看你程序给它规定是什么,程序没错,那么就都没错。
for a in range (3): pwd = int(input('请输入密码:')) if pwd== 888: print('恭喜输入正确') break else: print('密码不正确')
它还有一个方法可以实现,那就是用while,那四步法。先初始化变量,看你规定的次数,然后再逐次加1即可。
这里面记得缩进,不然会一直有次数,把那个a+=1,缩进放入到while里面去。
流程控制语句:continue
用于结束当前循环,进入下一个循环,通常与分支结构中的if一起使用
例如:
for ...in..
if...
continue...
或者
while ....
if...continue..
与上面的break正好相反,它会从头再来,而break是不管了的。
核心就是,if..continue是一种互补的关系,满足if再达到continue的时候,就会继续循环,不满足条件的就跳出来。可以被打印出来。
举个例子:
for a in range(1,51): if a%5!=0: continue print(a)
注意的是,取余不为0代码是!=0,然后满足条件就continue,不满足就跳出来。
一般continue后面不接程序了。
if不满足就跳过continue程序。
else语句:
有三种情况:
1.if...else..
2.while..else..
3.for..else..
else遇到break,就不会执行程序了。
举个例子:
还是存钱或者取钱密码。用两种方式:
第一种:用for...in..
程序如下:
for a in range(3): pwd=input('请输入密码') if pwd =='888': print('正确') break else: print ('密码不正确') else: print('用户已被上锁')
第二种:用while
a=0 while a<3: pwd=int(input('请输入密码')) if pwd ==888: print('恭喜正确') break else: print('不正确') a+=1
再微微的美化一下:
发现原来,while也可以和else搭配使用。但是得等到while结束循环时才可以执行else。
------刚刚吃完饭回来,再学习20Mins准备回寝室睡觉 12:01
1.3嵌套循环
外层循环:while
内层循环:for...else..
例如:输出一个3*4的矩形
-------睡了一小时午觉,帮导师调课和班级的会议,现在14:47开始学习
举个例子,程序代码如下:
for i in range (1,4): for j in range(1,5): print('*',end='\t') print()
外层是行数,3行
内层是列数 4列
这里的end/t是什么意思?本来end表示换行符的意思,但有个制表符,就不会换行。有四次在内部循环
接着到外面的行数,三次这样的循环就成了这样的3*4矩阵
这里的end表示的是,不换行操作。如果是end'\t'这里的\t相当于让之间的空隙变大。
不过大的话,还是不换行的情况下就是end=''
其次是print(),它保证的是换行的意思。相当于\n
最后在列数那里,行数和列数是有关系的,即相等关系,一行有一列,两行有两列
for i in range(1,10): for j in range(1,1+i): print('*',end='\t') print()
所以我们来做一个9*9乘法表
程序如下:
for i in range(1,10): for j in range(1,i+1): print(i,'*',j,'=',i*j,end='\t') print()
列数那里,一开始是1,后来你行数增加了1也就是2,那么列数是2+1=3,秉持着左闭右开的原则,列数也就是2 所以正好有两列。
i和j是变量,不需要加引号,其次i与j还有*是两种类型,需要加,最后根据9*9乘法表形式,打出来就可以了。然后距离再大一点用end=‘\t'来表示。
1.4二重循环中的break和continue
形式如
while...
for ..
if ...
break..
else..
里面的break不会影响它外层循环。
把break换成continue,会继续进行里面的循环
在这里我们举个例子:
for i in range(6): for j in range(1,20): if j%2==0: break print(j)
我来详细解读下这个程序,i一共有6次,然后你不用这个变量那么你就得循环6次,其次满足取余等=的话,就中止了,直接跳出这个循环,一开始是1不满足取余不会中止程序,给到print,输出出来,但是2的话,就中止了,就停止了,内部消化了。从i开始继续开始,所以每次都是到2就中止,到1就print,会有6次。
这就是结果。遇到break就不管还有啥子程序,一律干掉!
与它相反的continue,就可以从头再来,也是“中止”掉符合条件的程序,再次循环。跟if有种取反的味道,在专业词汇上讲叫做互补。
for i in range(6): for j in range(1,20): if j%2==0: continue print(j,end='\t') print()
上截图
print()换行,end=\t保持一行,然后符合contiunue那个条件就开始继续循环,不打印出来。
有6行。
注意总结一下:
range()是生成整数数列
break:退出当前循环结构
continue:结束当前循环进入下一次循环
else:
if...else..
while..else
for...else..
while:用于次数不固定得循环,以及初始条件不成立一次都不执行while还有for完成嵌套循环
for..in..用于遍历可迭代对象
外循环循环一次,内循环完成一轮。
2.列表
变量可以存储一个元素,而列表可以存储N个元素,可存储不同的类型,可整体操作。
列表就可以想成书包,啥能装。
列表的写法是用中括号,形如lst=[]
lst=['hello','wolrd',98,52.2] print(id(lst)) print(type(lst)) print(lst)
记住:不同的类型用逗号隔开
2.2列表的创建
列表用方括号 []
定义,元素之间用逗号 ,
分隔。
---------刚刚辅导员开了一个民主会议----时长一小时刚回来。开始学习
20:00
第一种方式:使用方括号[]
例如:lst=['hello','world',98]
第二种方式:使用内置函数list()
例如:lst2=list(['hello','world',98])
2.3列表的特点:
1.按顺序排序
2.索引映射一个数据 从左到右,从0开始。从右到左,从-1开始。 用方括号索引[],
形式如下:、
lst=['hello','world',98] print(lst) print(lst[0]) print(lst[-3])
3.可重复存储数据 可以存两个hello甚至多个
4.任意数据类型混存 有str还有int
5.根据需要动态分配和回收内存 存多少都可以
2.4列表的查询操作
获取列表中指定元素的索引
1.若列表中存在N个相同元素时,只返回相同元素第一个索引。用index
lst=['hello','world',98,‘hello'] print(lst.index('hello'))
index
是列表对象的一个方法,它用于查找某个元素在列表中的位置(即索引),并返回这个位置的数值
此外还可以在start和stop之间进行查找
lst=['hello','world',98,'hello']
print(lst.index('hello'))
print(lst.index('hello',0,3))
形式为index(要查找的对象,start,stop) 记住的是左闭右开。 就是 0 1 2
2.4.2获取列表中的单个元素
正向索引从0到N-1
逆向索引从-N到-1
lst=['hello','world',98,'hello'] print(lst[2])
形式为对象[n],n指的是你要获取的位置
2.4.3 获取列表中的多个元素
语法格式:列表名[start:stop:step] 对象[]获取元素
lst=[10,20,30,40,50,60,70,80,90] print(lst[1:8:2])
解读从1开始,也就是从20开始,每隔一位取一个数,左闭右开到80
所以是 20 40 60 80
lst=[10,20,30,40,50,60,70,80,90] print(lst[1:8:2]) print(id(lst)) lst2=lst[1:8:2] print(id(lst2))
lst=[10,20,30,40,50,60,70,80,90] print(lst[1:8]) print(lst[1:8:])
1.步长为1 后面不写和加:是一样的
2.如果前面不写那么表示从0开始
有点事情,需要耽误下,准备回寝室 现在是21:15
总结:今天难度比前两天的深多了,不过确实很好玩。明天继续加油!