一、数据类型基础
数据类型就是不同种类的变量值用不同的数据类型来描述
1.1 数字类型
整型(int)
定义方式:
age=18 # age=int(18) print(type(age)) print(age)
<class 'int'>
18作用:例如表示人的年龄、号码、级别等的整数
使用方法:可以加减乘除、逻辑判断(大于、小于)
浮点型(fioat)
定义方式:
salary=2.3 # salary=float(2.3) print(type(salary)) print(salary)
<class 'float'>
2.3作用:例如表示身高、体重、薪资等的数值
使用方法:可以加减乘除、逻辑判断(大于、小于)
1.2 字符串类型(str)
定义方式:
字符串就是一串被串起来的字符,在单引号、双引号或三引号内包裹的一串字符。需要注意的是:三引号内的字符可以换行,而单双引号内的字符不行
name1='zyl' name2="cx" print(id(name1)) print(type(name1)) print(name1)
2693201174912
<class 'str'>
zylname3="""zyl egon""" print(name3)
zyl
egon作用:例如表示名字、爱好
使用方法:字符串只能用+,*和逻辑比较,字符串的拼接,即重新申请一个小空间把两个字符串都拷贝一份后再拼接,而不是你YY的把一个小空间内的变量值复制到另一个变量的小空间内,然后拼接
注意:如果字符串内有引号,则包裹字符串的引号和字符串内部的引号不能相同
字符串的乘法只能乘以数字
字符串的比较是字母的顺序
1.3 列表类型(list)
定义方式:
hobby='read' hobby_list=[hobby,'run','girl'] print(type(hobby_list)) print(hobby_list)
<class 'list'>
['read', 'run', 'girl']作用:存放多个值
使用方法:在[ ]内用逗号分隔开任意类型的值,列表索引取值序号从0开始
hobby_list=['read','run','girl'] # 索引序号 0 1 2 print(hobby_list[1] ) # 取出第二个爱好
run
hobby_list=['read','run',['girl_name',18,'shanghai']] print(hobby_list[2][1]) # 取出girl的年龄
18
1.4 字典类型(dict)
定义方式:
在{}内用逗号分隔开多个元素,每一个元素都是key: value的格式,其中value是任意格式的数据类型,key由于具有描述性的作用,所以key通常是字符串类型
user_info={'name':'zyl','gender':'male','age':18, 'company_info':['oldboy','shanghai',40]} print(id(user_info)) print(type(user_info)) print(user_info)
2178070637592
<class 'dict'>
{'name': 'zyl', 'gender': 'male', 'age': 18, 'company_info': ['oldboy', 'shanghai', 40]}作用:用来存取多个值,按照key:value的方式存值,取值的时候通过key而非索引去取值,key对value具有描述性的作用。存放数据的种类各种各样并且数据较多的时候可以使用字典
使用方法:字典取值方式不再依赖于索引,而是依赖于key,通过[key]即可获取key对应的value值
# 字典套列表 user_info={'name':'zyl','gender':'male','age':18, 'company_info':['oldboy','shanghai',40]} print(user_info['name']) print(user_info['company_info'][0])
zyl
oldboy# 字典套字典 user_info={'name':'zyl','gender':'male','age':18, 'company_info':{'c_name':'oldboy','c_addr':'shanghai','c_num_of_employee':40}} print(user_info['name']) print(user_info['company_info']['c_name'])
zyl
oldboy
1.5 布尔类型(bool)
定义方式:
True、False通常情况不会直接引用,需要使用逻辑运算得到结果
作用:用于判断条件结果
使用方法:
print(type(True)) print(True)
<class 'bool'>
Trueprint(bool(0)) print(bool('nick')) print(bool(1 > 2)) print(bool(1 == 1))
False
True
False
True
注意:python中所有数据类型的值都自带布尔值。如此多的数据类型中只有0、None、空、False的布尔值为False,其余的都为True。
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
print(bool(False))
False
False
False
False
False
False
二、解压缩
解压缩可以这样理解:超市打包是把多个商品放在一起,解压缩其实就是解包把多个商品一次性拿出来
name_list=['yujin','xuchu','dianwei','xiahoudun'] x,y,z,a=name_list print(f'x:{x}, y:{y}, z:{z}, a:{a}')
x:yujin, y:xuchu, z:dianwei, a:xiahoudun
有时候我们解压缩的值可能是我们不想要的,那么可以使用下划线,万能的下划线
lis=[1,2,3] x1,_,x3=lis # 不需要2,_表示不需要,约定俗成的 print(x1) print(x3)
1
3lis=[1,2,3] _, _, x3 = lis # 只要第三个元素 print(x3)
3
lis=[1,2,3,4,5,6,7] x1,x2,*_,x3=lis # *_ 会把前面所有的都省略掉,都不要 print(x1) print(x2) print(x3) print(_)
1
2
7
[3, 4, 5, 6]python追求的是简洁性,代码不要写的太长了。因此用字典类型解压缩也是可以的,但是字典解压缩得到的是key。
info = {'name': 'nick', 'age': 18} x, y = info print(x, y)
name age
三、Python与用户交互
计算机的发明是为了奴役计算机,解放劳动力.写了一个程序系统来取代人类,那就需要这个程序能与人交互
如何交互
# 用户名和密码的交互
username_db='zyl'
pwd_db='123'
username=input('请输入你的用户名:') # input让用户输入,与用户交互
pwd=input('请输入你的密码:')
if username == username_db and pwd == pwd_db:
print('登陆成功')
else:
print('登陆失败')
请输入你的用户名:zyl
请输入你的密码:123
登陆成功
==注意==:无论我们输入的值是数字类型、字符串类型、列表类型,input的接收值都是字符串类型
四、格式化输出的三种方式
1、占位符
程序中经常会要求用户输入信息,然后打印成固定的格式,占位符能很方便的把用户信息放到指定的位置
name='zyl'
age=25
print('my name is %s my age is %s'% (name,age))
my name is zyl my age is 25
age = 25
print('my age is %d' % age)
my age is 25
%s(针对所有数据类型),%d(只针对数字类型)
2、format格式化
很鸡肋的方法,基本不会去用
name = 'zyl'
age = 25
print("Hello, {}. You are {}.".format(name, age))
Hello, zyl. You are 25.
3、f-String格式化
该方法相对于上面两种更加简单易懂,print(f'{key}')的格式
name='zyl'
age=25
print(f"Hello,{name}. You are {age}.")
Hello,zyl. You are 25.
==大写的F和小写y都可以==
https://www.cnblogs.com/nickchen121/p/10728289.html
五、基本运算符
1、算术运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 | a+b |
- | 减 | a-b |
* | 乘 | a*b |
/ | 除 | a/b |
// | 除以取整 | a//b |
% | 除以取余 | a%b |
** | 幂(次方) | a**b为a的b次方 |
2、比较运算符
偷个懒,直接盗图吧!
3、赋值运算符
贴图不可耻,理解记住就行
4、逻辑运算符(返回True或False)
# and(和),两个条件都为真就为真,否则都为False
print(1>1 and 2>3) # False
print(10>1 and False) # False
# or(或),只要有一个为真就为真,否则都为False
age = 18
inp_age= input('age:')
print(age==inp_age or True) # True
print(True or False) # True
print(False or False) # False
# not(不是)
print(not True) # False
print(not False) # True
5、身份运算符(通过比较两者id返回布尔值)
is和==的区别:is用于判断两个变量引用对象是否为同一个(是否在同一块内存空间中), ==用于判断引用变量的值是否相等。
x = 257
y = x
z = 257
print(f'x is y:{x is y}')
print(f'x == y:{x == y}')
print(f'x is z:{x is z}')
print(f'x == z:{x == z}')
x is y:True
x == y:True
x is z:False
x == z:True
6、Python运算符优先级
只做了解就行,==优先级高的括号括起来就行了==
https://www.cnblogs.com/nickchen121/p/10728299.html
六、流程控制之if判断
1、语法
if主要就是模拟我们人类做判断。就是说如果这样干什么,如果那样干什么。
1.1 if(单分支结构)
表示if成立代码成立会干什么
<代码块1>
if <条件>:
<代码块2> # 当条件为True的时候执行代码块2然后执行代码块3,否则不执行代码块2直接执行代码块3
<代码块3> # 当条件不成立时直接运行代码块3
cls = 'human'
gender = 'female'
age = 18
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
print('end...')
开始表白
end...
1.2 if...else (双分支结构)
<代码块1>
if <条件>:
<代码块2> # 当条件为True的时候执行代码块2然后执行代码块3
else:
<代码块4> # 当条件不成立时,运行代码块4,然后再运行代码块3
<代码块3> # 当条件不成立时首先运行代码块4,然后运行代码块3
表示if成立代码成立会干什么,else不成立会干什么。
cls = 'human'
gender = 'female'
age = 38
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
else:
print('阿姨好')
阿姨好
1.3 if...elif...else (多分支结构)
<代码块1>
if <条件1>:
<代码块2> # 当条件1为True的时候执行代码块2然后执行代码块3
elif <条件2>:
<代码块5> # 当条件1不成立条件2成立,执行代码块5,然后执行代码块3
elif <条件n>:
<代码块n>
else:
<代码块4> # 当if和elif的所有条件都不成立时,执行代码块4,然后执行代码块3
<代码块3>
if...elif...else表示if条件1成立干什么,elif条件2成立干什么,elif条件3成立干什么,elif...否则干什么。
cls = 'human'
gender = 'female'
age = 28
if cls == 'human' and gender == 'female' and age > 16 and age < 22:
print('开始表白')
elif cls == 'human' and gender == 'female' and age > 22 and age < 30:
print('考虑下')
else:
print('阿姨好')
考虑下
2、if的嵌套
age = 18
inp_age = int(input('age:')) # 17
if age >= inp_age: # a
if age > inp_age: # b
if 'e':
print('猜小了') # a成立b也成立e也成立我才做
else: # c
print('猜中了') # a成立 c成立我才做
else: # d # a不成立我就做
print('猜大了')
https://www.cnblogs.com/nickchen121/p/10737326.html
七、流程控制之while循环
1、语法
while循环又称为条件循环,while就是当的意思,指当后面的条件成立,就执行while下面的代码,循环就是重复做一件事。
while 条件:
代码块 # 当条件成立时会进行运行,结束完代码块后会再一次判断条件,成立再运行代码块,运行完再判断条件
2、while+break
在循环的过程中,因为某些原因,不想继续循环了,要把它终止,就要用到break和continue语句。
break用于完全结束一个循环,跳出循环体执行循环后面的语句。
while(当) <条件>:
<需要进行重复的代码块> # 当条件成立时会进行运行,结束完代码块后会再一次判断条件,成立再运行,运行完再判断条件,%
break # 遇到break后终止while循环
3、while+continue
continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,而break则完全终止循环。
while 条件:
代码块
if 条件:
代码块
cotinue # 不执行下面代码,然后继续循环,即跳出本次循环
代码块
4、while循环的嵌套
也就是第一个while循环要执行的代码块中再加入一个while循环,例如ATM密码输入成功还需要进行一系列的命令操作,比如取款,比如转账。并且在执行功能结束后会退出命令操作的功能,即在功能出执行输入q会退出输出功能的while循环并且退出ATM程序。
5、tag控制循环退出
也就是让tag=True或False
6、while+else (仅做了解即可)
n = 1
while n < 3:
print(n)
n += 1
else:
print('else会在while没有被break时才会执行else中的代码')
1
1
2
else会在while没有被break时才会执行else中的代码
八、流程控制之for循环
for循环的循环次数受限于容器类型的长度,而while循环的循环次数需要自己控制。for循环也可以按照索引取值。
1、语法
for i in range/str/list/tuple/dict/set(可迭代对象):
print(i)
2、for+break
for循环跳出结束本层循环
for i in range/str/list/tuple/dict/set(可迭代对象):
print(i)
break # 结束本层循环
3、for+continue
for循环结束本次循环,进入下一次循环
for i in range/str/list/tuple/dict/set(可迭代对象):
print(i)
if 条件:
continue # 结束本次循环,即不执行下面代码,继续循环
代码块
4、for循环的嵌套
外层循环循环一次,内层循环循环所有的。
for i in range(3):
print(f'-----:{i}')
for j in range(2):
print(f'*****:{j}')
5、for+else
for循环没有break的时候触发else内部代码块
for i in range/str/list/tuple/dict/set(可迭代对象):
print(i)
else:
print('如果我没有被break,我就会被打印出来')
name_list = ['nick', 'jason', 'tank', 'sean']
for name in name_list:
print(name)
else:
print('for循环没有被break中断掉')
在往后的python编程中,还是经常用for循环比较好。