流程控制、数据类型(列表)

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

    

原文地址:https://www.cnblogs.com/double-W/p/9404407.html