1、流程控制 ——if: (可分为 单分支 和 双分支 )
1 if 条件: # 单分支2 满足条件后要执行的代码3 4 if 条件: #双分支5 满足条件执行代码6 else:7 if条件不满足就走这段
2、缩进 :
重中之重,你会发现,上面的if代码里,每个条件的下一行都缩进了4个空格(等于Tab键),这是为什么呢?这就是Python的一大特色,强制缩进,目的是为了让程序知道,每段代码依赖哪个条件,如果不通过缩进来区分,程序怎么会知道,当你的条件成立后,去执行哪些代码呢?
在其它的语言里,大多通过{}
来确定代码块,比如C,C++,Java,Javascript都是用到{}来表示程序的运行步骤……
3、再谈流程控制:
if...else ...可以有多个分支条件,看例子:
1 score = int(input("输入分数:")) # 要求用户输入0-100 的数字,正确打印相应的成绩 2 3 if score > 100: 4 print("我擦,最高分才100...") 5 elif score >= 90: 6 print("A") 7 elif score >= 80: 8 print("B") 9 elif score >= 60:10 print("C")11 elif score >= 40:12 print("D")13 else:14 print("太笨了...E") 注意:如何用if函数来判断单选和多选: if ……elif……elif…… (表示单选) if…: …… if…: …… if…: ……(表示多选)
4.流程控制——while循环:
4.1、循环中止语句:如果在循环的过程中,因为某些原因,你不想继续循环了,怎么把它中止掉呢?这就用到break 或 continue 语句
break用于完全结束一个循环,跳出循环体执行循环后面的语句
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环.
1 count = 0 # break 的用法2 while count <= 100 : #只要count<=100就不断执行下面的代码3 print("loop ", count)4 if count == 5:5 break6 count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是07 8 print("-----out of while loop ------") # 这里将会输出 loop 0 - loop5
9 复制代码
1 count = 0 # continue 的用法2 while count <= 100 : 3 count += 14 if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop5 continue 6 print("loop ", count)7 8 print("-----out of while loop ------") # 这里不会输出 loop 6 - loop 4
4.2、 特别的 while……else……: 这里需要注意的是 for……else…… 同样的用法,只有break跳出本层循环才不会执行else:中的语句
与其它语言else 一般只与if 搭配不同,在Python 中还有个while ...else 语句while 后面的else 作用是指,当while 循环正常执行完,中间没有被break 中止的话,就会执行else后面的语句,只要存在意外情况(while中有break使循环弹出),则不会执行else语句: 这有利于控制while循环
1 count = 0 2 while count <= 5 : 3 count += 1 4 print("Loop",count) 5 6 else: 7 print("循环正常执行完啦") 8 print("-----out of while loop ------") # 这里正常输出每一项,且最后输出‘正常循完了’ 9 10 count = 0 11 while count <= 5 :12 count += 113 if count == 3:break14 print("Loop",count) # 当 break跳出后很明显走不到else15 16 else:17 print("循环正常执行完啦")18 print("-----out of while loop ------") # 最后只执行了前两项
Python 基础第二部分(基本数据类型)
三问:1.什么是数据? ——> x = 10 , 10 是我们要存的数据
2.为何数据要分不同的类型? ——> 数据是用来表示状态的,不同的状态就应该用不同类型的数据表示
3.数据类型: 数字、 字符串、 列表、 元组、 字典、 集合、布尔
开始深入学习数据类型:
1. 数字 int
数字主要是用于计算的,使用方法并不是很多,就记住一个就可以了:
1 #bit_length() 当十进制用二进制表示时,最少使用的位数2 v = 113 data = v.bit_length()4 print(data)
2.布尔值bool: 略
3.字符串str:
3.1、字符串的索引与切片:运用到索引(下标,注意初始的索引都是0)
1 a = 'ABCDEFGHIJK'2 print(a[0]) #取第一个字母 A3 4 print(a[0:3]) # 以下的都是运用到切片的方法, 注意”骨头不顾尾“ ABC5 print(a[2:5])6 print(a[0:]) #默认到最后 或则写为a[:]7 print(a[0:-1]) #-1就是最后一个 取到前一个,即倒数第二个8 print(a[0:5:2]) #加步长 C、E9 print(a[5:0:-2]) #反向加步长 10 print(x ,end = "") #可使输出不换行,在Python2 的时候使用print("*"), 在最后加,号可以不换行
3.2、 常见的字符串用到的方法:(重点) 1 print(name.capitalize()) #首字母大写 ,其他字母都小写
2 print(name.swapcase()) #大小写翻转,大写的小写,小写的大写 3 msg='egon say hi' 4 print(msg.title()) #每个单词的首字母大写 5 6 # 内同居中,总长度,空白处填充 7 a1 = "1asasd" 8 ret2 = a1.center(20,"*") # 这里必须保证a1是字符串 9 print(ret2) 10 11 #数字符串中的元素出现的个数。12 # ret3 = a1.count("a",0,4) # 可切片 后面的是开始位置和结束位置13 # print(ret3)14 15 a2 = "hqw\t"16 #\t前面的补全17 # 默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个,如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个。18 ret4 = a2.expandtabs()19 print(ret4)20 21 a4 = "dkfjdkfasf54"22 #startswith 判断是否以...开头23 #endswith 判断是否以...结尾24 # ret4 = a4.endswith('jdk',3,6) # 顾头不顾腚25 # print(ret4) # 返回的是布尔值26 # ret5 = a4.startswith("kfj",1,4)27 # print(ret5)28 29 #寻找字符串中的元素是否存在30 # ret6 = a4.find("fjdk",1,6)31 # print(ret6) # 返回的找到的元素的索引,如果找不到返回-132 33 # ret61 = a4.index("fjdk",4,6)34 # print(ret61) # 返回的找到的元素的索引,找不到报错。35 36 #split 以什么分割,最终形成一个列表此列表不含有这个分割的元素。37 # ret9 = 'title,Tilte,atre,'.split('t')38 # print(ret9)39 # ret91 = 'title,Tilte,atre,'.rsplit('t',1) #分割次数40 # print(ret91)41 42 #format的三种玩法 格式化输出43 res='{} {} {}'.format('egon',18,'male')44 res='{1} {0} {1}'.format('egon',18,'male') # 这里输出的是 18 egon 1845 res='{name} {age} {sex}'.format(sex='male',name='egon',age=18)46 47 #strip 还可以头尾对称分隔48 name='*egon**'49 print(name.strip('*')) # 首位去掉*50 print(name.lstrip('*')) # 去掉左边的*51 print(name.rstrip('*'))52 53 #replace54 name='alex say :i have one tesla,my name is alex'55 print(name.replace('alex','SB',1)) # 替换一次56 57 #####is系列58 name='jinxin123'59 print(name.isalnum()) #字符串由字母或数字组成60 print(name.isalpha()) #字符串只由字母组成61 print(name.isdigit()) #字符串只由数字组成 还有isupper() 和islower() 来判断大小写,ispace判断试全是空格。
一些漏网之鱼:
各种数据类型的心腹:join的用法:
1 #对序列进行操作(分别使用' '与':'作为分隔符) 2 3 >>> seq1 = ['hello','good','boy','doiido'] 4 >>> print ' '.join(seq1) 5 hello good boy doiido 6 >>> print ':'.join(seq1) 7 hello:good:boy:doiido 8 9 10 #对字符串进行操作11 12 >>> seq2 = "hello good boy doiido"13 >>> print ':'.join(seq2)14 h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o15 16 17 #对元组进行操作18 19 >>> seq3 = ('hello','good','boy','doiido')20 >>> print ':'.join(seq3)21 hello:good:boy:doiido22 23 24 #对字典进行操作25 26 >>> seq4 = { 'hello':1,'good':2,'boy':3,'doiido':4}27 >>> print ':'.join(seq4)28 boy:good:doiido:hello29 30 31 #合并目录32 33 >>> import os34 >>> os.path.join('/hello/','good/boy/','doiido')35 '/hello/good/boy/doiido'
当然还有:expandtabs() 方法把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。
从头开始数,数到第一个\t正好为8个空格,不足则补空格,如果还有\t,接着从第一个\t数到第二个\t仍然为8个空格,以此类推直到最后一个\t结束。
1 S = "this is\tstring example....wow!!!"2 3 print ("原始字符串: " + S) # 原始字符串: this is string example....wow!!!4 print ("替换 \\t 符号: " + S.expandtabs()) # 替换 \t 符号: this is string example....wow!!!5 print ("使用16个空格替换 \\t 符号: " + S.expandtabs(16)) # 使用16个空格替换 \t 符号: this is string example....wow!!!
字符串的相关习题:
1.判断⼀句话是否是回⽂. 回⽂: 正着念和反着念是⼀样的. 例如, 上海 ⾃来⽔来⾃海上(升级题)conent = input('请输入你的内容:')conent_new = conent[-1::-1]if conent_new ==conent: print('是回文!')else:print('不是回文!')2、name = "alex leNb",通过对s切⽚形成字符串s6,s6 = "ba2"print(s[-3::-2])
4、 元组 tuple:
元组被称为只读列表,即数据可以被查询,但不能被修改,所以,字符串的切片操作同样适用于元组。例:(1,2,3)("a","b","c")
5、列表 list:
类似于li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]下面主要讲以下列表的增删改查:
5.1、增(list):
1 li = [1,'a','b',2,3,'a'] 2 # li.insert(0,55) #按照索引去增加 3 # print(li) 4 # 5 # li.append('aaa') #增加到最后 6 # li.append([1,2,3]) #增加到最后 7 # print(li) 8 # 9 # li.extend(['q,a,w']) #迭代的去增 ,括号里面是一个可迭代对象,每一个对象都加进去了10 # li.extend(['q,a,w','aaa'])11 # li.extend('a')12 # li.extend('abc')13 # li.extend('a,b,c')14 # print(li)
5.2、删(list):
1 # l1 = li.pop(1) #按照位置去删除,有返回值 2 # print(l1) 3 4 # del li[1:3] #按照位置去删除,也可切片删除没有返回值。 del l1 # 删除整个列表 5 # print(li) 6 7 # li.remove('a') #按照元素去删除 注意只有list才有remove,当要删除的对象有多个是,只删除最左的一个 8 # print(li) 9 10 # li.clear() #清空列表
5.3、改(list):
li = [1,'a','b',2,3,'a']li[1] = 'dfasdfas' # 按照相应的索引去改print(li)li[1:3] = ['a','b'] # 按照切片去改print(li) li = [1,'we', 32]li.extend(['a','b','c'])print(li)li[0:3] = ['q','5'] # 当涉及到步长的时候要注意,必须一一对应print(li) # [1, 'we', 32] --> ['q', '5'] 这里将前面要被取代的位置换为'q','5',多了照换。
5.4、查(list):就一个遍历即可
1 for el in list:2 el
其他的操作:count、index、sort、reverse
1 a = ["q","w","q","r","t","y"]2 print(a.count("q")) # count 统计 某元素出现的次数1 a = ["q","w","r","t","y"]2 print(a.index("r")) # index 找出某个值第一个匹配项的索引位置# sort() 用于再原位置对列表进行排序 如果要反序,则在括号例打 reverse = True1 a = [2,1,3,4,5]2 a.sort() # 他没有返回值,所以只能打印a,注意列表的sort函数,用法和sorted方法相同,有key键接受函数名或则lambda,但是不会生成新列表3 print(a)4 a.reverse() #他也没有返回值,所以只能打印a,是在当前列表操作。5 print(a)
作业习题:
1、有如下列表# li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]# 循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。# 我想要的结果是:1 3 4 "alex" 3 7 8 "taibai" 5 ritian# 法一li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]for i in li: if isinstance(i,list): # 还可以使用dic(),查看内置函数属性 for v in i: if isinstance(v,str): print(v.lower()) continue print(v) elif isinstance(i,str): print(i.lower()) else:print(i)# 法2、 迭代def list_f(li): for i in li: if isinstance(i,list):list_f(i) elif str(i).isdigit():print(i) else:print(i.lower()) list_f(li)2、写代码,有如下列表,按照要求实现每⼀个功能。lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]实现将列表lis中的"tt"变成⼤写(⽤两种⽅式)。#法一 :lis[3][2][1][0]=lis[3][2][1][0].upper()#法二:(递归函数)lis = [2, 3, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]def fun(lis,old,new): for i,v in enumerate(lis): #妙在全自动 if v == old: lis[i] =new elif isinstance(v,list): fun(v,old,new)fun(lis,'tt','TT')print(lis)3、写代码,有如下列表,利⽤切⽚实现每⼀个功能li = [1, 3, 2, "a", 4, "b", 5,"c"] # a. 通过对li列表的切⽚形成新的列表l1,l1 = [1,3,2]l1 = li[:3] # b. 通过对li列表的切⽚形成新的列表l2,l2 = ["a",4,"b"]l2=li[3:6] # c. 通过对li列表的切⽚形成新的列表l3,l3 = ["1,2,4,5]l3=li[::2] # d. 通过对li列表的切⽚形成新的列表l4,l4 = [3,"a","b"]l4 = li[1:7:2] # e. 通过对li列表的切⽚形成新的列表l5,l5 = ["c"]l5 = li[-1] # f . 通过对li列表的切⽚形成新的列表l6,l6 = ["b","a",3]l6 = li[-3::-2]print(l1,l2,l3,l4,l5,l6)4、利⽤for循环和range,将1-30的数字⼀次添加到⼀个列表中,并循环这个列表,将 能被3整除的数改成*。li = list(range(1,31))for i,v in enumerate(li,0): # 枚举函数,妙用 if v%3 ==0: li[i]='*'print(li)