一、 基本数据类型
为何数据要区分类型?
数据类型值的是变量值的类型,变量值之所区分类型,是因为变量值是用来记录事物状态的,而事物的状态有不同的种类,对应着,也必须使用不同类型的值去记录它们。
(一)、数字类型
1、整型int
作用:记录年龄、等级、数量等
定义:age = 18
使用:数学运算 print(10 / 3)
与比较运算print(10 > 3)
2、浮点型float(有小数点)
作用:记录薪资、身高、体重等
定义:salary = 3.1
使用:数学运算print(3.1 + 2)
与比较运算print(3.1 > 2)
&ensp浮点型和整数型可混用
(二)、字符串str
作用:记录描述性质的状态
定义:在单引号/双引号/三引号中包含一系列字符,例如name = 'mumoon'
使用:msg=' my name is " mumoon " '
,在字符串中要使用多个引号,引号类型要不同。
字符串的加法
+(加号):拼接字符串
例如
x='hello'
y='world'
print(x + y) # 结果是helloworld
而print(x + 10)
报错,因为字符串只能与字符串相加。我们一般不推荐用+(加号)拼接字符串,浪费内存空间。
字符串的乘法
*(乘号)循环输出数遍
例如
print('mumoon'*3) # 结果是mumoonmumoonmumoon
(三)、 列表类型list
作用:按照位置记录多个同种属性的值(索引对应值,索引从0开始,代表的就是位置),并且可以取出指定位置的某一个值
定义:在[](中括号)内用逗号分隔开多个任意类型的值
例如:
L1=[100,3.2,'aaa',['a','b',['d','e']]]
使用:
print(L1[0]) # 结果是100
print(L1[3][2][1]) # 结果是e
练习:取出第一个学生的第一个爱好
students_info=[['mumoon',18,['Reading',]],['Hysen',25,['Swimming','Cooking']]]
print(students_info[0][2][0])
(四)、字典类型dict
作用:记录多个不同属性的值
定义:在{}(大括号)内用逗号分开个多个元素,每一个元素都由key : value组成,value就是我们存放的值,可以是任意类型,一个key唯一对应一个value,key应该对value有描述性的功能,所以key通常是str类型。
dic={'name':'mumoon','age':18,'gender':'male'}
使用:
print(dic['name']) # 结果是mumoon
print(dic['age']) # 结果18
练习:取出公司名
info={
'name' : 'mumoon',
'hobbies' : ['play' , 'sleep'],
'company_info' : {
'name' : 'Hi、Ason',
'type' : 'education',
'emp_num' : 40,
}
}
print(info['company_info']['name']) # 结果是Hi、Ason
选择数据类型的方法(列表Or字典)
全班同学的信息,每个同学的信息都是相同属性的值,但是信息里面包含的例如姓名,年龄是不同属性的值,所以用下面这种方式定义。
info=[
{'name':'Hysen','age':18,'sex':'male','height':1.81,'weight':70},
第二个学生的信息,
第三个学生的信息,
]
(五)、布尔类型bool:True、False
作用:用于判断
定义:
x=True
y=False
print(10 > 11) # 结果是False
print(10 == 10) # 结果是True
强调:所有的数值都自带布尔值,其中0、None、空布尔值为False,其余都为True
例如:
if []:
print('ok') # True打印ok
else:
print('不 ok') # False打印不ok,因为[]是空,空的布尔值是False,所以最后结果是不ok
二、与用户交互(输出输入)
1、接收用户输入
name = input('请输入你的用户名: ') # name='mumoon'
print(name)
2、格式化输出
如何动态地显示这么一句话:My name is xxx ,my age is xxx,姓名和年龄会根据用户输入的不同而显示不同。
首先我们要提示用户输入姓名和年龄:
name = input('Your name: ')
age = input('Your age: ')
方法一:我们可以用字符串拼接的方法
print('my name is '+name+' my age is '+age)
我们之前说过不提倡这种方式,因为会浪费内存,所以我们用下面这种方法。
print('my name is %s my age is %s' %(name,age))
注意%d只能接收数字,%s可以接受所有类型
扩展
在python3中只有一个input:input会将用户输入的任何内容都存成字符串类型
x = input('请输入: ') # 输入[1,2,3]
print(type(x)) # <class 'str'>
在python2中有两种接收用户输入的机制:
- raw_input:等同于python3的input
- input:要求输入者必须输入的一个明确的数据类型,输入什么类型就存成什么类型
程序的目的是为了便利用户,这也是Python3舍弃Python2中的input的原因。
三、运算符
1、算数运算符
假设变量x=3,y=7
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | x + y 输出结果 10 |
- | 减 - 得到负数或是一个数减去另一个数 | x - y 输出结果 -4 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | x * y 输出结果21 |
/ | 除 - y 除以 x | y/ x 输出结果 2.3 |
% | 取余 - 返回除法的余数 | y % x 输出结果 1 |
** | 幂 - 返回y的x次幂 | y ** x 输出结果343 |
// | 取整 - 向下取接近除数的整数 | y // x 输出结果 2 |
2、比较运算符
所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
假设变量x=3,y=7
运算符 | 描述 | 实例 |
---|---|---|
== | 等于 - 比较对象是否相等 | (x == y) 返回 False |
!= | 不等于 - 比较两个对象是否不相等 | (x != y) 返回 True |
> | 大于 - 返回x是否大于y | (x > y) 返回 False |
< | 小于 - 返回x是否小于y | (x < y) 返回 True |
>= | 大于等于 - 返回x是否大于等于y | (x > =y) 返回 False |
<= | 小于等于 - 返回x是否小于等于y | (x < =y) 返回 True |
字符串比较
例子
x='abcdef'
y='abcz'
print(x > y) # 结果是False,ASCII中表示z的数值比表示d的大
字符串不能和数字比较,下面代码会报错
L1=[2,'abc',3]
L2=[2,3]
print(L2 >L1)
3、赋值运算符
假设变量x=3,y=7
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | z= x + y 将 x + y 的运算结果赋值为 z |
+ = | 加法赋值运算符 | z += x 等效于 z = z + x |
-= | 减法赋值运算符 | z -= x 等效于 z = z - x |
* = | 乘法赋值运算符 | z *= x 等效于 z = z * x |
/= | 除法赋值运算符 | z /= x 等效于 z = z / x |
% = | 取余赋值运算符 | z %= x 等效于 z = z % x |
**= | 幂赋值运算符 | z **= x 等效于 z = z ** x |
//= | 取整赋值运算符 | z //= x 等效于 z = z // x |
3.1 交叉赋值
x=11
y=22
temp=x
x=y
y=temp
上述代码可以合并为下面这样
x=11
y=22
x,y=y,x
3.2 链式赋值
x=10
y=x
z=y
上述代码可以合并为下面这样
x=y=z=10
x,y,z的内存地址一样
3.3 解压赋值
L=['a','b','c','d','e']
x=L[0] # a
y=L[1] # b
z=L[2] # c
m=L[3] # d
n=L[4] # e
print(x,y,z,m,n) #结果是 a b c d e
用下面这种方法同样可以取得相同的结果
x,y,z,m,n=L
print(x,y,z,m,n)
等号左边的变量名必须与右面所包含的值一一对应,否则会报错。
取头尾的方法
x,y,*_,z=L
print(x,y,_,z) #结果是 a b ['c', 'd'] e
4、逻辑运算符
假设变量x=3,y=7
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值 | (x and y) 返回 7 |
or | x or y | 布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值 | (x or y) 返回 3 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(x and y) 返回 False |
and:逻辑与,用来连接左右两个条件,在左右两个条件同时为True的情况下,最终结果才为True
or:逻辑或,用来连接左右两个条件,左右两个条件但凡有一个为True,最终结果就为True
not:取反
print(not 10 > 3) # 结果是False
5、身份运算符
==:判断的是值是否相等
is:判断的是id是否相等
拾遗
平台:操作系统+ 硬件= 应用软件的运算平台
注释
#单行注释
“”"
多行注释
多行注释
多行注释
“”"
重要代码进行注释可增强可读性,但不是注释越多越好,可写在代码前,也可写在代码后。