0.补充知识

  • python IDE中的快捷键:
    • alt+3 批量注释
    • alt+4 批量取消注释
    • ctrl+c 终止程序运行
  • 输出:如果字符串内部有很多换行,用\n写在一行里不好阅读(/n表示换行),为了简化,Python允许用'''...'''的格式表示多行内容

    1. >>> print('''line1
    2. ... line2
    3. ... line3''')
    4. #输出结果
    5. line1
    6. ...line2
    7. ...line3

    1.注释

  • 注释可以用快捷键:ctrl+/(单行注释:#;多行注释:’’’或”””)

  • 单行注释:# 注释内容
  • 多行注释:

‘’’ “””
注释内容 注释内容
‘’’ “””

2.数据类型python数据类型.png

  • 浮点型

对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。

  • b=( ) 元组类型

    1. c=[ ] 列表类型<br /> d={ } 字典类型
  • 使用type()可以查看数据类型,如:

VQSFFHJ%GV@$3~8T%0N@9R3.png
显示a为int类型

3.变量命名规则

  • 必须以字母(a-z,A-Z)或下划线(_)开头
  • 其他字符可以是字母、数字或下划线
  • 变量区分大小写
  • python关键字不能作为变量名

    4.运算符

    4.1.算数运算符

    +加 ,-减,乘,/除,%求余数,求指数(如t2就是求t的平方,t*3求t的三次方),//求除取整

    4.2.比较运算符

    比较运算符.png

    a,b=4,5 #给a赋值4,给b赋值5
    rise1,rise2=a>b,a<=b
    print(rise1)
    print(rise2)
    #------也可比较字符串------
    c,d='xiaoli','xiaoming'
    rise3,rise4=c==d,c!=d
    print(rise3)
    print(rise4)
    

    运行结果:False
    True
    False
    True
    也可比较字符串:

    4.3.逻辑运算符

    逻辑运算符.png
    优先级:( )>not>and>or

    4.4.赋值运算符

    赋值运算符.png
    对多个变量赋值时可以这样写:
    a,b,c,d=10,2,4,6
    表示把10赋给a,把2赋给b,把4赋给c,把6赋给d

    4.5.in和notin

  • in:判断值是否在列表中

  • not in:判断值是否不在列表中
    l=['xiaoli','xiaoming','xiaohong','xiaoyu','xiaoti']
    res1='xiaoli' in l
    res2='dali' not in l
    print(res1,res2)
    
    运行结果:True True

    5.输入和输出

    5.1格式化输出方式1

    name='小李'
    classpro='三年一班'
    print('我的名字是%s,来自[%s]'%(name,classpro))
    # %为占位符,后面跟的是变量类型。
    #如%s中s表示str(字符串)的数据类型(因为name和classpro均为字符串类型)
    age=22
    print('今年%d岁了'%(age))
    #age为int型,用d表示(digit:数字)
    
    以上代码显示结果为:
    我的名字是小李,来自[三年一班]
    今年22岁了
    比较常用的占位符:
%s 通过str( )字符转换来格式化
%d 有符号十进制整数
%f 浮点实数

5.2格式化输出方式2

name='小李'
classpro='三年一班'
age=22
print('我的名字是{},来自{}'.format(name,classpro))
print('今年{}岁了'.format(age))
#花括号{}表示要填坑的地方

5.3输入

name=input("请输入您的姓名")
print('您的姓名是{}'.format(name))

6.流程控制(循环)

循环中的语句前有缩进,无缩进则表示该语句在循环体外。具体例子可看10.9的代码示例。

6.1顺序流程

即按顺序执行语句

6.2选择流程

if

if 条件表达式:
……

score=60
if score<60:
   print(‘不及格’)
pass #此处可使用pass来占空,如果没想好写什么可以先用 pass占着
print('语句结束')

if else

if 条件表达式:
……
else:
……
if与else的缩进必须相同,否则会出错

age=10
if age<=4:
    print('可以免费进入')
else:
       if age<=12: #if与else的缩进必须相同,否则会出错
           print('可以买半价票')
       else:
           print('要买全价票')

if elif

if 条件表达式:
……
elif 条件表达式:
……

age=4
if age<=4:
    print('可以免费进入') 
    #当age满足<=4时,语句只执行到这里,剩下的语句不执行;若不满足,则执行elif;再不满足执行else
elif age<=12:
           print('可以买半价票')
else:
           print('要买全价票')

if语句的其他形式

  • else语句中的情况只能有0个或1个,elif的情况可以有0个或多个。
  • 在条件表达式中可以使用and或or。

    age=56
    if age<=4 or age>=60:
      print('可以免费进入') 
    elif age<=12:
             print('可以买半价票')
    else:
             print('要买全价票')
    #运行结果为:要买全价票
    

    6.3循环流程

    while 条件表达式:
    ……
    for … in 可迭代集合对象:
    ……

    7.列表

    7.1.定义列表

  • 变量名 = [‘数据1’,’数据2’,’数据3’,. . . ]

  • 生成有规律的数字列表:list(range(a,b,c))

生成a到b-1的数字列表,步长为c。步长为1时可写为list(range(a,b)。

l=list(range(3,10,2))生成3到10的数字列表,步长为2
print(l)

运行结果为:[3, 5, 7, 9]

7.2.访问列表

变量名[数据序号]

names=['xiaoli','xiaoming','xiaohong'] #定义列表
print(names[1]) #访问‘xiaoming’这一元素
print(names[-1]) #访问倒数第1个元素'xiaohong'

7.3.截取子列表

变量名1=变量名2[元素序号n:元素序号m]
此处的变量名2也就是事先定义的列表的名称。
截取第n个元素到第m-1个元素(从0开始,左闭右开)。

names=['xiaoli','xiaoming','xiaohong','xiaoyu','xiaoti']
I0=names[0:3]#截取第0个到第2个元素(左闭右开)
print(I0)
I1=names[2:4]#截取第2个到第3个元素
print(I1)

7.4.元素的增加、删除和修改

  • 增加:
    • 在列表末尾增加元素:变量名.append(‘要增加的内容’)
    • 在列表任意位置增加元素:变量名.insert(插入位置,’插入内容’)
  • 删除:
    • 按元素序号删除:del(变量名[删除元素的序号])
    • 按数据删除:变量名.remove(‘要删除元素的内容’)。若列表中有相同内容的元素,remove会首先删除顺序靠前的元素。
  • 修改:变量名[元素序号]=’要修改的内容’

    names=['xiaoli','xiaoming','xiaohong','xiaoyu','xiaoti']
    names[1]='daming'#修改元素
    names.append('zhangsan')#在列表末尾增加元素
    names.insert(1,'lisi')#在1号元素位置插入‘lisi’
    del(names[3])#删除第3个元素,按序号删除元素
    del(names[-1])#删除倒数第1个元素
    names.remove('xiaoli')#按数据删除元素
    print(names)
    

    7.5.method使用总结

  • methon()

  • method(arg)
  • xxV.methon()
  • xxV.method(arg)
  • xxV.method(arg1,arg2) 有返回值

    7.6.使用pop弹出列表数据

  • 变量名.pop() #默认弹出列表中的最后一个数据

  • 变量名.pop(元素序号) #弹出列表中相应序号的元素

    names=['xiaoli','xiaoming','xiaohong','xiaoyu','xiaoti']
    print(names.pop()) #弹出xiaoti
    print(names.pop(1)) #弹出xiaoming
    

    7.7.列表排序和翻转

  • 排序:(永久排序,影响原列表,排序后列表变为排序后的列表)

    • 正序排列:变量名.sort() #数字>大写字母>小写字母。
    • 倒序排列:变量名.sort(reverse=True) #数字>大写字母>小写字母。
  • 临时排序:(不影响原列表,排序后列表顺序不改变)

    • 新变量名=sorted(旧变量名)
      name1=['aaaaa','DDDD','BBBBB','cccccc','11111']
      name1.sort()  #正序排列列表
      print(name1)
      name1.sort(reverse=True)  #将列表倒序排列
      print(name1)
      newlist=sorted(name1)  #临时排序,不影响原列表
      print(newlist)
      
      运行结果:运行结果.png

      7.8.多维列表,查询下标,合并列表

  • 多维列表

    name2=[['pingguo','xiangjiao','dongzao'],['lizi','putao','fanqie','xigua'],['liulian','caomei']]
    name3=[[['pingguo','xiangjiao'],['dongzao']],['lizi','putao','fanqie','xigua'],['liulian','caomei']]
    #name2是一个二维列表,name3是一个三维列表
    print(name2[0][0]) #输出pingguo
    print(name2[1][2])#输出fanqie
    print(name3[0][0][1])#输出xiangjiao
    
  • 查询元素下标

变量名.index(‘查询内容’)

names=['lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
l1=names.index('Peiqi')#查询元素下标
print(l1) #结果为4
  • 合并列表

    • 变量名1.append(变量名2)

          将变量名2的所有列表元素作为一个元素加到变量名1的列表中
      
    • 变量名1.extend(变量名2)

          将两个列表合并
      
      names=['lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
      names1=[1,2,3,4,'lihua']
      names.extend(names1) #合并两个列表
      print(names)
      names.append(names1) #将names1的所有元素作为一个元素追加到列表中
      print(names)
      

      运行结果:image.png

    • 两个列表相加

      l1=['lihua','Rain','Jack']
      l2=['Xiuxiu','Peiqi','Black']
      l=l1+l2#放入新列表中
      l1=l1+l2#相加后放入原列表中
      print(l)
      

      7.9.列表遍历

  • 使用for循环遍历列表

    names=['lihua','Rain','Jack']
    for name in names: #每次循环都将names中的元素存入变量name中
      print(name+‘你很棒!’)
      print(继续加油)#前面有缩进该语句时在循环体里面
    print(全体加油)#前面无缩进时该语句在循环体外
    

    运行结果:
    lihua你很棒!
    继续加油
    Rain你很棒!
    继续加油
    Jack你很棒!
    继续加油
    全体加油

  • 使用索引遍历列表

    names=['lihua','Rain','Jack']
    for t in range(0,len(names)): #此处len(names)获取列表names的长度,那么t就等于0,1,2
    names[t]=names[t].upper()   #把相应索引的元素变为大写字母,类似使用这样的方法可以按要求修改列表中的元素
    print(names[t])
    
  • 遍历列表的简易方式

    #----------常规方式-----------------
    l=[]  #建立一个空列表l
    for t in range(1,11): #生成一个1到10的列表
       l.append(t*10)  #列表中的每个元素都乘以10并存入空列表l中
    print(l)
    #----------简单方式-----------------
    l=[t*10 for t in range(1,11)]
    print(l)
    
  • 练习:将原列表中的元素平方后放入新列表中

    #----------方法一---------------
    newl=[]
    l=list(range(1,11)) #range()生成随机数闭右开,如此处生成1到10的随机数
    for t in l:
      newl.append(t**2)
    print(newl)
    #----------方法二---------------
    newl=[]
    for t in range(1,11):
      newl.append(t**2)
    print(newl)
    #----------方法三---------------
    l=list(range(1,11))
    for t in l:
      l[t-1]=t**2
    print(l)
    

    7.10.复制列表

  • 方式一

将原列表中的数据放入一个新列表。改变新列表中的元素,原列表元素不变

l=['lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
newl=l[:]
newl[0]='梨花' #改变新列表中的元素,原列表元素不变
print(l)
print(newl)

运行结果:
[‘lihua’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]
[‘梨花’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]

  • 方式二

改变新列表中的元素,原列表元素也同样变化

l=['lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
newl=l #在这一步与方式一有所不同
newl[0]='梨花' #改变新列表中的元素,原列表元素也同样变化
print(l)
print(newl)

运行结果:
[‘梨花’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]
[‘梨花’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]

  • 复制多份

    l=['lihua','Rain','Jack','Xiuxiu','Peiqi','Black']
    newl=l*2 #复制两份
    newl[0]='梨花' #当复制两份时,改变新列表的元素,原列表元素不变
    print(l)
    print(newl)
    

    运行结果:
    [‘lihua’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]
    [‘梨花’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’, ‘lihua’, ‘Rain’, ‘Jack’, ‘Xiuxiu’, ‘Peiqi’, ‘Black’]

    7.11.元组(tuple)

  • 与列表的区别:不可修改,也没有append()、insert()这样的方法,其他操作与列表相同。(即元组就是不可修改的列表)

因为tuple不可改变,所以数据更安全,能用tuple就不用list(列表)。

a=('lihua','Rain','Jack','Xiuxiu','Peiqi','Black')
a[0]='梨花' #执行该语句会报错,因为元组不可修改
for t in a: #其他操作与列表相同,如遍历列表
    print(t)