学习第三天,简单回顾上节课: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