基本数据类型,输入输出,基本运算符
基本数据类型
数字,字符串,字典,列表,布尔
数据类型定义
1. 什么是数据类型
变量值即我们存放的数据,数据类型及变量值的类型
2. 变量值为何要区分类型
因为变量值使用记录现实世界中事物的特征,针对不同的特征就应该用不同类型的值去标识
3. 如何应用数据类型
数据类型分类
一 . 数字类型:
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='egon'
name2="egon"
name3="""egon"""
#没有区别
print(type(name1))
print(type(name2))
print(type(name3))
#当内部的打印结果带有引号的 时候,外部要区分
msg='my name is "egon"'
print(msg)
>>my name is "egon"
字符串类型有加法和乘法,用于拼接字符串或重复打印,但是大量拼接字符串会消耗内存,不推荐使用
三. 列表list: 记录多个值,比如人的多个爱好,一个班级多个学生的性别
定义:在[]内用逗号分隔开多个任意类型的值
l=[1,3.1,'aa',['a','b','c',['aaaa','bbbb']]]#列表嵌套
# print(l)
# print(l[0])
# print(l[2])
# print(l[3][1])
# print(l[3][3][0])
四. 字典dict:记录多个key:value值
定义:在{}内用逗号分隔开多个key:value的值,其中value可以是任意数据类型,而key通常应该是字符串类型
字典嵌套以及调用代码:
1 emp_info={ 2 'name':'egon', 3 'hobbies':['play','sleep'], 4 'company_info':{ 5 'name':'Oldboy', 6 'type':'education', 7 'emp_num':40, 8 } 9 } 10 print(emp_info['company_info']['name'])
五. 布尔类型bool:只有True,False
所有类型的值都自带布尔值: 当数据类型的值为0,None,空时,布尔值为False,除此以外都为True,空指的是空字符串,空列表,空字典
以下代码执行结果均为False
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
输入输出
输入
在python3中的input会将用户输入的任何内容都存成str类型
name=input("请输入您的用户名: ") #name="egon"
pwd=input("请输入您的密码: ") #pwd='123'
从控制台输入的目的是登录检验:
if name == 'egon' and pwd == '123':
print('登陆成功')
else:
print('用户名或者密码输错了')
了解: 在python3中只有一个input,而python2中有input和raw_input 1.其中python2的raw_input与python3的input是一样 2.不一样的是:python2的input要求使用者必须输入一个明确的数据类型,输入什么类型就存成什么类型
输出
语句结构:
print('my name is %s'%name)#如果有两个元素,需要用括号括起来!
print('my name is %s my age is %s' %(name,age))
print('my name is %s my age is %s' %([1,2,3],18)) #%s可以收任意类型的值
print('my name is %s my age is %d' %('egon',18))
print('my name is %s my age is %d' %('egon','18')) #%d只能接收整型(了解,大部分情况下用%s)
基本运算符
1 算术运算
print(10 + 1.1)
print(10 / 3) # 有整数部分有余数部分
print(10 // 3) # 去掉小数部分
print(10 % 3) #取余
print(2 ** 3)#次方
2 比较运算
比较运算只能在同类型之间进行,其中int与float同属于数字类型
print(10 > 3.1)
print(10 >= 10)
了解:字符之间也是可以比较的,背后对应的是ASCII码表;
msg1='abcdefg'
msg2='abce
msg3='ab1
print(msg2 > msg1)#字符串的比较是将同位上的字符大小进行比较,如果同位上的字符不是同类型,不能比较大小,会报错;
list1=['a',1,'b']
list2=['a',2]
list2=['a','b']
list2=['c','b']
print(list2 > list1)
3 赋值运算
3.1 增量赋值
# age=18
# age=age + 1
age+=1 即 age=age+1
# x=10
x%=3 即 x=x%3
3.2 链式赋值
# x=10
# y=x
# print(x is y)
a=b=c=d=e=111
print(a is b is c is d is e)
3.3 交叉赋值
# x=10
# y=20
# temp=x
# x=y
# y=temp
x,y=y,x
print(x,y)
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)
# a,b,c,_,_=nums #_=5
# print(a,b,c)
# print(_)
# a,b,*_=nums #
# print(a,b)
4 逻辑运算:and,or,not
and:连接左右两个条件,两个条件必须都成立,最后结果才为True,一旦左边条件为假则最终结果就为假,没有必要再去计算右面条件的值
or:连接左右两个条件,两个条件但凡有一个成立,结果就为True,一旦左边条件为True则最终结果就为True,没有必要再去计算右面条件的值,
一旦左边条件为False,还需要去计算右面条件的值,如果为True,最终也True
not:取反
print(not 1 > 2 or 3 > 1)#>>True
print(not 1 > 2)#>>True
not,and,or的优先级通过括号来区分,提高代码可读性
print((True and (False or True)) or (False and True))
5 身份运算:is与==
重点:
1.可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典 2. 不可变类型:value一旦改变,id也改变,则称为不可变类型(id变,意味着创建了新的内存空间)