python基础知识
Python基本知识点
1:数据类型
什么是数据?
name = "Lx"
变量名 赋值符号 值(值就是数据)
为什么要有不同的数据类型?
因为事物有多种状态,所以需要多种数据类型来描述出事物的状态。
1:整数数据类型(int)
作用:记录年龄,等级,号码,快递单号,门牌号 QQ号码等状态
定义与使用
>>> age = 25
>>> age
25
>>> level = 14
>>> level
14
>>> qq = 282828
>>> qq
282828
>>> res = age * 1
>>> res
25
>>> print(age !=100)
True
2:浮点数类型(float)
作用:记录薪资、身高、体重等状态
定义与使用
>>> salary = 3.2
>>> salary
3.2
>>> print(salary,type(salary))
3.2 <class 'float'>
>>>print(3.3 + 1)
4.3
>>>print(3.3 >= 1)
True
# print("abc" > 1) # 不能混用
3:字符串类型(str)
字符串str
作用:记录一些描述性的状态,比如名字、性别、消息等等
定义与使用:在双引号内或者单引号内或三引号内('''content'''、"""content""")定义的一组字符称之为字符串
>>> msg = '小白兔白又白,两只耳朵竖起来了'
>>> msg
'小白兔白又白,两只耳朵竖起来了'
>>> msg1 = '爱吃萝卜和青菜'
>>> msg2 = '蹦蹦跳跳真可爱'
>>> msg3 = '爱吃'
>>> print(msg3,type(msg3))
爱吃 <class 'str'>
>>> msg_total = '''
... 小白兔白又白,
... 两只耳朵竖起来,
... 爱吃萝卜和青菜,
... 蹦蹦跳跳真可爱。'''
>>> msg_total
'小白兔白又白,两只耳朵竖起来,爱吃萝卜和青菜,蹦蹦跳跳真可爱。'
>>> simple_talk="My name is '小白兔'"
>>> simple_talk
"My name is '小白兔'"
>>> print(simple_talk)
My name is '小白兔'
>>> gender = 'male'
警告字符串类型(仅限本身)可以"+" "*"
不建议字符串进行拼接(消耗内存空间)
>>> 'abc'+'dcd' (拼接字符串)
'abcdcd'
>>> print('aabc'*10)
aabcaabcaabcaabcaabcaabcaabcaabcaabcaabc
4:列表类型(list)
列表list(类似于一个容器,可以存放好多东西): 索引对应值,索引从0开始
作用:按顺序存放多个值,并且能够按顺序取出来单独的一个值
定义与使用:在[]内用逗号分隔开多个任意类型的值
从左到右 0 1 2
>>> hobbies = ['撸猫', '喝酒', '睡觉']
从右到左 -3 -2 -1
>>> peopel_info = ['egon', 18, ['play','movie']]
list可以嵌套list
>>> peopel_info
['egon', 18, ['play', 'movie']]
>>> info = [
... ['engo' ,18 ,['play','xvideos']],
... ['engo' , 25, ['play football', 'sing'],]
... ]
取habbies第一个值
>>>hobbies[0] or hobbies[-3]
>>> info
[['engo', 18, ['play', 'xvideos']], ['engo', 25, ['play football', 'sing']]]
5:字典类型(dict)
引子
练习题1:存放一个人信息(名字、年龄、多个爱好)
egon_info = ["sx", 18, ["play", "movie"]]
练习题2:存放多个人信息(名字、年龄、多个爱好)
info = [
["sx", 18, ["play footballl", "music videos"]],
["sb", 19, ["Cs"]],
]
print(info[1][2][0])
当数据多了取数据就麻烦
四:字典
# 作用:存放多个值,用key对应值,key通常为字符串类型
# 定义与使用:在{}内用逗号分隔开多个key:value,其中value可以是任意类型
# info={"name":"egon","age":18,"gender":"male","hobbies":["play","music"]}
# print(info["name"])
# print(info["age"])
# print(info["hobbies"][1])
# 练习题:存放多个人信息(名字、年龄、多个爱好)
info = [
{
"name": "egon1",
"age": 18,
"level": 10,
"hobbies": ["play", "movie"]
},
{
"name": "egon2",
"age": 19,
"level": 11,
"hobbies": ["read"]
},
]
取第二个人的等级
print(info[1]["level"])
6:布尔类型(bool)
布尔类型,只有两个值True和False
1:可以自己定义布尔值
>>>flag=True
>>>print(flag,type(flag))
True <class 'bool'>
一般是通过比较运算得到布尔值的
>>> 10 > 1
True
>>> 10 < 2
False
>>> 10 != 2
True
>>> not 10 < 3
True
>>> 10 != 2
True
bool一般是用于条件是否成立
扩展(非常重要)
隐式的布尔值
隐式的布尔值为False的数据类型有:0,None,空(str,list,dict,tuple,set)
print(bool(0))
print(bool(None))
print(bool(""))
print(bool([]))
print(bool({}))
print(bool(()))
2:输入输出
1:input和print
python3中input功能会把用户输入的任意内容都存成字符串类型
接收用户的输入
inp_name=input("请输入您的账号名>>>: ") # "egon123*"
print(inp_name,type(inp_name))
注意1:
inp_age=input("请输入您的年龄>>>: ") # "18"
inp_age=int(inp_age) # int会把纯数字的字符串转换成int型
print(inp_age+1) # "18"+1
注意2:
inp_pwd=input("请输入您的密码>>>: ") # "123"
print(inp_pwd == 123) # "123" == 123
print(inp_pwd == "123") # "123" == "123"
注意3:无论输啥,都存成字符串
x=input(">>>: ") # "[1,2,3]"
print(x,type(x))
了解(**):
2:python2中raw_input功能与python3中的input功能一模一样
3:python2中input功能
你输入什么类型接收的就是什么类型
3:格式化输出
>>>
>>> print('login successfull')
login successfull
>>> name=input('your name: ')
your name: 'alex'
>>> name
"'alex'"
>>> age=input('your age: ')
your age: 18
>>> age
'18'
>>> print("my name is %s my age is %s" %(name,age))
my name is 'alex' my age is 18
>>> print("my name is %s" % "egon")
my name is egon
>>> print("my name is %s my age is %s" % ("egon", 18))
my name is egon my age is 18
>>> print("my name is %s my age is %s" % ("egon", [1,2,3]))
my name is egon my age is [1, 2, 3]
>>>
4:基本运算符
1:基本运算符
>>> 10 /3
3.3333333333333335
>>> 10 //3
3
>>> 10 % 3
1
>>> 10 ** 2
100
>>>
>>> 10 + 1
11
>>> 10 * 10
100
>>> 5 - 2
3
2:比较运算符
>>> 10 != 1
True
>>> 10 > 2
True
>>> 2 >3
False
>>> 3 >=4
False
>>> 18 <= 16
False
>>> 10 >= 33
False
>>> 10 != 5
True
3:赋值运算符
>>> age = 10
>>> age
10
>>> age +=5
>>> age
15
>>> age *=100
>>> age
1500
>>> age /=10
>>> age
150.0
>>> age = 20
>>> age
20
>>> age -= 15
>>> age
5
>>> age //=2
>>> age
2
>>> age = 8
>>> age %=3
>>> age
2
4:逻辑运算符
>>> 10 > 5 and 5 < 1
False
>>> 10 < 5 and 5> 1
False
>>> 10 > 4 and 4<=1
False
>>> 10 < 5
False
>>> not 10 < 5
True
优先级 not > and > or
短路运算
1 and 3
1 and 3 or 3 and 1
3 or 1
3 or False
3 or "False"
5:数据类型分类
1:不可变数据类型
1:不可变类型:int、float、str
在值改变的情况下,id号也跟着变了,也就是说内存地址变了,证明不是在改原来内存空间中的值,
而是申请了新的内存空间,产生了新的值,即原值不可变
#int
>>> xx = 11
>>> print(id(xx))
1546385488
>>> xx = 12
>>> print(id(xx))
1546385504
#float
>>> xx = 10.9
>>> print(id(xx))
19021584
>>> xx = 10.4
>>> print(id(xx))
19019280
#str
>>> xx = "abc"
>>> id(xx)
13435040
>>> xx = "Abc"
>>> id(xx)
14116224
字典的value可以是任意类型,但是字典的key必须是不可变类型
dic={1111111:"abc","k2":"def",3.1:'aaa'}
print(dic[1111111])
了解:不可哈希类型就是可变类型,可哈希类型就是不可变类型
dic={[1,2,3]:"abc"}
2:可变数据类型
1:可变类型:list,dict
在值改变的情况下,id号不变,也就是说内存地址不变,证明就是在改原来内存空间中的值,即原值可变
#list
>>> l1 = [111, "小白兔"]
>>> id(l1)
14064392
>>> l1[0]="大白兔"
>>> id(l1)
14064392
下面写法推荐使用列表代替
>>> dic = {0:"小米粒",1:"二米粒",2:"大米粒"}
>>> print(dic[0])
小米粒
>>> print(dic[1])
二米粒
>>> print(dic[2])
大米粒
>>>
#dict
>>> dic = {'k1':"big佩奇" , 'k2':"Alexsb"}
>>> dic["k1"]
'big佩奇'
>>> dic["k2"]
'Alexsb'
>>> id(dic)
13465192
>>> dic["k1"] = '大白兔'
>>> dic
{'k1': '大白兔', 'k2': 'Alexsb'}
>>> id(dic)
13465192
6:解压赋值
1:list类型解值
4、解压赋值
>>> moth_salary = [1.8 , 2.2, 3.3, 3.4, 5.5]
>>> mon1 = moth_salary[0]
>>> mon2 = moth_salary[1]
>>> mon3 = moth_salary[2]
>>> mon4 = moth_salary[3]
>>> mon5 = moth_salary[4]
>>> mon1
1.8
>>> mon2
2.2
>>> mon3
3.3
>>> mon4
3.4
>>> mon5
5.5
# 变量名的个数必须与包含的值的个数相同,多一个不行,少一个也不行
>>> mon0, mon1, mon2, mon3, mon4 = moth_salary
>>> moth_salary
[1.8, 2.2, 3.3, 3.4, 5.5]
>>> mon0
1.8
>>>
>>> mon0, mon1, mon2, mon3 = moth_salary
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 4)
>>> mon0, mon1, mon2, *_ = moth_salary
>>> mon1
2.2
>>> mon1
2.2
>>> mon2
3.3
>>> print(*_)
3.4 5.5
>>>
>>> *_, x, y, z=moth_salary
>>> print(*_)
1.8 2.2
>>> x
3.3
>>> y
3.4
>>> x, *_, y=moth_salary
>>> x
1.8
>>> print(*_)
2.2 3.3 3.4
>>> y
5.5
7:if判断
1:什么是if判断?
当人走在十字路口,要看面前的红绿灯,如果是绿灯就行走,红灯就停下来,你要是不怕死,你可以往前冲
判断 条件1 并且 条件2:
做什么事。。。
否则:
做什么事。。。
2:为什么要有if判断?
为了控制计算机能够像人一样去完成判断的过程
3:如何使用if判断?
1、介绍
print('start....')
if 3 != 3 and 10 > 8:
print("条件成立1")
print("条件成立2")
print("条件成立3")
else:
print("条件不成立1")
print("条件不成立2")
print("条件不成立3")
print('end....')
# if判断完整的语法
"""
if 条件1:
子代码块1
elif 条件2:
子代码块2
elif 条件3:
子代码块3
...
else:
子代码块
2、必须要有的是if,只有一个if是可以的
inp_name=input('你的名字: ')
if inp_name == "egon":
print('输入正确')
print('其他代码')
3、if+elif
inp_name=input('你的名字: ')
if inp_name == "egon":
print('您的身份是超级vip')
elif inp_name == "张三":
print('您的身份是钻石vip')
elif inp_name == "李四":
print('您的身份是铂金vip')
print('其他代码')
4、if+else
inp_name = input('你的用户名: ')
inp_pwd = input('你的密码: ')
if inp_name == "egon" and inp_pwd == "123":
print('登录成功')
else:
print("刚刚输入的用户名或密码错误")
print('其他代码')
5、if+elif+else
"""
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
"""
grade = int(input('请用户输入你的分数:'))
if grade >= 90:
print("分数优秀!")
elif 80 <= grade < 90:
print("良好!")
elif 70 <= grade < 80:
print("普通!")
else:
print("很差!")
8:循环(while, for)
1:什么是循环?
重复的在做某一件事,例如每天,起床都要把电脑打开,这就是在重复的做一件事。
2:为什么要用循环
当某一件事需要重复做的时候,我们可以把人的逻辑,翻译给计算器,让机器帮我们重复做某一件事。
3:如何使用循环?
while 条件:
代码
代码
while True:
print("hello ok")
print("hello goodbye")
print("hello what is name")
while True:
name = input("用户:")
pwd = input("密码:")
print(name , pwd)
while True:
print(1+1)
n = 1
while n<=5:
if n%2 == 0:
print(n)
n +=1
flag = True
while flag:
user = input("用户名:")
pwd = input("密码:")
if user == "egon" and pwd == "egon":
print("登录成功")
flag = False # 通过修改条件来终止循环
else:
print("用户名或者密码错误,请重新输入")
print('你好呀')
while True:
user = input("用户名:")
pwd = input("密码:")
if user == "egon" and pwd == "dsb":
print('登录成功')
break # 通过break直接来直接杀死循环
else:
print("用户名错误或者密码错误!")
print("test")
#####################################
循环嵌套
age = 10
while True:
print("AA")
while True:
print("BB")
while age <15:
print(age)
age +=1
n = 1
while n <= 3:
print('外循环%s' % n)
n += 1
i = 1
while i <= 2:
print("内循环%s" % i)
i += 1
#########################3
cotinue 是跳过此次循环
n = 1
while n <= 5:
if n == 4:
n += 1
continue
# n+=1 # 切忌在continue同一级别之后添加代码
print(n)
n += 1
while True:
user = input("用户名:")
pwd = input("密码:")
if user == "egon" and pwd == "dsb":
print("登录成功")
break # 结束
else:
print('用户名或者密码错误, 请重新输入')
continue
print("hello word")
while + else
n = 1
while n <= 4:
if n == 4:
pass
# break
print(n)
n +=1
else:
print('else的代码运行中')
警告:如果是通过break终止了整个循环,else是不执行的
9:for循环
1:有while 循环为什么还要有for循环?
那是因为,for循环的语法比while循环语法更简洁,
2:如何使用for循环?
name = ["小白兔", "白又白", "两只耳朵竖起来", "爱吃萝卜和青菜", "蹦蹦跳跳真可爱"]
i = 0
while i < len(name):
print(name[i])
i += 1
dic = {"k1": 111, "k2": 222, "k3": 333}
for item in dic:
print(item, dic[item])
for item in "abcdefg":
print(item)
for x in range(1, 5, 1):
print(x)
for x in range(1 ,5 ,2):
print(x)
n = 0
while n <3:
print('干三下')
n +=1
for i in range(3):
print("干三件事!")
for i in range(10):
if i == 8:
break
print(i)
for i in range(10):
if i == 7:
continue
print(i)
for i in range(8):
if i == 3:
break
print(i)
else:
print("执行了吗?")
for i in range(3):
print("外循环%s" % i)
for j in range(2):
print("内循环%s" % j)
l = ["a", "bb", "cc"]
for i in l:
del l[0]
print(i)
3:扩展range
range(start,end,step)
>>> range(30)
range(0, 30)
>>> list(range(3))
[0, 1, 2]
>>> list(range(30))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
>>> list(range(1, 10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 10 ,3))
[1, 4, 7]
>>>