zoukankan      html  css  js  c++  java
  • 流程控制、数据类型(列表)

    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         break
    6     count +=1 #每执行一次,就把count+1,要不然就变成死循环啦,因为count一直是0
    7 
    8 print("-----out of while loop ------")      # 这里将会输出 loop 0  -  loop5
    9 复制代码
    1 count = 0    # continue 的用法
    2 while count <= 100 : 
    3     count += 1
    4     if count > 5 and count < 95: #只要count在6-94之间,就不走下面的print语句,直接进入下一次loop
    5         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 += 1
    13     if count == 3:break
    14     print("Loop",count)                 # 当 break跳出后很明显走不到else
    15 
    16 else:
    17     print("循环正常执行完啦")
    18 print("-----out of while loop ------")      # 最后只执行了前两项

     

    Python 基础第二部分(基本数据类型)                              

      三问:1.什么是数据?  ——>   x = 10 , 10 是我们要存的数据

        2.为何数据要分不同的类型?     ——>  数据是用来表示状态的,不同的状态就应该用不同类型的数据表示

        3.数据类型: 数字、 字符串、 列表、 元组、 字典、 集合、布尔

    开始深入学习数据类型:

      1. 数字 int

        数字主要是用于计算的,使用方法并不是很多,就记住一个就可以了:

    1 #bit_length() 当十进制用二进制表示时,最少使用的位数
    2 v = 11
    3 data = v.bit_length()
    4 print(data)

      2.布尔值bool: 略

      3.字符串str

        3.1、字符串的索引与切片:运用到索引(下标,注意初始的索引都是0)

    1 a = 'ABCDEFGHIJK'
    2 print(a[0])        #取第一个字母  A
    3 
    4 print(a[0:3])          # 以下的都是运用到切片的方法, 注意”骨头不顾尾“ ABC
    5 print(a[2:5])
    6 print(a[0:])            #默认到最后  或则写为a[:]
    7 print(a[0:-1])         #-1就是最后一个 取到前一个,即倒数第二个
    8 print(a[0:5:2])         #加步长 C、E
    9 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	"
    16 #	前面的补全
    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)  # 返回的找到的元素的索引,如果找不到返回-1
    32 
    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 18
    45 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 #replace
    54 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:o
    15   
    16   
    17 #对元组进行操作
    18   
    19 >>> seq3 = ('hello','good','boy','doiido')
    20 >>> print ':'.join(seq3)
    21 hello:good:boy:doiido
    22   
    23   
    24 #对字典进行操作
    25   
    26 >>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
    27 >>> print ':'.join(seq4)
    28 boy:good:doiido:hello
    29   
    30   
    31 #合并目录
    32   
    33 >>> import os
    34 >>> os.path.join('/hello/','good/boy/','doiido')
    35 '/hello/good/boy/doiido'

      当然还有:expandtabs() 方法把字符串中的 tab 符号(' ')转为空格,tab 符号(' ')默认的空格数是 8。

    从头开始数,数到第一个 正好为8个空格,不足则补空格,如果还有 ,接着从第一个 数到第二个 仍然为8个空格,以此类推直到最后一个 结束。

    1 S = "this is	string example....wow!!!"
    2  
    3 print ("原始字符串: " + S)                   # 原始字符串: this is     string example....wow!!!
    4 print ("替换 \t 符号: " +  S.expandtabs())  # 替换 	 符号: this is string example....wow!!!
    5 print ("使用16个空格替换 \t 符号: " +  S.expandtabs(16))   # 使用16个空格替换 	 符号: 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 = True
    
    1 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

        

  • 相关阅读:
    BestCoder 2nd Anniversary/HDU 5718 高精度 模拟
    FZU 2168 前缀和+dp递推
    poj 1088 记忆化搜索
    Codeforces Round #241 (Div. 2) B dp
    poj 3053 优先队列处理
    取消修改
    csv乱码
    iconv()
    cakephp中sql查询between
    虚拟机上linux与windows之间复制粘贴
  • 原文地址:https://www.cnblogs.com/double-W/p/9404407.html
Copyright © 2011-2022 走看看