博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流程控制、数据类型(列表)
阅读量:6269 次
发布时间:2019-06-22

本文共 9295 字,大约阅读时间需要 30 分钟。

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])
View Code

 

  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)
View Code

 

 

 

    

 

转载于:https://www.cnblogs.com/double-W/p/9404407.html

你可能感兴趣的文章
第三篇、image 设置圆角的几种方式
查看>>
关于Vs2010 C#使用DirectX的问题
查看>>
EPP(Eclipse PHP)语法高亮仿EditPlus配置
查看>>
OA账号架构权限的问题
查看>>
030——VUE中鼠标语义修饰符
查看>>
python编辑csv
查看>>
sql游标的使用与exec的两种用法
查看>>
数据结构
查看>>
78/90 Subsets --back tracking
查看>>
非托管资源的释放
查看>>
开篇寄语
查看>>
Dijkstra算法的C++实现
查看>>
phpstorm psr2样式.xml
查看>>
js 无限级分类
查看>>
umask值与Linux中文件和目录权限的关系
查看>>
python自动化开发-8
查看>>
bzoj 2127: happiness
查看>>
Python 3.5 之路 day1
查看>>
selenium使用chrome抓取自动消失弹框的方法
查看>>
实现strStr()---简单
查看>>