#1.基本数据类型
什么是数据类型?
变量值即我们存放的数据,数据类型就是变量值的类型
变量值为什么要区分类型?
因为变量值是用来记录现实世界中事物的特征,针对不同的特征就应该用不同类型的值去标识
如何应用数据类型?
- 一.数字类型
- 1.整型int:年龄\身份证号\电话号码\等级
age = 18 #age = int(18)
print(id(age),type(age),age)
- 2.浮点型float:薪资\身高\体重
salary = 3.1 #salary = float(3.1)
print(id(salary),type(salary),salary)
- 二.字符串类型str:名字\家庭住址\单个爱好\性别等等描述性质的特征
定义:在引号(单引号、双引号、三引号)内包含一串字符
name1 = 'wood'
name2 = "wood"
name3 = """wood"""
print(type(name1))
msg = 'my name is name1'
- 字符串拼接(只能在字符串之间进行,且只能相加或相乘)
name='wood'
age=20
name+age #相加其实就是简单拼接
'wood20'
name*5
'woodwoodwoodwoodwood'
#注意1:字符串相加的效率不高
#字符串1+字符串3,并不会在字符串1的基础上加字符串2,
#而是申请一个全新的内存空间存入字符串1和字符串3,
#相当字符串1与字符串3的空间被复制了一次。
#注意2:只能字符串加字符串,不能字符串加其他类型
- 三 列表list: 记录多个值,比如人的多个爱好,一个班级多个学生的性别
#在[]内用逗号分隔,可以存放n个任意类型的值
定义:students=['egon','alex','wupeiqi',] #students=list(['egon','alex','wupeiqi',])
用于标识:存储多个值的情况,比如一个人有多个爱好
- 列表嵌套、取值
#存放多个学生的信息:姓名,年龄,爱好
students_info=[['wood',20,['play','eat']],['egon',18,['music','sleep']]]
print(tudents_info[0][2][0]) #取出第一个学生的第一个爱好
'play'
- 四 字典dict: 记录多个key:value值
引子
为何还要用字典?
存放一个人的信息:姓名,性别,年龄,很明显是多个值,既然是存多个值,我们完全可以基于刚刚学习的列表去存放,如下
students=['egon','lxx','yxx']
定义列表的目的不单单是为了存,还要考虑取值,如果我想取出这个学生的姓名,可以用
print(student[0])
但这是基于我们已经知道在第1个位置存放的是姓名的前提下,我们才知道索引0对应的是年龄
于是我们需要寻求一种,即可以存放多个任意类型的值,又可以硬性规定值的映射关系的类型,比如key=value,这就用到了字典
#在{}内用逗号分隔,可以存放多个key:value的值,value可以是任意类型
#定义:
info={'name':'egon','age':18,'sex':18}
#用于标识:存储多个值的情况,每个值都有唯一一个对应的key,可以更为方便高效地取值
info={
'name':'egon',
'hobbies':['play','sleep'],
'company_info':{
'name':'Oldboy',
'type':'education',
'emp_num':40,
}
}
print(info['company_info']['name']) #取公司名
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标识
age=18
print(age > 30) #不成立就是False,即假
print(age < 30) #成立就是True, 即真
#都返回False
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
if None: #False则不执行
print('条件成立了11确实大于10的')
布尔类型的重点知识!!!:
所有类型的值都自带布尔值: 当数据类型的值为0,None,空时,布尔值为False,除此以外都为True
#2.与用户交互
什么是用户交互?
程序等待用户输出一些数据,然后程序执行完毕后为用户反馈信息
为什么程序要与用户交互?
为了让计算机像人一样与用户交互
比如ATM机(计算机),让ATM机代替人跟用户交互来取代人力,这我们就需要编写程序,通过运行程序来指挥计算机,这就要求我们的程序语言中能够有一种能与用户交互,接受用户输入数据的机制
如何与用户交互
input
'''
在python3中,
input会将用户输入的任何内容都存成字符串类型
name = input('请输入你的账号名:') name = '123'
print(name,type(name))
----------
在python2中:
raw_input会将用户输入的任何内容都存成字符串类型
raw_input:等于python3的input
'''
注释
随着学习的深入,用不了多久,你就可以写复杂的上千甚至上万行的代码啦,有些代码你花了很久写出来,过了些天再回去看,发现竟然看不懂了,这太正常了。 另外,你以后在工作中会发现,一个项目多是由几个甚至几十个开发人员一起做,你要调用别人写的代码,别人也要用你的,如果代码不加注释,你自己都看不懂,更别说别人了,这产会挨打的。所以为了避免这种尴尬的事情发生,一定要增加你代码的可读性。
代码注释分单行和多行注释, 单行注释用#,多行注释可以用三对双引号""" """
代码注释的原则:
#1. 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可
#2. 注释可以用中文或英文,但不要用拼音
#3.格式化输出
name = input('please input your name:')
age = inout('please input your age:')
#print('my name is',name,'my age is',age)
print('my name is %s,my age is %s' %(name,age)) #格式化输出 %s相当于占位符,接收任意类型
print('my name is %s my age is %d' %('egon',18)) # %d只能接收数字类型(%s和%d的顺序和后面()里的顺序是一一对应的)
#4.基本运算符
计算机可以进行的运算有很多种,可不只加减乘除这么简单,运算按种类可分为算数运算、比较运算、逻辑运算、赋值运算、成员运算、身份运算、位运算,今天我们暂只学习算数运算、比较运算、逻辑运算、赋值运算
算法运算
print(10 + 1.1) #加,减,乘(加,运算结果为11.1)
print(10 / 3) # 有整数部分有余数部分
print(10 // 3) # 去掉小数部分 结果为3
print(10 % 3) #取余 结果为1
print(2 ** 3) #幂运算 结果为8
比较运算
#比较运算只能在同类型之间进行,其中int与float同属于数字类型
print(10 > 3.1) #返回Turn
print(10 < 3.1) #返回False
print(10 >= 10)
#了解 (字符串的比较、列表的比较、字典的比较等)
msg1='abcdefg'
msg2='abce'
print(msg2 > msg1) #返回Turn
list1=['a',1,'b']
list2=['a',2]
print(list1 > list2) #返回False
list2=['a','b']
list2=['c','b']
print(list2 > list1) #返回Turn
赋值运算
#3.1 增量赋值
age=18
age+=1 # age=age+1
print(age) #返回结果为19
x=10
x%=3 # x=x%3
print(x) #返回结果为1
#3.2 链式赋值
x=10
y=x
print(x is y) #返回Turn
a=b=c=d=e=111
print(a is b is c is d is e) #返回Turn
#3.3 交叉赋值
x=10
y=20
#temp=x
#x=y
#y=temp
x,y=y,x #和上面注释里一样的效果
print(x,y) #返回20 10
#3.4 解压赋值
nums=[1,2,3,4,5]
a=nums[0]
b=nums[1]
c=nums[2]
d=nums[3]
e=nums[4]
a,b,c,d,e=nums
print(a,b,c,d,e) #返回1 2 3 4 5
a,b,c,d,e=nums #解压赋值
print(a,b,c,d,e) #返回1 2 3 4 5
a,b,c,_,_=nums #如果只想取出a,b,c
print(a,b,c) #返回1 2 3
a,b,*_=nums #如果列表里的数据非常多,可以用*_代替此处所以下划线
print(a,b) #返回1 2
逻辑运算:and,or,not
# and:连接左右两个条件,两个条件必须都成立,最后结果才为True,一旦左边条件为假则最终结果就为假,没有必要再去计算右面条件的值
# print(1 > 2 and 3 > 1)
# or:连接左右两个条件,两个条件但凡有一个成立,结果就为True,一旦左边条件为True则最终结果就为True,没有必要再去计算右面条件的值,
# 一旦左边条件为False,还需要去计算右面条件的值,如果为True,最终也True
# not:取反
print(not 1 > 2 or 3 > 1)
print(not 1 > 2)
print((True and (False or True)) or (False and True)) #可以用括号来表示优先级,比较清楚
身份运算:is与==
- is比较的是id
- 而==比较的是值
#5.流程控制if判断
#作业
明日默写:早8:20-8:45
1、简述cpu、内存、硬盘的作用
cpu:计算机的控制中枢;内存:相当于人的记忆;硬盘:相当于记东西的本子 cpu控制硬件,运算 翻译 执行 内存 存取速度快
硬盘 存取速度慢但可以永久保存数据
2、简述什么是操作系统以及它有何作用
操作系统是用来协调、管理、控制硬件资源与软件资源的一种控制程序
作用:1.把复杂的硬件操作封装成一个个简单的功能给用户和应用程序使用(文件)
2.把多个应用程序对多个硬件的竞争变得有序
3、python test.py执行的三个阶段是什么?在哪个阶段识别文件内的python语法?
1.从硬盘中把python解释器加载到内存,cpu从内存中读取-翻译-执行
2.python解释器把test.py文件从硬盘中加载到内存
3.python解释器在解释-执行内存中的test.py文件(这个阶段识别文件内的python语法)
4、简述python的内存管理
垃圾回收机制
python语言中当一个值得引用技术为0(值没有被关联变量名)时,这个值(数据)会被当作垃圾清理
5、基本数据类型的定义与使用
数据类型:变量值是我们存放的数据,数据类型就是变量值的类型
- 1.数字类型(整型int:记录年龄、号码和浮点型folat:记录薪资、身高)
- 2.字符串类型str:名字用引号(单引双引三引)内含包一串字符
- 3.列表list:记录多个值,在[]内用逗号隔开
- 4.字典dict:记录多个key:value值。可以硬性规定值得映射关系(可以给值由一个描述性的解释,便于找到每个值)
今日作业:
1、整理当天所学内容,编写博客,明天早晨检查
2、python test.py执行的三个阶段是什么?在哪个阶段识别文件内的python语法?
1.将python解释器由硬盘加载到内存,翻译执行。
2.python解释器把test.py文件由硬盘加载到内存。
3.python解释器翻译并执行test.py文件,此阶段识别文件内的python语法。
3、将下述两个变量的值交换
s1=‘alex’
s2=‘SB’
s1='alex'
s2='SB'
s1,s2 = s2,s1
print(s1,s2)
4、判断下述结果
msg1='alex say my name is alex,my age is 73,my sex is female'
msg2='alex say my name is alex,my age is 73,my sex is female'
msg1 is msg2 # 返回False
msg1 == msg2 # 返回Turn
5、什么是常量?在python中如何定义常量
常量是指不变的状态(不变的量),在python中没有明确的语法表示常量
常量也用变量的写法,只不过
大家约定俗成用全大写表示常量
比如:
AGE_OF_OLDBOY = 73
6、有存放用户信息的列表如下,分别存放用户的名字、年龄、公司信息
userinfo={
'name':'egon',
'age':18,
'company_info':{
'cname':'oldboy',
'addr':{
'country':'China',
'city':'Shanghai',
}
}
}
要求取出该用户公司所在的城市
print(userinfo['company_info']['addr']['city'])
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])
要求取出三名学生的详细信息分别赋值给三个变量(用一行代码实现)
alex,egon,pq = students