Python介绍、数据类型概述、环境使用:
一、python简介:
python简介
python的诞生
创始人:Guido van Rossum(荷兰人)
时间:1989年圣诞节期间
地点:阿姆斯特丹
python的命名:源于Guido是一个喜剧团Monty python的粉丝
应用领域:
python优缺点:
优点:
面向对象(C++/JAVA/PYTHON/SWIFT/C#)
免费
可移植
可混合编程
简单易学易用
应用邻域广泛
开源
缺点:
与C/C++/go相比,执行速度不够快
开源
python的官网:
www.python.org
通过此网站可以查看语言文档信息
废话不多少,直接开启我们的Python之旅。
首先运行python3,这里我提前做了python的环境,搭建环境我就不写了。
一. Print语句
[root@python day1]# python3
>>> print ('hello world!')
hello world!
在Python中,字符串必须放到引号中。
如果没有引号表示一个名字,如函数名 变量名,如果该名字不存在则报错
>>> print ('hao','123') 打印一项字符串和数字,输出时默认各项之间用空格分隔
hao 123
>>> print ('hao','123',sep='***') 通过sep指定分隔符,分隔符任意
hao***123
>>>
二.input语句
#用于读取用户键盘输入,读入的内容一定是字符类型的
>>> user = input("username:") username:是屏幕提示,user是变量
username:tom
>>> print(user) 在Python中变量直接调用不需要加$
tom
>>> n = input("number: ")
number: 10
>>> print(n)
10
>>> n + 5 字符类型不能和数字类型做运算
#通过input用户写进来的数据都是**字符类型!**
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> type(n) 查看n的数据类型
<class 'str'> str表示字符类型,英文单词string
>>> int(n) + 5 int函数将字符串转换成相应的整数数字
15
字符串格式化的基本形式:
使用()中的内容按顺序依次替换,如果只有一个%s 可以不写括号
>>> '...%s...%s...' % () 标准格式方便记忆
>>> 'Hello %s' % 'tom'
'Hello tom'
>>> '%s is %s years old' % ('tom',18)
'tom is 18 years old'
>>>
三. Python变量
什么是变量:可以变化的量,不能变量的量叫字面量literal。
变量的命名规定
- 首字母必须是字母或下划线
- 其他字符可以是字母,数字,下划线
- 区分大小写
推荐的命名方式
- 有意义
- 简短
- 变量名和函数名全部采用小写
- 变量名和函数名各单词用下划线分开,py_str
变量在使用之前,必须赋初值,如果使用不存在的名称会发生NameError异常
变量赋值,自右向左运算。
将等号右边的表达式计算出一个结果,赋值给左侧的变量
变量赋值,自右向左运算. 将等号右边的表达式计算出一个结果,赋值给左侧的变量
>>> a = 5 + 5
>>> a
10
#数值变量支持自增,自减等运算
>>> a = a + 1
>>> a
11
#以上写法可以简写为:
>>> a += 1
>>> a
12
四. 运算符
标准算数运算符
+ - * / // % **
比较运算符
> < >= <= != ==
逻辑运算符
and not or
- 比较结果为真Ture或者假 False
>>> 3 != 3 # 3不等3吗?
False
>>> 5 >= 5
True
# python支持连续比较
>>> 20 > 15 > 10
True
>>> 15 > 10 < 20 # 相当于15 > 10 and 10 < 20
True
逻辑运算符
- and两边的结果都为真,最终才为真;有一边是假最终为假
- or两边的结果都为假,最终才为假;有一边为真,最终为真
- not是单目运算符,它将假变成真,真变为假
>>> 5 > 3 and 5 > 2
True
>>> 5 > 3 and 5 > 7
False
>>> 5 > 3 or 5 > 2
True
>>> 5 > 3 or 5 > 7
True
>>> not 5 > 3
False
>>> not 5 > 7
True
>>>
数据类型
数字
- 没有小数点的整数
- 有小数点的浮点数
- 布尔值True的值为1,False值为0
>>> True + 2
3
>>> False * 2
0
# 整数前面没有前缀,表示10进制数,python默认都以10进制输出
>>> 11
11
# 8进制数以0o或0O开头
>>> 0o11
9
# 16进制数以0x或0X开头
>>> 0x11
17
# 2进制数以0b或0B开头
>>> 0b11
3
# 将16进制转成10进制
>>> 0x231 # 2 * 16 * 16 + 3 * 16 + 1
561
>>> 0o82 # 报错,8进制数没有8
字符串
- 通过引号引起来的字符集合,它总是表示字面本身含义。
- 在python中,单双引号没有区别。
- python支持三引号(3个连续的单引号或双引号),保留用户的输入样式
>>> users = """Tom
... Kenji
... jerry"""
>>> print(users)
Tom
Kenji
jerry
>>> users # 在python解释器中,不用print也可以回显。程序文件输出必须print
'Tom\nKenji\njerry'
>>> names = 'bob\n小明\n小红'
>>> print(names)
bob
小明
小红
# 字符串使用+进行拼接
>>> py_str = 'python'
>>> len(py_str) 使用len函数统计变量占用的字符长度
6
>>> py_str + 'hello'
'pythonhello'
>>> py_str + ' hello'
'python hello'
# 字符串通过*实现重复
>>> '*' * 30
'******************************'
>>> '=' * 50
'=================================================='
>>> 't' in py_str # 't'在字符串中吗?
True
>>> 'th' in py_str # 'th'在字符串中吗?
True
>>> 'to' in py_str # 'to'在字符串中吗?
False
>>> 'to' not in py_str # 'to'不在字符串中吗?
True
通过下标取值
>>> py_str[0] # 取出第一个字符,下标为0
'p'
>>> py_str[6] # 取出第7个字符,报错,没有第7个字符
>>> py_str[5] # 取出第6个字符
'n'
>>> py_str[-1] # 下标为负,表示从右向左取
'n'
>>> py_str[-6]
'p'
取切片,起始下标包含,结束下标不包含
>>> py_str[2:4]
'th'
>>> py_str[2:600] # 取切片时,下标越界不报错
'thon'
>>> py_str[2:] # 结束下标不写,表示取到结尾
'thon'
>>> py_str[:2] # 起始下标不写,表示从开头取
'py'
>>> py_str[:] # 从开头取到结尾
'python'
>>> py_str[::2] # 从开头取到结尾,步长为2,默认步长值为1
'pto'
>>> py_str[1::2] # 从第一位开始取,步长为2
'yhn'
>>> py_str[::-1] # 步长为负,表示从右向左取
'nohtyp'
列表
- 类似于其他语言的数组
>>> l1 = [10, 20, 'tom', 'jerry']
>>> len(l1)
4
>>> l1 + 30 # 不能将列表与数字进行拼接
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "int") to list
>>> l1 + [30]
[10, 20, 'tom', 'jerry', 30]
>>> l1
[10, 20, 'tom', 'jerry']
>>> l1 * 3
[10, 20, 'tom', 'jerry', 10, 20, 'tom', 'jerry', 10, 20, 'tom', 'jerry']
>>> 'tom' in l1
True
>>> l1[-2]
'tom'
>>> l1[2:]
['tom', 'jerry']
列表可变,可以改变它的值,可以添加新值
>>> l1[0] = 100
>>> l1
[100, 20, 'tom', 'jerry']
>>> l1.append(200) # 向列表追加新值
>>> l1
[100, 20, 'tom', 'jerry', 200]
>>> l1.remove(200) # 删除列表中的值
>>> l1
[100, 20, 'tom', 'jerry']
>>>
说明:
- 变量代表的是某个数据。所以变量的语法形式,就是变量代表的数据的语法形式
>>> py_str
'python'
>>> py_str[0]
'p'
>>> 'python'[0]
'p'
>>> l1
[10, 20, 'tom', 'jerry']
>>> [10, 20, 'tom', 'jerry'][:2]
[10, 20]
>>> l1[:2]
[10, 20]
>>> l2 = [['tom', 20], ['jerry', 18]]
>>> l2[0]
['tom', 20]
>>> l2[0][-1] 先从l2中取出下标为0的值,在从被取出值中取下标为-1的
20
元组
- 相当于是不可变的列表
>>> t1 = (100, 20, 'tom', 'jerry', 200)
>>> len(t1)
5
>>> t1[-1]
200
>>> t1[2:4]
('tom', 'jerry')
>>> t1 + (10, 20)
(100, 20, 'tom', 'jerry', 200, 10, 20)
>>> t1 * 2
(100, 20, 'tom', 'jerry', 200, 100, 20, 'tom', 'jerry', 200)
>>> 100 in t1
True
>>> t1[0] = 10000 # 报错,元组不可变
字典
- 由键值(key: val)对构成的数据类型
- 字典的键不能重复
- 字典没有顺序
- 字典通过key取出val
>>> d1 = {'name': 'Mr.Niu', 'age': 20}
>>> len(d1)
2
>>> 20 in d1 # 20是字典的key吗?
False
>>> 'age' in d1
True
>>> d1['name']
'Mr.Niu'
>>> d1['age']
20
>>> d1['age'] = 21 # key已在字典中,修改它的值
>>> d1
{'name': 'Mr.Niu', 'age': 21}
>>> d1['email'] = 'nb@tedu.cn' # key不在字典中,则加新值
>>> d1
{'name': 'Mr.Niu', 'age': 21, 'email': 'nb@tedu.cn'}
数据类型的分类
按存储模型分类
- 标量:数字、字符串。不能包含其他数据
- 容器:列表、元组、字典
按更新模型分类
- 不可变:数字、字符串、元组
- 可变:列表、字典
按访问模型分类
- 直接访问:数字
- 顺序访问:字符串、列表、元组
- 映射访问:字典,通过key和values的方式取值
>>> s1 = 'python'
>>> l1 = [10, 20, 30]
>>> l1[0] = 1000
>>> l1
[1000, 20, 30]
>>> s1[0] = 'P' # 报错,因为字符串不可变
>>> s1 = 'Python' # 将s1整体重新赋值
>>> l2 = l1
>>> l2
[1000, 20, 30]
>>> l1
[1000, 20, 30]
>>> l2.append(100)
>>> l2
[1000, 20, 30, 100]
>>> l1
[1000, 20, 30, 100]
各个数据类型之间的转换
- 整数型转换成字符型
>>> a = 10
>>> type(a)
<class 'int'>
>>> a + 10 整数可以与整数相加
20
>>> a = str(a) 将整数型转换为字符型且重新赋值
>>> a + 10 字符类型不能和整数相加
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
>>> type(a)
<class 'str'>
- 将元组转换为列表
>>> t1 = ('kenji',10,20,'bob')
>>> type(t1)
<class 'tuple'>
>>> t1 = list(t1) 将元组转为列表类型
>>> type(t1)
<class 'list'>
>>> t1
['kenji', 10, 20, 'bob']
>>> t1.append('lilei')
>>> t1
['kenji', 10, 20, 'bob', 'lilei']
>>> t1.tuple(t1) 可将列表转为元组