新手学习python第三天-新手笔记

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 

总结:今天难度比前两天的深多了,不过确实很好玩。明天继续加油!

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值