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:基本运算符

image-20200603213435273

>>> 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:赋值运算符

image-20200603213743995

>>> 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:逻辑运算符

https://images.cnblogs.com/cnblogs_com/wait59/1779850/o_200603140603image-20200603213829677.png

>>> 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]
>>>
posted @ 2020-06-03 22:14  为了等  阅读(228)  评论(0编辑  收藏  举报