- 1. 数据类型
- 1.1 什么是数据类型
- 2 整型:int
- 2.1 int()函数
- 3 浮点型:float
- 3.1 float()函数
- 4. 字符串:str
- 4.1 str内置方法
- 5. 列表:list
- 6. 字典:dict
- 7. 布尔值:bool
- 8. 元组:tuple
- 9. 集合:set
- 10. 用户交互
- 10.1 什么是用户交互
- 11. 格式化输出
- 12. 运算符
- 12.1 算术运算符
- 12.2 关系运算符
- 12.3 赋值运算符
- 12.4 增量赋值运算符
- 13.5 链式赋值
- 13.6 交叉赋值
- 13.7 解压赋值
- 13. 逻辑运算符:与或非
1. 数据类型
1.1 什么是数据类型
数据类型是一个值的集合和定义在此集合上一组操作(通常是增删改查或者操作读写的方法)的总称。
数据类型又分:
- 原子类型:比如编程语言的int,double,char,byte,boolean。
- 复合类型:又称结构类型,通过原子类型封装的更复杂的类型,比如面向对象语言里面的类
python 中常用数据类型包括: int、float,str、list、dict、bool、tuple、set
2 整型:int
整型:没有小数部分的数据,即整数。在计算机中使用int表示。
示例:
>>> num = 9
>>> type(num)
<class 'int'>
2.1 int()函数
int()函数主要是类型转换。int()在做类型转换的时候 只能转换纯数字
>>> num = '123'
>>> type(num)
<class 'str'>
>>> num = int(num)
>>> type(num)
<class 'int'>
int()还可以做进制数转换
>>> bin(10) #把十进制10转成二进制
'0b1010'
>>> oct(10) #把十进制10转成八进制
'0o12'
>>> hex(10) #把十进制10转成十六进制
'0xa'
#利用int()把二进制,八进制,十六进制转换十进制
>>> int('0b1010', 2) #把二进制转换十进制
10
>>> int('0o12', 8) #把八进制转换十进制
10
>>> int('0xa', 16) #把十六进制转换十进制
10
3 浮点型:float
浮点型:简单来说就是表示带有小数的数据,即小数。
示例:
>>> salary = 30000.5
>>> type(salary)
<class 'float'>
3.1 float()函数
float()做类型转换。
>>> fnum = '123.456'
>>> type(fnum)
<class 'str'>
>>> fnum = float(fnum)
>>> type(fnum)
<class 'float'>
>>> num = 123
>>> type(num)
<class 'int'>
>>> num = float(num)
>>> type(num)
<class 'float'>
>>> num
123.0
4. 字符串:str
字符串:是由零个或多个字符组成的有限序列.
定义字符串:
- 单引号:
'允许包含有 "双" 引号' - 双引号:
"允许包含有 '单' 引号"。 - 三重引号:
'''三重单引号''',"""三重双引号"""
使用三重引号的字符串可以跨越多行 —— 其中所有的空白字符都将包含在该字符串字面值中.
示例:
1. 单引号
name = 'Hans'
2. 双引号
name = "Hans"
3. 三重引号
name = '''Hans'''
name = """Hans"""
>>> name = 'Hans'
>>> type(name)
<class 'str'>
>>> info = "My name is 'Hans'"
>>> print(info)
My name is 'Hans'
>>> type(info)
<class 'str'>
>>> pythonzen = """
... Beautiful is better than ugly.
... Explicit is better than implicit.
... Simple is better than complex.
... """
>>> print(pythonzen)
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
字符串可以使用 + 和* 运算符,
+为拼接
>>> h = "Hello"
>>> name = "'Hans"
>>> h + name
'HelloHans'
//不过不推荐使用这种方式拼接,比较消耗内存资源,可以使用join()
* n 为连接不换行打印n次
>>> name * 5
'HansHansHansHansHans'
4.1 str内置方法
-
类型转换,任意类型都可以转成字符串类型
>>> num = 123 >>> type(num) <class 'int'> >>> num = str(num) #int类型转字符串 >>> type(num) <class 'str'> >>> fnum = 123.45 >>> type(fnum) <class 'float'> >>> fnum = str(fnum) #float类型转字符串 >>> type(fnum) <class 'str'> >>> list1 = [1, 2, 3, 4] >>> list1 = str(list1) #list类型转字符串 >>> type(list1) <class 'str'> >>> list1 '[1, 2, 3, 4]' >>> tuple1 = (1, 2, 3, 4) >>> tuple1 = str(tuple1) #tuple类型转字符串 >>> type(tuple1) <class 'str'> >>> dict1 = {'name':'Hans', 'age': 18} >>> dict1 = str(dict1) #dict类型转字符串 >>> type(dict1) <class 'str'> >>> set1 = {1, 2, 3, 4} >>> set1 = str(set1) #set类型转字符串 >>> type(set1) <class 'str'> -
基本用法
1. 索引取值 >>> res = "Hello World!" >>> res[0] # 索引取值下标从0开始 'H' 2. 切片(前开后合,顾头不顾尾) >>> res[2:4] #切出来下标为2到下标为4中间的数据,其中包括下标为2的,但不包括下标为4的 'll' 3.步长操作 >>> res[1:8:2] 'el o' 4.索引支持负数 >>> res[-1] #最后一位 '!' >>> res 'Hello World!' >>> res[-5:-1] #取-5到-1的元素,从左向右,并且不包括-1 'orld' 5.统计字符串内部字符的长度 >>> res 'Hello World!' >>> len(res) 12 6.移除字符串首尾指定的字符(strip()) >>> name = " hans " >>> name ' hans ' >>> len(name) 12 >>> name = name.strip() # 默认取掉首尾的空格 >>> name 'hans' >>> len(name) 4 #去掉左边的空格 >>> name = " hans " >>> name ' hans ' >>> name.lstrip() 'hans ' #去掉右边的空格 >>> name ' hans ' >>> name.rstrip() ' hans' #strip()默认去除空格,可以设置去除别的符号 >>> name = '###Hans####' >>> name '###Hans####' >>> name.strip('#') 'Hans' 示例,去除用户输入时在关键字左右的空格: >>> name = input("Your Name:") Your Name: Hans >>> name ' Hans ' >>> name = name.strip() >>> name 'Hans 或者: >>> name = input("Your Name:").strip() #在用户输入时直接去掉空格 Your Name: hans >>> name 'hans' 7.按照指定的字符切割字符串(split()) >>> str1 = "hans 18 study" >>> str1.split() #默认以空格分隔 ['hans', '18', 'study'] >>> str1 = "hans|18|study" >>> str1 'hans|18|study' >>> str1.split("|") #以‘|’分隔 ['hans', '18', 'study'] >>> str1 'hans|18|study' >>> str1.split("|", maxsplit=1) #只分隔一次,默认从左向右分隔 ['hans', '18|study'] >>> >>> str1.rsplit("|", maxsplit=1) #从右向左分隔,只分隔一次, ['hans|18', 'study'] #maxsplit为最大分隔的次数
5. 列表:list
列表:列表是可变序列,通常用于存放相同类型元素的集合。
列表可以包含不同类型的元素,但一般情况下,各个元素的类型相同
创建列表:用方括号标注,逗号分隔的一组值,元素可以是任意数据类型
- 使用一对方括号来表示空列表:
[] - 使用方括号,其中的项以逗号分隔:
[a],[a, b, c]
示例:
>>> list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> type(list1)
<class 'list'>
利用下标(索引)可以随意取出列表中的值,下标的值从0开始。
//例如要把5取出来,由于下标从0开始,5所在的下标为4,所以:
>>> list1[4]
5
//定义一个列表,取出"second"
>>> list2 = [1, 2, 3,['A','B','C',["fist", "second"]]]
>>> list2[3][3][1]
'second'
列表类型是一个容器,它里面可以存放任意数量、任意类型的数据
6. 字典:dict
字典:用于存放具有映射关系的数据。
字典相当于保存了两组数据,其中一组数据是关键数据,被称为 key;另一组数据可通过 key 来访问,被称为 value。
字典可以通过将以逗号分隔的 键: 值 对列表包含于花括号之内来创建,value可以是任意数据类型
字典可用多种方式来创建:
- 使用花括号内以逗号分隔
键: 值对的方式:{'jack': 4098, 'sjoerd': 4127}or{4098: 'jack', 4127: 'sjoerd'} - 使用字典推导式:
{},{x: x ** 2 for x in range(10)} - 使用类型构造器:
dict(),dict([('foo', 100), ('bar', 200)]),dict(foo=100, bar=200)
>>> person = {"name" : "Hans", "age" : 18, "gender" : "M", "phone" : "1234567890"}
>>> type(person)
<class 'dict'>
>>> person
{'name': 'Hans', 'age': 18, 'gender': 'M', 'phone': '1234567890'}
//字典取值使用键来取,即用key来取value.
>>> person['name']
'Hans'
>>> person['phone']
'1234567890'
练习:
定义一个字典{'name': 'Hans', 'age': 18, 'addr': ['中国', '上海', ['青浦区', 999, 602]]},取出里数字999.
>>> person_info = {
... "name" : "Hans",
... "age" : 18,
... "addr" : ["中国","上海", ["青浦区", 999, 602]]
... }
>>> person_info['addr'][2][1]
999
7. 布尔值:bool
布尔:用于判断事物的对错 是否可行等。
布尔只有两个值:True和False.True表示真,False表示假
>>> type(True)
<class 'bool'>
>>> type(False)
<class 'bool'>
实际上bool类型是int类型的一个子类
>>> bool.__bases__
(<class 'int'>,)
>>> True + 1
2
>>> False + 1
1
>>> bool(0)
False
>>> bool(1)
True
所以,True代表1,False代表0。
在python中所有的数据类型都可以转成布尔值。
布尔值为False的有:
-
整数值0、浮点数值0.0等、空字符串都为假
"" -
None为假
-
空数据对象都是假,比如
[]、{}、()等
其他情况一律为True。
针对布尔值的变量名一般采用is开头
is_ok
is_delete
8. 元组:tuple
Python的元组与列表类似,不同之处在于元组的元素不能修改,元组是不可变序列。
元组使用小括号,列表使用方括号。
创建元组: 用小括号中添加元素,并使用逗号隔开。
可以用多种方式构建元组:
- 使用一对圆括号来表示空元组:
() - 使用一个后缀的逗号来表示单元组:
a,或(a,) - 使用以逗号分隔的多个项:
a, b, cor(a, b, c) - 使用内置的
tuple():tuple()或tuple(iterable)
示例:
>>> tuple1 = (1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> type(tuple1)
<class 'tuple'>
元组取值和列表一样,也是用下标(索引),并且下标的值也是从0开始。
例如依然取5这个值,它的下标为4
>>> tuple1[4]
5
//元组和列表最大区别为列表可以修改,元组不可以修改,如:
//修改列表:
>>> list1
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> list1[0]
1
>>> list1[0] = "A"
>>> list1[0]
'A'
>>> list1
['A', 2, 3, 4, 5, 6, 7, 8, 9]
//修改元组:
>>> tuple1
(1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> tuple1[0]
1
>>> tuple1[0]="AA"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment //报错,元组不支持修改
9. 集合:set
集合也是容器,其内元素都是无序、唯一、不可变的。它常用来做成员测试、移除重复数据、数据计算(比如交集、并集、差集)。
可以使用大括号 { } 或者 set() 函数创建集合,元素与元素之间逗号隔开,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
示例:
>>> x = {1, 2, 3, 4}
>>> type(x)
<class 'set'>
>>> y = {1, 1, 2, 2, 3, 3, 4, 4}
>>> y //去重功能
{1, 2, 3, 4}
>>> print(y)
{1, 2, 3, 4}
集合的三个特点:
- 每个元素必须是不可变类型
- 集合内没有重复的元素
- 集合内元素无序
由于集合是通过hash值来存储的,没有位置索引。所以没法对集合进行单元素的检索,只能对集合进行修改操作,或迭代、遍历。
10. 用户交互
10.1 什么是用户交互
用户通过人机交互界面与系统交流,并进行操作,简单的区分为“输入”(Input)与“输出”(Output)两种。输入指的是由人来进行机械或设备的操作,输出指的是由机械或设备发出来的通知。

input() 函数接受一个标准输入数据,返回为 string 类型.使用input()可以进行用户交互
示例:
>>> num = input("please input a num:")
please input a num:123
>>> type(num)
<class 'str'>
>>> str1 = input("please input a string:")
please input a string:Hello
>>> type(str1)
<class 'str'>
//不管输入的是什么,python 里input()接受后都是字符串类型。
11. 格式化输出
格式化输出即按照一定的格式输出。
>>> print("Hi, %s." % name)
Hi, Hans.
>>> print("Hello, %s. Welcome to %s" %("Hans", "BJ"))
Hello, Hans. Welcome to BJ
其中%s为占位符。
| 格式化字符 | 含义 |
|---|---|
| %s | 字符串,在python中可接受任意类型数据 |
| %d | 有符号十进制整数,%06d 表示输出的整数显示位数,不足的地方使用 0 补全 |
| %f | 浮点数,%.2f 表示小数点后只显示两位 |
| %% | 输出 % |
print()常用参数:
- sep -- 用来间隔多个对象,默认值是一个空格。
- end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
示例:
#sep
>>> print("www","pymysql","com")
www pymysql com
>>> print("www","pymysql","com", sep='.')
www.pymysql.com
#end. end默认是换行符,所以每次打印一次就会换行
>>> print("www.pymysql.com")
www.pymysql.com
>>>
>>> print("www.pymysql.com",end='') #把默认换行换成空了,所以不自动换行了。
www.pymysql.com>>>
>>> print("www.pymysql.com",end='#') ##把默认换行换成井号'#''
www.pymysql.com#>>>
>>>
练习:
1. 接受用户输入,打印指定格式
>>> name = input("Your name:")
Your name:Hans
>>> age = input("Your age:")
Your age:18
>>> print("My name is %s, my age is %s" %(name, age))
My name is Hans, my age is 18
2.用户输入姓名,年龄,性别,工作,爱好,然后安格式打印
cat person.py
name = input("name:")
age = input("age:")
gender = input("gender:")
job = input("job:")
hobby = input("hobby:")
print(
"""
%s\tinfo to %s\t%s
Name : %s
Age : %s
Sex : %s
Job : %s
Hobby : %s
%s\tend\t%s
""" % ('_'* 10, name, '_'* 10,name, age, gender, job, hobby,'_'* 10,'_'* 10,)
)
python person.py
name:Hans
age:18
gender:male
job:student
hobby:study
__________ info to hans __________
Name : Hans
Age : 18
Sex : male
Job : student
Hobby : study
__________ end __________
12. 运算符
12.1 算术运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| + | 加,两个数相加 | 1 + 1 |
| - | 减,两个数相减 | 2 - 1 |
| * | 乘 - 两个数相乘 | 10 * 2 |
| / | 除,x除以y | 4 / 2 |
| % | 取模 - 返回除法的余数 | 10 % 3 = 1 |
| ** | 幂 - 返回x的y次幂 | 10 ** 2 |
| // | 取整除 - 返回商的整数部分(向下取整) | 9//2=4 |
示例:
>>> 1 + 1
2
>>> 2 - 1
1
>>> 2 * 4
8
>>> 4 / 2
2.0
>>> 10 % 3
1
>>> 9 // 2
4
12.2 关系运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 等于,比较对象是否相等 | (a == b) 返回 False。 |
| != | 不等于 ,比较两个对象是否不相等 | (a != b) 返回 true. |
| > | 大于 | (a > b) 返回 False。 |
| < | 小于 | (a < b) 返回 true。 |
| >= | 大于等于 | (a >= b) 返回 False。 |
| <= | 小于等于 | (a <= b) 返回 true。 |
示例:
>>> "a" == "b"
False
>>> "a" != "b"
True
>>> 3 > 4
False
>>> 3 < 4
True
>>> 3 >= 4
False
>>> 3 <= 4
True
12.3 赋值运算符
=赋值。
a = 20
12.4 增量赋值运算符
| 运算符 | 描述 | 实例 |
|---|---|---|
| += | 加法赋值运算符 | c += a 等效于 c = c + a |
| -= | 减法赋值运算符 | c -= a 等效于 c = c - a |
| *= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
| /= | 除法赋值运算符 | c /= a 等效于 c = c / a |
| %= | 取模赋值运算符 | c %= a 等效于 c = c % a |
| **= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
| //= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
示例:
>>> a = 2
>>> a += 1
>>> a
3
>>> a -= 1
>>> a
2
>>> a *= 2
>>> a
4
>>> a /= 2
>>> a
2.0
>>> a = 10
>>> a %= 3
>>> a
1
>>> a = 2
>>> a **= 3
>>> a
8
>>> a = 9
>>> a //= 2
>>> a
4
13.5 链式赋值
链式赋值: 同时对几个变量进行赋值
示例:
a = 3
b = 3
c = 3
可以写成
a = b = c = 3
>>> a = b = c = 3
>>> a
3
>>> b
3
>>> c
3
13.6 交叉赋值
即交换两个变量的数值.
x = 10
y = 20
如何把x 和y 的值交换即:x = 20, y = 10
方法1:利用第三个变量
>>> x = 10
>>> y = 20
>>> m = x
>>> x = y
>>> y = m
>>> x
20
>>> y
10
方法2:交叉赋值
>>> x = 10
>>> y = 20
>>> x, y = y, x
>>> x
20
>>> y
10
13.7 解压赋值
任何的序列 (或者是可迭代对象) 可以通过一个简单的赋值语句解压并赋值给多个变量。唯一的前提就是变量的数量必须跟序列元素的数量是一样的。
>>> number_list = [1, 2, 3, 4]
>>> num1, num2, num3, num4 = number_list
>>> num1
1
>>> num2
2
>>> num3
3
>>> num4
4
//少一个不行
>>> n1, n2, n3 = number_list
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 3)
//多一个也不行
>>> n1, n2, n3, n4, n5 = number_list
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 5, got 4)
// 如果只想要第一个和最后一个,如何突破上面的限制:
//可以使用星号(*)
>>> number_list = [1, 2, 3, 4]
>>> n1, *a, n2 = number_list
>>> n1
1
>>> n2
4
>>> a //把中间的都赋值给a
[2, 3]
//如果中间的数据不想要:
>>> nu1, *_, nu2 = number_list
>>> nu1
1
>>> n2
4
//可以接受多余的元素 组织成列表赋值给后面的变量名
//下划线单独作为变量名 通常表达的意思指向的值没有啥用
13. 逻辑运算符:与或非
| 运算符 | 逻辑表达式 | 描述 | 实例 |
|---|---|---|---|
| and | x and y | 布尔"与",两边都为真结果为真,如果是两个非零的数相与,则返回第二个数的值 | 1 and 3返回3, 0and 3返回0 |
| or | x or y | 布尔"或" 一个为真结果为真。如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值 | 2 or 0 返回2,0 or 1返回1 |
| not | not x | 布尔"非" 取反。如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not False返回True,not True返回False |
示例:
1. and
>>> 1 and 2
2
>>> 0 and 2
0
>>> 3 and 1
1
>>> -1 and -2
-2
2. or
>>> 1 or 3
1
>>> 2 or 3
2
>>> 2 or 0
2
>>> 0 or 0
0
>>> 0 or 1
1
3. not
>>> not True
False
>>> not False
True
逻辑运算符也是有优先级的:
not > and > or
不过编写程序时应该人为的规定好优先级,使用圆括号().
更多文章请关注《万象专栏》
转载请注明出处:https://www.wanxiangsucai.com/read/cv8877