python第三天

​ 学习第三天,简单回顾上节课:1.平台:操作系统+硬件=应用软件的运行平台;2.运行python程序的两种方式:交互式、命名行:python3 D:\test.py;3.运行python程序的三个过程:基于python3 D:\test.py:先启动python解释器,解释器会将test.py的内容当成文本内容读入内存,解释器解释执行读入内存的代码,开始识别python语法。4.变量的定义及使用。

​ 今日学习内容主要分为三大块:

一、IDE集成开发环境(pycharm)

二、基本数据类型的使用

三、运算符

​ PyCharm是一种Python IDE(IDE集成开发环境),其带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制等等。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业web开发。同时支持Google App Engine,更酷的是,PyCharm支持lronpython!这些功能在先进代码分析程序的支持下,使 PyCharm 成为 Python 专业开发人员和刚起步人员使用的有力工具。

补充:为了增加代码的可读性,避免自己写的代码连自己都看不懂需要注释,而代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """,代码注释的原则:1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可;2. 注释可以用中文或英文,但不要用拼音。

基本数据类型也是由两个问题引出,什么是数据?为何要有多种类型的数据?数据即变量的值,如age=18,18则是我们保存的数据。变量的是用来反映/保持状态以及状态变化的,毫无疑问针对不同的状态就应该用不同类型的数据去标识。

数字类型分为整型(int)、浮点型(float)**,整型定义:age=10 # age=int(10),用于标识年龄、等级、个数,可以使用数学运算与比较运算。浮点型定义:salary=3.1 #salary=float(3.1),用于标识工资,身高,体重,可以使用数学运算与比较运算。

字符串(str)定义:在单引号/双引号/三引号中包含一系列字符,用于记录描述性质的状态,如姓名,性别,国籍,种族, name='egon' #name=str('egon') 在python中,加了引号的字符就是字符串类型,python并没有字符类型。单引号、双引号、多引号没有任何区别,只有下面这种情况 你需要考虑单双的配合 :

​ msg = "My name is Egon , I'm 18 years old!",

​ #多引号

                msg = '''
                今天我想写首小诗,
                歌颂我的同桌,
                你看他那乌黑的短发,
                好像一只炸毛鸡。
                '''

​ 数字可以进行加减乘除等运算,字符串也能,但只能进行"相加"和"相乘"运算

                >>> name='egon'
                >>> age='18'
                >>> name+age #相加其实就是简单拼接
                'egon18'
                >>> name*5 
                'egonegonegonegonegon

注意1:字符串相加的效率不高

​ 字符串1+字符串3,并不会在字符串1的基础上加字符串2,而是申请一个全新的内存空间存入字 符串1和字符串3,相当字符串1与字符串3的空间被复制了一次,

注意2:只能字符串加字符串,不能字符串加其他类型

列表(list)定义:在[]内用逗号分隔开多个任意类型的值,用于标识存储多个值的情况,比如一个人有多个爱好,在[]内用逗号分隔,可以存放n个任意类型的值。

​ students=['egon','alex','wupeiqi',]

                >>> students_info[0][2][0] #取出第一个学生的第一个爱好

​ 'play'

字典(dict)为何还要用字典?存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下

​ info=['egon','male',18]
​ 定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个人的年龄,可以用
​ print(info[2])

​ 18

​ 但这是基于我们已经知道在第3个位置存放的是年龄的前提下,我们才知道索引2对应的是年龄
​ 即:

​ name, sex, age

​ info=['egon','male',18]
​ 而这完全只是一种假设,并没有真正意义上规定第三个位置存放的是年龄,于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典

在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型

​ 定义:info={'name':'egon','age':18,'sex':18} #info=dict({'name':'egon','age':18,'sex':18})
​ 用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值

        students=[
                {'name':'alex','age':38,'hobbies':['play','sleep']},
             {'name':'egon','age':18,'hobbies':['read','sleep']},
             {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},
            ]
            print(students[1]['hobbies'][1]) #取第二个学生的第二个爱好

​```

布尔(bool):True、False计算机俗称电脑,即我们编写程序让计算机运行时,应该是让计算机无限接近人脑,或者说人脑能干什么,计算机就应该能干什么,人脑的主要作用是数据运行与逻辑运算,此处的布尔类型就模拟人的逻辑运行,即判断一个条件成立时,用True标识,不成立则用False标识

        >>> a=3
        >>> b=5
        >>> 
        >>> a > b #不成立就是False,即假
        False
        >>> 
        >>> a < b #成立就是True, 即真
        True
接下来就可以根据条件结果来干不同的事情了:
    if a > b 
   print(a is bigger than b )

else 
   print(a is smaller than b )

上面是伪代码,但意味着, 计算机已经可以像人脑一样根据判断结果不同,来执行不同的动作。
布尔类型的重点知识!!!:

#所有数据类型都自带布尔值
1、None,0,空(空字符串,空列表,空字典等)三种情况下布尔值为False
2、其余均为真 

重点:

    #1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典

    #2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间) 

格式化输出

​ 程序中经常会有这样场景:要求用户输入信息,然后打印成固定的格式

​ 比如要求用户输入用户名和年龄,然后打印如下格式:

​ My name is xxx,my age is xxx.

​ 很明显,用逗号进行字符串拼接,只能把用户输入的名字和年龄放到末尾,无法放到指定的xxx位置,而且数字也必须经过str(数字)的转换才能与字符串进行拼接。

​ 这就用到了占位符,如:%s、%d

#%s字符串占位符:可以接收字符串,也可接收数字
print('My name is %s,my age is %s' %('egon',18))
#%d数字占位符:只能接收数字
print('My name is %s,my age is %d' %('egon',18))
print('My name is %s,my age is %d' %('egon','18')) #报错

#接收用户输入,打印成指定格式
name=input('your name: ')
age=input('your age: ') #用户输入18,会存成字符串18,无法传给%d

print('My name is %s,my age is %s' %(name,age))

#注意:
#print('My name is %s,my age is %d' %(name,age)) #age为字符串类型,无法传给%d,所以会报错
 **基本运算符** :计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算 

算数运算

    print(10 / 3)    3.3333333333333335
    print(10 // 3)   3 
    print(10 % 3)    1
    print(10 ** 2)   100

比较运算符

    print(10 == 10)  true 
    print(10 != 10)  false
    print(10 > 3)    true
    print(10 < 3)    false
    print(10 >= 10)  true
    print('egon' == 'egon') true
    了解:
    x='abcdef'
    y='abcz'
    print(x > y)

    l1=[2,'abc',3]
    l2=[2,'3']
    print(l2 > l1)

赋值运算符

    3.1 增量赋值
    age = 18
    age += 1  # age=age+1
    print(age)
    age-=1 # age=age-1
    print(age)
    3.2 交叉赋值
    x=11
    y=22

    temp=x
    x=y
    y=temp
    上述三行代码可以合并为下面这一行
    x,y=y,x
    print(x,y)
    3.3 链式赋值
    x=10
    y=x
    z=y

    x=y=z=10
    print(id(x),id(y),id(z))
    3.4 解压赋值
    l=['a','b','c','d','e']
    x=l[0]
    y=l[1]
    z=l[2]
    m=l[3]
    n=l[4]

    等号左边的变量名必须与右面所包含的值一一对应
    x,y,z,m,n=l
    print(x,y,z,m,n)

    x,y,*_,z=l
    print(x,y,z)

    l=['a','b','c','d','e']
    x,y,x,m,n=l
    x='a'
    y='b'
    x='c'
    m='d'
    n='e'
    print(x,y,x,m,n)

    l=['a','b','c','d','e']
    x,y,*_=l
    print(_)

逻辑运算符

​ and:逻辑与,用来连接左右两个条件,在左右两个条件同时为True的情况下,最终结果才为True
​ print(10 < 3 and 3 == 3)
​ print(10 > 3 and 3 == 3 and 1 == 1 and 1 > 0)

​ or:逻辑或,用来连接左右两个条件,左右两个条件但凡有一个为True,最终结果就为True
​ print(10 < 3 or 1 == 1)
​ print(10 < 3 or 1 == 1 or 10 < 11 or 1!= 1 or 'a' != 'a')

​ not:取反
​ print(not 10 > 3)

​ res=(10 > 3 and 'egon' != 'egon') or ((1 < 3 and 4 >= 3) or (not 8 > 3))
​ print(res)
最好使用括号来区别优先级,其实意义与上面的一样
​ >>> (3>4 and 4>3) or ((1==3 and 'x' == 'x') or 3 >3)
​ False

身份运算符

    ==:判断的是值是否相等
    is:判断的是id是否相等

    值相等,id可以不同
    >>> x='info:egon:18:male'
    >>> y='info:egon:18:male'
    >>> id(x),id(y)
    (2924120923496, 2924120923568)
    >>> x == y
    True
    >>> x is y
    False
    
    id相同,值一定相同
    >>> x=10
    >>> x=y
    >>> id(x)
    2924120923568
    >>> id(y)
    2924120923568
    >>>
    >>> x is y
    True
    >>> x == y
    True
上一篇:python第五天


下一篇:字符串类型