首页 > 编程语言 >Python学习笔记

Python学习笔记

时间:2024-04-01 14:58:24浏览次数:24  
标签:name Python 定义 笔记 学习 字符串 num print 变量

Python

一、导学

  1. Pthon语言基础入门
  2.  Pthon语言高阶加强
  3. 大数据分析PySpark

二、 初识Python

  1. 你好Python程序
  2. print("Hello World!!")
    
    >>Hello World!!

输入的双引号和括号为英文字符

三、 Python基础语法

(一) 字面量

      1. 定义:在代码中,被写下来的固定的,称之为字面量。

      2. 常用的6种值的类型

类型

描述

说明
数字(Number)

支持(4种子类型)

  • 整数(int)
  • 浮点数(float)
  • 复数(complex)
  • 布尔(bool)
  • 整数(int),如:10、-10
  • 浮点数(float),如:13.14、-13.14
  • 复数(complex),如:4+3j,以j为结尾表示复数
  • 布尔(bool),表述现实生活中的真假,即True本质为数字1、False本质为数字0
字符串(String)描述文本的一种数据类型字符串(string)由任意数量的字符组成
列表(List)有序的可变序列Python中使用最频繁的数据类型,可有序记录一堆数据
元组(Tuple)有序的不可变序列可有序记录一堆不可变的Python数据集合
集合(Set)无序不重复集合可无序记录一堆不重复的Python数据集合
字典(Dictionary)无序Key-Value集合可无序记录一堆Key-Value型的Python数据集合

     3. 字符串

!Python中,字符串需要用双引号包围;

!被双引号包围的都是字符串


  1. 666
    
    13.14
    
    "黑马程序员"
    
    
    print( 666 )
    
    print( 13.14 )
    
    print( "黑马程序员" )
    
    
    >>666
    
    >>13.14
    
    >>"黑马程序员"

(二) 注释

        1. 单行注释

# 我是单行注释

print( "黑马程序员" )

!规范:#号和注释内容一般建议以一个空格隔开

       2. 多行注释

"""

我是多行注释

666

13.14

"黑马程序员"

"""


print( 666 )

print( 13.14 )

print( "黑马程序员" )

(三) 变量

        1. 定义:程序运行时,能储存计算结果或表示值的抽象概念。

                       简单的说,变量就是在程序运行时,记录数据用的

        2.定义格式:

变量名称 = 变量的值

# 定义变量

money = 5000


# print输出变量

print( " 钱包还有:" , money )


>> 钱包还有: 5000


# 买了东西,花费10元

money = money - 10

print( "买了冰淇淋花费10元,还剩余:" , money , "元" )


>>买了冰淇淋花费10元,还剩余: 4990 元

!变量值可变

$练习:

(四) 数据类型

        1. type()语句【具有返回值】

             1)语法:

type(被查看类型的数据)

             2)使用方法:

a = type( 666 )

print( a )


print( type( 13.14 ) )


name = "黑马程序员"

name_type = type( name )

print( name_type )


>> <class 'int'>

>> <class 'float'>

>> <class 'str'>

        2. 变量无类型,查看变量的类型实际上查看的是变量存储数据的类型

!字符串变量:不是字符串是变量,而是变量存储了字符串

(五) 数据类型转换

       1.  常见的转换语句

语句(函数)说明
int( x )将x转换为一个整数
float( x )将x转换为一个浮点数
str( x )将对象x转换为字符串

!此三种语句具有返回值


# 将数字类型 -> 字符串类型

num_str = str( 11 )

print( type( num_str ) , num_str )


float_str = str( 13.14 )

print( type( float_str ) , float_str )


>> <class 'str'> 11

>> <class 'str'> 13.14

# 将字符串类型 -> 数字类型

num = int( "11" )

print( type( num ) , num )


num2 = float( "13.14" )

print( type( float ) , num2 )


>> <class 'int'> 11

>> <class 'float'> 13.14

!想要将字符串转换成数字,必须要求字符串内的内容都是数字

num3 = int ( "黑马程序员" )

print( type( num3 ) , num3 )


>> ValueError: invalid literal for int() with base 10: '黑马程序员'

 !浮点数转整数会丢失精度


# 整数 -> 浮点数

float_num = float( 11 )

print( type( float_num ) , float_num )


>> <class 'float'> 11.0


# 浮点数 -> 整数

int_num = int( 13.14 )

print( type( int_num ) , int_num )


>> <class 'int'> 13

(六)标识符

        1. 定义:用户在编程时所用的一系列名字,用于给变量、类、方法等命名。 

        2. 命名规则:

                      内容限定(英文,中文,数字,下划线_)

!数字不可开头

                     大小写敏感

                     不可使用关键字              

         3. 命名规范:

                    见名知义

                    下划线命名法

                    英文字母全小写

(七) 远算符

        1. 算术运算符:+、-、*、/、//、%、**(指数)

        2. 赋值运算符:=

        3. 复合赋值运算符:+=、-=、*=、/=、//=、%=、**=

(八) 字符串扩展

1. 3种定义方式

    1)定义形式:

           ① 单引号定义法:

name = '黑马程序员'

           ②双引号定义法:

name = "黑马程序员"

           ③三引号定义法:

name = """黑马程序员"""

                *支持换行操作,使用变量接收它,则为字符串;不使用变量接收,则为多行注释

# 单引号定义法,使用单引号进行包围

name = '黑马程序员'

print( type(name) )


# 双引号定义法,写法和多行注释是一样的

name = "黑马程序员"

print( type(name) )


# 三引号定义法,写法和多行注释是一样的

name = """

我是

黑马

程序员

"""

print( type(name) )


>> <class 'str'>

>> <class 'str'>

>> <class 'str'>

    2)字符串的引号嵌套

           ①单引号法,可以内含双引号;

           ②双引号定义法,可以内含单引号;

           ②可以使用转义字符(\)来将引号解除效用,变成普通字符串。

# 字符串内,包含双引号

name = '"黑马程序员"'

print( name )


# 字符串内,包含单引号

name = "'黑马程序员'"

print( name )


# 使用转义字符(\)解除引号的效用

name = "\"黑马程序员\""

print( name )

name = '\'黑马程序员\''

print( name )



>> "黑马程序员"

>> '黑马程序员'

>> "黑马程序员"

>> '黑马程序员'

2. 字符串拼接

     1)通过+号进行拼接

  1. name = "黑马程序员"

  2. print( "我的名字是:" + name + "我可以教大家IT技能" )

  3. >> 我的名字是:黑马程序员我可以教大家IT技能

!无法和非字符串类型进行拼接

3. 字符串格式化

    1)“%占位符”%变量

    2)常用占位符

               字符串:%s

               整数:   %d

               浮点数:%f

    3)数字精度控制

         辅助符号“m.n”来控制数据的宽度和精度

         m :控制宽度,要求是数字(很少使用),设置的宽度小于数字本身,不生效

         .n:控制小数点精度,要求是数字,会进行小数的四舍五入

%5d:表示将整数的宽度控制在5位,如数字11,被设置为5d,就会变成:[空格][空格][空格]11,用三个空格补足宽度

%5.2f:表示将宽度控制为5,将小数点精度设置为2

            小数点和小数部分也算入宽度计算。如:对11.345设置为%7.2后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度,四舍五入为.35

%.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置为%.2f,结果是11.35


num1 = 11

num2 = 11.345

print( "数字11宽度限制5,结果:%5d" % num1 )

print( "数字11宽度限制1,结果:%1d" % num1 )

print( "数字11.345宽度限制7,小数精度2,结果:%7.2f" % num2 )

print( "数字11.345不限制宽度,小数精度2,结果:%.2f" % num2 )


>> 数字11宽度限制5,结果: 11 # 宽度5,补了3个空格

>> 数字11宽度限制1,结果:11 # 宽度小于数字本身,无影响

>> 数字11.345宽度限制7,小数精度2,结果: 11.35

# 宽度7,补了2个空格,小数精度2,四舍五入后为.35

>> 数字11.345不限制宽度,小数精度2,结果:11.35

# 不限制宽度,小数点后四舍五入后为.35

     4)快速写法

语法:

f"内容{变量}"


name = "传智播客"

set_up_year = 2006

stock_price = 19.99

print( f"我是{name},我成立于{set_up_year}。我今天的股票价格是:{stock_price}" )


>> 我是传智播客,我成立于2006。我今天的股票价格是:19.99

# 不做精度控制,原样输出

!以上字符串格式化均可用于表达式格式化


print( "1 * 1的结果是:%d" % ( 1 * 1 ) )

print( f"1 * 1的结果是:{1 * 1}")

print( "字符串在Python中的类型是:%s" % type('字符串') )


>> 1 * 1的结果是:1

>> 1 * 1的结果是:1

>> 字符串在Python中的类型是:<class 'str'>

$练习:

(九)数据输入

1. 语法

input();

2. 使用:

使用input()语句可以从键盘获取输入

使用一个变量接收(存储)input语句获取的键盘输入数据即可

数据输出:print

数据输入:input


print( "请告诉我你是谁?" )

name = input()

print( "GET!!你是:%s" % name )



>> 请告诉我你是谁?

>> XUANseyo

>> GET!!你是:XUANseyo

 ! input()语句可以在要求使用者输入内容之前,输出提示内容的


  1. name = input( "你是谁?" )
    
    print( "GET!!你是:%s" % name )
    
    
    
    >> 你是谁?XUANseyo
    
    >> GET!!你是:XUANseyo

!无论input()输入什么,其都会自动转为字符串类型,我们要自行进行数据类型转换


  1. num = input( "你的银行卡密码是:" )
    
    print( "你的银行卡密码的类型是:" , type( num ) )
    
    
    >> 你的银行卡密码是:123456
    
    >> 你的银行卡密码的类型是: <class 'str'>

$练习: 

 四、 Python判断语句

(一) 布尔类型和比较运算符

1. 布尔类型:判断结果

                    True:表示真(是、肯定)

                    False:表示假(否、否定)


  1. # 定义变量存储布尔类型的数据
    
    bool_1 = True
    
    bool_2 = False
    
    print( f"bool_1变量的内容是:{ bool_1 },类型为:{ type( bool_1 ) }" )
    
    print( f"bool_2变量的内容是:{ bool_2 },类型为:{ type( bool_2 ) }" )
    
    
    
    >> bool_1变量的内容是:True,类型为:<class 'bool'>
    
    >> bool_2变量的内容是:False,类型为:<class 'bool'>

2. 比较运算和比较运算符:

==、!=、>、<、>=、<=

(二) if语句的基本格式

1. if语句基本格式:

if 要判断的条件:

                 条件成立时,要做的事情

!首行缩进确定代码块归属


  1. age = 30
    
    
    if age >= 18:
    
    print( "我已经成年了。" )
    
    print( f"已经{ age }岁了啊!" )
    
    print( "时间过得真快啊!" )
    
    
    >> 我已经成年了。
    
    >> 已经30岁了啊!
    
    >> 时间过得真快啊!

# 判断语句的结果必须为布尔类型的True或False

  True会执行if内的代码语句

  False则不会执行


  1. age = 10
    
    
    if age >= 18:
    
    print( "我已经成年了。" )
    
    print( f"已经{ age }岁了啊!" )
    
    print( "时间过得真快啊!" )
    
    
    
    >> 时间过得真快啊!

 $练习: 

(三) if else 语句

1. 基本格式:

if 条件 :

    满足条件时要完成的事1

    满足条件时要完成的事2

……

else:

    不满足条件时要完成的事1

    不满足条件时要完成的事2

……


  1. print( "欢迎来到黑马儿童游乐场,儿童免费,成人收费!" )
    
    age = input( "请输入您的年龄:" )
    
    
    if int(age) >= 18 :
    
    print( "您已成年,游玩需补票10元" )
    
    else :
    
    print( "您未成年,无需补票" )
    
    
    print( "祝您游玩愉快!!!" )
    
    
    >> 欢迎来到黑马儿童游乐场,儿童免费,成人收费!
    
    >> 请输入您的年龄:17
    
    >> 您未成年,无需补票
    
    >> 祝您游玩愉快!!!

  $练习: 

"""
演示if else练习题:我要买票吗
"""

# 定义键盘输入获取身高数据
height = int(input("请输入你的身高(cm):"))

# 通过if进行判断
if height > 120:
    print("您的身高超出120CM,需要买票,10元。")
else:
    print("您的身高低于120CM,可以免费游玩。")

print("祝您游玩愉快")

(四) if elif else 语句

1. 基本格式:

if 条件1 :

    条件1满足时要完成的事

    条件1满足时要完成的事

……

elif 条件2::

    条件2满足时要完成的事

    条件2满足时要完成的事

……

elif 条件n:

    条件n满足时要完成的事

    条件n满足时要完成的事

……

else:

    所有条件不满足时要完成的事

    所有条件不满足时要完成的事

……


  1. print("欢迎来到黑马动物园!!")
    
    
    height = int(input("请输入你的身高:"))
    
    vip_level = int(input("请输入您的vip级别(1~5):"))
    
    
    if height < 120 :
    
    print("您的身高小于120cm,可以免费游玩")
    
    
    elif vip_level > 3 :
    
    print("您的vip级别大于3,可以免费游玩")
    
    
    else :
    
    print("不好意思,所有条件均不符合,需要购票10元")
    
    
    print("祝您游玩愉快")
    
    
    
    >> 欢迎来到黑马动物园!!
    
    >> 请输入你的身高:150
    
    >> 请输入您的vip级别(1~5):5
    
    >> 您的vip级别大于3,可以免费游玩
    
    >> 祝您游玩愉快

$练习:

"""
演示if elif else练习题:猜猜心里数字
"""

# 定义一个变量数字
num = 5

# 通过键盘输入获取猜想的数字,通过多次if 和 elif的组合进行猜想比较
if int(input("请猜一个数字:")) == num:
    print("恭喜第一次就猜对了呢")
elif int(input("猜错了,再猜一次:")) == num:
    print("猜对了")
elif int(input("猜错了,再猜一次:")) == num:
    print("恭喜,最后一次机会,你猜对了")
else:
    print("Sorry 猜错了")

(五) 判断语句的嵌套

1. 基本格式

if 条件1 :

    满足条件1时要完成的事1

    满足条件1时要完成的事2

……

      if条件2:

           满足条件2做的事情1

           满足条件2做的事情2

          ……

2. 嵌套的关键点:空格缩进

   通过空格缩进,来决定语句之间的:层次关系

(六) 实战案例


  1. import random
    
    num = random.randint(1,10)
    
    
    m = int(input("第一次才得数字:"))
    
    if num == m :
    
    print ("猜对啦!")
    
    else :
    
    if num > m:
    
    print("猜小了!")
    
    else :
    
    print("猜大了!")
    
    
    m2 = int(input("第二次猜测的数字:"))
    
    if m2 == num:
    
    print("第二次猜对了!")
    
    elif num > m2:
    
    print("第二次猜小了!")
    
    elif num < m2:
    
    print("第二次猜大了")
    
    guess_num = int(input("第三次输入你要猜测的数字:"))
    
    
    if guess_num == num:
    
    print("第三次猜中了")
    
    else:
    
    print("三次机会用完了,没有猜中。")

五、 Python循环语句

(一) while循环的基本语法

1.  基本格式

while 条件:

      条件满足时,做的事情1

      条件满足时,做的事情2

     …(省略)…

  • 只要条件满足,会无限循环执行
  • 条件需要布尔类型结果

$练习:

"""
演示while循环基础练习题:求1-100的和
"""
sum = 0
i = 1
while i<=100:
    sum += i
    i += 1

print(f"1-100累加的和是:{sum}")

 (二) while循环的基础案例

"""
演示while循环的基础案例 - 猜数字
"""

# 获取范围在1-100的随机数字
import random
num = random.randint(1, 100)
# 定义一个变量,记录总共猜测了多少次
count = 0

# 通过一个布尔类型的变量,做循环是否继续的标记
flag = True
while flag:
    guess_num = int(input("请输入你猜测的数字:"))
    count += 1
    if guess_num == num:
        print("猜中了")
        # 设置为False就是终止循环的条件
        flag = False
    else:
        if guess_num > num:
            print("你猜的大了")
        else:
            print("你猜的小了")

print(f"你总共猜测了{count}次")

(三) while循环的嵌套应用

 1. 基本格式:

while 条件1:

      条件1满足时,做的事情1

      条件1满足时,做的事情2

     …(省略)…

      while 条件2:

          条件2满足时,做的事情1

          条件2满足时,做的事情2

          …(省略)…

(四) while循环的嵌套应用

补充:

1. print输出不换行


  1. print("Hello",end=' ')
    
    print("World!",end='')
    
    
    
    >> Hello World!

2. 制表符/t


  1. print("学号\t姓名\t语文\t数学\t英语")
    
    print("2022001\t小王\t99\t\t88\t\t0")
    
    print("2022002\t小周\t92\t\t45\t\t93")
    
    print("2022008\t小黄\t77\t\t82\t\t100")

"""
演示使用while的嵌套循环
打印输出九九乘法表
"""

# 定义外层循环的控制变量
i = 1
while i <= 9:

    # 定义内层循环的控制变量
    j = 1
    while j <= i:
        # 内层循环的print语句,不要换行,通过\t制表符进行对齐
        print(f"{j} * {i} = {j * i}\t", end='')
        j += 1

    i += 1
    print()     # print空内容,就是输出一个换行

(五) for循环的基础语法

1. 基础语法

for循环就是将“待办事项”逐个完成的循环机制

  • while循环的循环条件是自定义,自行控制循环条件
  • for循环是一种“轮询”机制,是对一批内容进行逐个处理

!for循环无法定义循环条件,只能从被处理的数据集中,依次取出内容进行处理

1) 基本格式:

for 临时变量 in 待处理的数据集:

            循环满足条件时执行的语句

 $练习:

"""
演示for循环的练习题:数一数有几个a
"""
# 统计如下字符串中,有多少个字母a
name = "itheima is a brand of itcast"

# 定义一个变量,用来统计有多少个a
count = 0

# for 循环统计
# for 临时变量 in 被统计的数据:
for x in name:
    if x == "a":
        count += 1

print(f"被统计的字符串中有{count}个a")

2. range语句

1) 功能:获得一个数字序列(可迭代类型的一种)

2) 语法格式:

range(num)

获取一个从0开始,到num结束的数字序列

range(num1,num2)

获取一个从num1开始,到num2结束的数字序列(不含num2本身)

range(num1,num2,step)

 获得一个从num1开始,到num2结束的数字序列(不含num2本身)

数字之间的步长,以step为准(step默认为1)

$练习:

3. 变量作用域

(六)for循环的嵌套应用

1. 基本格式:

for 临时变量 in 待处理的数据集:

            循环满足条件时执行的语句1

            循环满足条件时执行的语句2

            ……

             for 临时变量 in 待处理的数据集:

                          循环满足条件时执行的语句1

                          循环满足条件时执行的语句1       

$练习:

"""
演示for循环打印九九乘法表
"""

# 通过外层循环控制行数
for i in range(1, 10):
    # 通过内层循环控制每一行的数据
    for j in range(1, i + 1):
        # 在内层循环中输出每一行的内容
        print(f"{j} * {i} = {j * i}\t", end='')

    # 外层循环可以通过print输出一个回车符
    print()

(七) 循环中断:break和continue

1. continue关键字作用:中断本次循环,直接进入下一次循环【for循环和while循环即可使用】

2. break关键字作用:所在循环永久中断【for循环和while循环即可使用】

(八) 综合案例

六、 Python函数

(一) 函数介绍

1. 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。

eg. len():实现统计长度这一特定功能的代码段。

2. 函数好处:

    * 将功能封装在函数内,可随时随地重复利用

    * 提高代码的复用性,减少重复代码,提高开发效率

(二) 函数定义

1. 基本语法:

(1) 函数定义

def 函数名 (传入函数):

        函数体

       return 返回值

(2) 函数调用

函数名(参数)

!参数可省略

!返回值可省略

!函数必须先定义后使用

$练习:


  1. def printWelcome ():
    
    print("欢迎来到黑马程序员!")
    
    print("请出示48小时核酸检测证明!")
    
    
    printWelcome()

(三) 函数参数

1. 传入参数的功能:在函数调用时,接受外部提供的数据

!参数之间按顺序传入;使用,进行分隔

$练习:


  1. def printWelcome(x):
    
    print("欢迎来到黑马程序员!请出示48小时核酸检测证明!")
    
    if x <= 37.5:
    
    print(f"体温测量中,您的体温是:{x},体温正常,请进!")
    
    else:
    
    print(f"体温测量中,您的体温是{x},需要隔离!")
    
    
    
    y = int(input("请输入您的体温:"))
    
    printWelcome(y)

(四) 函数返回值

1. 通过return关键字,可向调用者返回数据

2.. None类型:

(1) None,其类型是<class ’NoneType’>

(2) 无返回值的函数,实际上是返回了None这个字面量

(3) 使用:

  • 用于函数返回值中【空】
  • 用于if判断【None等同于False】
  • 用于声明无内容的变量上

(五) 函数说明文档

1. 函数说明文档:对函数进行说明解释,帮助更好地理解函数

2.. 定义语法:

def func(x,y)

     """

     函数说明

     :param x:参数x的说明

     :param x:参数x的说明

     :return:返回值的说明

     """

     函数体

     return 返回值

(六) 函数嵌套使用

1. 函数嵌套:在一个函数中,调用另一个函数。

2. 执行流程:

函数a中执行到调用函数b的语句,会将b全部执行;完成后,继续执行函数a的剩余内容

(七) 变量的作用域

1. 变量作用域:变量的作用范围

2.. 局部变量:定义在函数体内部的变量,只在函数体内部生效

    局部变量作用:在函数体内部,临时保存数据,即当函数调用完成后,销毁局部变量

3. 全局变量:在函数体内外都能生效的变量

4. global关键字:可使函数内部声明变量为全局变量

(八) 综合案例


  1. money = 5000000
    
    name = None
    
    
    
    def menu():
    
    name = input("您好!请输入客户姓名:")
    
    print("您好,请问您需要什么服务呢?")
    
    print("输入1:查询余额")
    
    print("输入2:存款")
    
    print("输入3:取款")
    
    n = int(input("请输入功能号:"))
    
    if n == 1:
    
    check(money)
    
    elif n == 2:
    
    x = int(input("请输入您想存入的金额:"))
    
    deposit(x, money)
    
    elif n == 3:
    
    y = int(input("请输入您想取出的金额:"))
    
    withdraw(y, money)
    
    
    
    def check(money):
    
    print(f"您好!您的余额为:{money}")
    
    menu()
    
    
    
    def deposit(x, money):
    
    money1 = x + money
    
    print(f"您好,存款成功后,您的余额为:{money1}")
    
    menu()
    
    
    
    def withdraw(x, money):
    
    money2 = money - x
    
    print(f"您好,取款成功后,您的余额为:{money2}")
    
    menu()
    
    
    
    menu()

七、 Python数据容器

(一) 数据容器入门

1. 数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为一个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

2.. 种类:list(列表)、tuple(元组)、str(字符串)、set(集合)、dict(字典)

(二) 数据容器:list(列表)

1. 定义

(1) 基本语法:

# 字面量

[元素1 ,元素2 ,元素3,……]

# 定义变量

变量名称 = [元素1 ,元素2 ,元素3,……]

# 定义空列表

变量名称 = []

变量名称 = list()

(2) 元素:列表中的每个数据

! 列表可以一次存储多个数据,且可以为不同类型,支持嵌套

2. 列表的下标索引

(1) 类型:正向:从前向后,从0开始,依次递增

                        反向:从后向前,从-1开始,依次递减

(2) 使用:

列表[下标]

! 下标超出范围,则无法取出元素,并且会报错

3. 列表的常用操作(方法)

* 函数:封装的代码单元,可提供特定功能。

  如将函数定义为class(类)的成员,则称函数为方法。

编号关键字使用方法作用
1index列表.index(元素)查找指定元素在列表中的下标,找不到则报错ValueError
2lenlen(列表)统计容器中有多少元素
3count列表.count(元素)统计此元素在列表中出现的次数
4deldel 列表[下标]删除列表指定的下标元素
5pop列表.pop[下标]删除列表指定的下标元素
6remove列表.remove(元素)从前向后,删除此元素的第一个匹配项
7append列表.append(元素)向列表中追加一个元素
8extend列表.extend(容器)将数据容器中的内容依次取出,追加到列表尾部
9insert列表.insert(下标,元素)在指定下标处,插入指定的元素
10clear

列表.clear()

清空列表

4. 列表的特点

  • 可容纳多个元素
  • 可容纳不同类型的元素
  • 数据是有序存储的
  • 允许重复数据存在
  • 可进行增删查改

$练习:


  1. age = [21, 25, 21, 23, 22, 20]
    
    
    age.append(31)
    
    print(age)
    
    
    age.extend([29, 33, 30])
    
    print(age)
    
    
    x = age[0]
    
    y = age[-1]
    
    
    print(x, y)
    
    
    a = age.index(31)
    
    print(a)

(三) list(列表)的遍历

* 遍历:将容器内的元素依次取出,并处理

1.  使用while遍历

  • 可以指定循环条件,自行控制
  • 可以通过条件控制做到无限循环
  • 适用于任何想要循环的场景

2. 使用for遍历

  • 不可以指定循环条件,只可以一个个从容器内取出数据
  • 理论上不可以无限循环,因为被遍历的容器容量不是无限的
  • 适用于遍历数据容器的场景或简单的固定次数循环场景

$练习:


  1. L = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    l1 = list()
    
    l2 = list()
    
    i = 0
    
    
    # 取出偶数
    
    while i < len(L):
    
    if L[i] % 2 == 0:
    
    l1 . append(L[i])
    
    i = i + 1
    
    else:
    
    i = i + 1
    
    print(f"通过while循环,从列表:{L},中取出偶数,组成新列表{l1}")
    
    
    
    for j in L:
    
    if j % 2 == 0:
    
    l2 . append(j)
    
    print(f"通过for循环,从列表:{L},中取出偶数,组成新列表{l2}")

(四) 数据容器:tuple(元组)

* 元组一旦定义,不可进行修改

1. 元组的定义

(1) 基本语法:

# 字面量

(元素1 ,元素2 ,元素3,……)

# 定义变量

变量名称 =(元素1 ,元素2 ,元素3,……)

# 定义空列表

变量名称 = ()

变量名称 =tuple()

! 元组即使只含有一个数据,这个数据后也要添加,也可进行嵌套

2. 元组的操作(方法) 

编号关键字使用方法作用
1indexindex()查找指定数据在元组中的下标,找不到则报错
2lenlen(元组)统计元组内有多少元素
3countcount()

统计某个数据在元组中出现的次数

! 不可修改元组内容,否则直接报错

! 可修改元组内list的内容

! 不可以替换元组内list为其他list或其他类型

3. 元组的特点

  • 可容纳多个元素
  • 可容纳不同类型的元素
  • 数据是有序存储的
  • 允许重复数据存在
  • 可进行增删查改
  • 可进行循环
  • 不可修改

$练习:


  1. T = ('周杰伦', 11, ['football', 'music'])
    
    
    a = T.index(11)
    
    n = T[0]
    
    print(a,n)
    
    
    del T[2][0]
    
    T[2].append('coding')
    
    
    print(T)

(五) 数据容器:str(字符串)

1. 字符串

字符的容器,一个字符串可以存放任意数量的字符。

2. 字符串的下标(索引)

  • 从前向后,下标从0开始
  • 从后向前,下标从-1开始

! 字符串是一个无法修改的数据容器

! 如果要修改,则会得到一个新的字符串,旧的字符串是无法修改的

3. 字符串的常用操作

编号关键字使用方法作用
1字符串[下标]根据下标索引取出特定位置字符
2index字符串.index(字符串)查找给定字符的第一个匹配项的下标
3replace字符串.replace(字符串1,字符串2)

将字符串内的全部字符串1,替换为字符串2

!不会改变原字符串,而是得到一个新的字符串

4split字符串.split(字符串)

按照给定字符串,对字符串进行分割

!不会改变原字符串,而是得到一个新的列表

5strip

字符串.strip()

字符串.strip(字符串)

移除首尾的空格和换行符或指定字符串
6

count

字符串.count(字符串)统计字符串内某字符串的出现次数
7lenlen(字符串)统计字符串的字符个数

4. 字符串的特点

  • 只可以存储字符串
  • 长度任意
  • 支持下标索引
  • 允许重复的字符串出现
  • 不可以修改
  • 支持循环

$练习:


  1. S = "itheima itcast boxuegu"
    
    
    n = S.count("it")
    
    print(f"字符串{S}中有{n}个it字符")
    
    
    
    S1 = S.replace(" ", "|")
    
    print(f"字符串{S},被替换空格后,结果{S1}")
    
    
    
    L = S1.split("|")
    
    print(f"字符串{S},按照“|”分割后,得到{L}")

(六) 数据容器的切片

1. 序列

内容连续、有序、可使用下标索引的一类数据容器。(如列表、元组、字符串等)

2. 切片

(序列的常用操作)从一个序列中,取出一个子序列

3. 基本语法

序列[起始下标:结束下标:步长]

* 表示从序列中,从指定位置开始,依次取出指定元素,到指定位置结束,得到一个新序列

* 起始下标表示从何处开始,可以留空,留空视作从头开始

* 结束下标(不含)表示何处结束,可以留空,留空视作截取到结尾

* 步长表示,依次取元素的间隔

  • 步长1表示,一个个取元素
  • 步长2表示,每次跳过1个元素取
  • 步长N表示,每次跳过N-1个元素取
  • 步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

$练习:


  1. S = "万过薪月,员序程马黑来,nohtyP学"
    
    
    # 使用“切片”
    
    new_S = S[9:4:-1]
    
    print(new_S)
    
    
    # 使用字符串常用操作
    
    i = -9
    
    S1 = S.replace("来", "")
    
    S2 = S1.split(",")
    
    print(S2)
    
    new_S1 = S2[0][9:4:-1]
    
    print(new_S1)

(七) 数据容器:set(集合)

1. 集合的基本语法

# 定义集合字面量

(元素,元素,……,元素)

# 定义集合变量

变量名称 = {元素,元素,……,元素}

# 定义空集合

变量名称 = set()

! 去重且无序,无法保证顺序与创建的时候一致

! 不支持:下标索引访问,因此不支持while循环

补充:

定义:

列表[]         可修改、支持重复元素且有序

元组()    不可修改、支持重复元素且有序

字符串“”     不可修改、支持重复元素且有序

集合{}         可修改、不支持重复元素、无序

2. 集合的常用功能

编号关键字使用方法作用
1add集合.add(元素)集合内添加一个元素
2remove集合.remove(元素)移除集合内指定的元素
3pop集合.pop()从集合中随机取出一个元素
4clear集合.clear()将集合清空
5difference集合1.difference(集合2)

得到一个新集合,内含2个集合的差集

原有的2个集合内容不变

6update集合1.difference_update(集合2)

在集合1中,删除集合2中存在的元素

集合1被修改,集合2不变

7union集合1.union(集合2)得到1个新集合,内含2个集合的全部元素原有的2个集合内容不变
8lenlen(集合)得到一个整数,记录了集合的元素数量

3. 集合的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标存储)
  • 不允许重复数据存在
  • 可以修改
  • 支持for循环,不支持while循环

$练习:


  1. my_list = ['黑马程序员','传智播客','黑马程序员','传智播客','itheima','itcast','itheima','itcast','best']
    
    
    S = set()
    
    for i in my_list:
    
    S.add(i)
    
    
    print(f"有列表:{my_list}")
    
    print(f"存入集合后结果:{S}")

(八) 数据容器:dict(字典、映射)

1. 字典的基本语法

# 定义字典字面量

{key:value,key:value,……,key:value}

# 定义字面变量

my_dict = {key:value,key:value,……,key:value}

# 定义空字典

my_dict = {}

my_dict = dict{}

! 每个元素均为键值对,key和value可以为任意类型数据(key不可为字典)

! key不可重复,重复会对原有数据覆盖

! 不可以使用下标索引,但可通过key值取得对应的value,不可使用while循环

! 字典可嵌套

2. 字典的常用操作

编号关键字使用方法作用
1字典[Key]获取指定Key对应的Value值
2字典[Key] = Value添加或更新键值对
3pop字典.pop(Key)取出Key对应的Value并在字典内删除此Key的键值对
4clear字典.clear()清空字典
5keys字典.keys()获取字典的全部Key,可用于for循环遍历字典
6lenlen(字典)计算字典内的元素数量

3. 字典的特点

  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 不支持下标索引
  • 可以修改
  • 支持for循环,不支持while循环

$练习:


  1. D = {
    
    "王力鸿":{"部门":"科技部","工资":3000,"级别":1},
    
    "周婕纶":{"部门":"市场部","工资":5000,"级别":2},
    
    "凌俊杰":{"部门":"市场部","工资":7000,"级别":3},
    
    "张雪有":{"部门":"科技部","工资":4000,"级别":1},
    
    "牛德华":{"部门":"市场部","工资":6000,"级别":2}
    
    }
    
    keys = D.keys()
    
    
    print(D)
    
    
    for key in keys:
    
    if D[key]["级别"] == 1:
    
    D[key]["工资"] = D[key]["工资"] + 1000
    
    
    print(D)

扩展:数据容器的对比总结

列表元组字符串集合字典
元素数量支持多个支持多个支持多个支持多个支持多个
元素类型任意任意仅字符任意

Key:除字典外任意类型

Value:任意类型

下标索引××
重复元素××
可修改性××
数据有序×××
使用场景可修改、可重复的一批数据的记录不可修改、可重复的一批数据的记录一串字符的记录不可重复的数据记录以Key检索Value的数据记录

(九) 数据容器的通用操作

序号功能描述
1for循环遍历容器(字典是遍历key)
2max()容器内最大元素
3min()容器内最小元素
4len()容器内元素个数
5list()转换为列表
6tuple()转换为元组
7str()转换为字符串
8set()转换为集合
9sorted(序列,[reverse = True])

排序,得到一个排好序的列表

reverse = True表示“降序”

(十)综合案例


  1. # 幸运数字6:
    
    # 1. 输入任意数字,如数字8,生成nums列表,元素值为1-8,
    
    # 2. 从中选取幸运数字(能被6整除)移动到新列表lucky
    
    # 3. 打印nums和lucky
    
    
    n = int(input("请输入您所想的数字:"))
    
    i = 1
    
    j = 0
    
    nums = list()
    
    lucky = list()
    
    print(n)
    
    
    while i <= n:
    
    nums.append(i)
    
    i = i + 1
    
    
    print(f"nums列表为:{nums}")
    
    
    for j in nums:
    
    if j % 6 == 0:
    
    lucky.append(j)
    
    j = j + 1
    
    
    print(f"lucky列表为:{lucky}")


  1. # 列表嵌套:
    
    # 3个教室[[],[],[]]
    
    # 8名讲师['A','B','C','D','E','F','G','H']
    
    # 随机分配
    
    import random
    
    
    classroom = [[],[],[]]
    
    teacher = ['A','B','C','D','E','F','G','H']
    
    
    j = random.randint(0,2)
    
    
    for i in teacher:
    
    classroom[j].append(i)
    
    j = random.randint(0,2)
    
    
    print(f"分配后为:{classroom}")

八、 函数进阶

(一) 函数多返回值

  • 按照返回值的顺序,写对顺序的多个变量接收即可
  • 变量之间用逗号隔开
  • 支持不同类型的数据return

  1. def test_return():
    
    return 1,2
    
    
    x,y = test_return()
    
    print(x)
    
    print(y)
    
    
    >>1
    
    >>2

(二) 函数的多种传参方式

函数参数种类:根据使用方式不同:分为以下4种

1. 位置参数

  • 根据函数定义的参数位置来传递参数

! 传递的参数和定义的参数的顺序及个数必须一致

2. 关键字参数

  • 函数调用时通过键值对的形式传递参数

! 函数调用时,如果有位置参数时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

3. 缺省参数

  • 也称默认参数,用于定义函数,为函数提供默认值,调用函数时可不传该默认参数的值

! 所有位置参数必须出现在默认参数前,包括函数定义和调用

! 函数调用时,如果为缺省参数传值则修改默认参数值,否则使用这个默认值

4. 不定长参数

  • 也称可变参数,用于不确定调用的时候会传递多少个参数(不传参也可以)的场景。

! 当调用函数时不确定参数个数时,可以使用不定长参数。

(1) 位置传递

  • 传进的所有参数都会被args变量收集,他会根据传进参数的位置合并为一个元组(tuple),args是元组类型,这就是位置传递

  1. def user(*args):
    
    print(args)
    
    
    user('Belly',20,1)
    
    
    >>('Belly', 20, 1)

(2) 关键字传递

  • 参数是键值对形式,所有键值对都会被kwargs接受,同时根据键值对组成字典

  1. def user(**kwargs):
    
    print(kwargs)
    
    
    user(name = 'Belly',age = 20,sex = 1)
    
    
    >>{'name': 'Belly', 'age': 20, 'sex': 1}

(三) 匿名函数

1. 函数作为参数传递

  • 函数本身可以作为参数,传入另一个函数中进行使用
  • 函数传入的作用在于:传入计算逻辑,而非传入数据

2. lambda匿名函数

(1) 函数定义:

  • def关键字:定义带有名称的函数(可以使用名称进行重复使用)
  • lambda关键字:定义匿名函数(只可临时使用一次)

(2) lambda基本语法:

lambda 传入参数:函数体(一行代码)

! 函数体只可写一行代码,无法写多行


  1. def test(compute):
    
    result = compute(2,3)
    
    print(result)
    
    
    test(lambda x,y:x + y)

九、 Python文件操作

(一) 文件的编码

1. 编码

  • 编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑
  • 编码有许多种,最常用的是utf-8

2. 使用编码的原因

  • 计算机只能识别二进制数,因此要将文件的内容翻译为二进制数,才能保存进计算机内
  • 同时也需要编码,将计算机保存的二进制数,反向编译回可识别的内容

(二) 文件的读取

1. 文件的基本操作步骤

  • 打开文件
  • 读写文件
  • 关闭文件

! 可以只读,不写

2. 文件的基本操作函数

编号关键字使用方法作用
1open文件对象 = open(file,mode,encoding)打开文件获得指定文件对象
2read文件对象.read(num)

读取指定长度字节

不指定num读取文件全部

3readline文件对象.readline()读取一行
4readlines文件对象.readline()读取全部行,得到列表
5forfor line in 文件对象for循环文件行,一次循环得到一行数据
6close文件对象.close()关闭文件对象
7with openwith open() as f通过with open语法打开文件,可以自动关闭

! 读取文件后,要用进行关闭,否则文件一直被占用

$练习:


  1. word = open('D:\Desktop\word.txt', 'r', encoding="utf-8")
    
    
    L = word.readlines()
    
    num = 0
    
    
    print(L)
    
    
    for i in L:
    
    num = num + i.count("itheima")
    
    
    print(num)

(三) 文件的写入

1. 写操作快速入门:

(1) 使用open的“w”模式进行写入

(2) 文件写入:f.write()

(3) 内容刷新:f.flush()


  1. # 打开文件
    
    f = open('D:\Desktop\word.txt','w')
    
    
    # 写入文件
    
    f.write('hello world!')
    
    
    # 内容刷新
    
    f.flush()

! 直接调用write,内容并未真正写入文件,而是积攒在程序的内存中,称为缓冲区

! 当调用flush时,文件才会真正写入文件

! 这样避免频繁的操作硬盘,导致效率下降

2. 注意事项:

  • w模式,文件不存在,会创建新文件
  • w模式,文件存在,会清空原有内容
  • close方法,具有flush方法的作用

(四) 文件的追加

1. 追加写入操作的快速入门

(1) 使用open的“a”模式进行写入

(2) 文件写入:f.write()

(3) 内容刷新:f.flush()


  1. # 打开文件
    
    f = open('D:\Desktop\word.txt','a')
    
    
    # 文件写入
    
    f.write('I like pyhton!')
    
    
    # 内容刷新
    
    f.flush()

2. 注意事项

  • a模式,文件不存在,不会创建文件
  • a模式,文件存在,会在最后追加写入文件

(五) 综合案例

"""
演示文件操作综合案例:文件备份
"""

# 打开文件得到文件对象,准备读取
fr = open("D:/bill.txt", "r", encoding="UTF-8")
# 打开文件得到文件对象,准备写入
fw = open("D:/bill.txt.bak", "w", encoding="UTF-8")
# for循环读取文件
for line in fr:
    line = line.strip()
    # 判断内容,将满足的内容写出
    if line.split(",")[4] == "测试":
        continue        # continue进入下一次循环,这一次后面的内容就跳过了
    # 将内容写出去
    fw.write(line)
    # 由于前面对内容进行了strip()的操作,所以要手动的写出换行符
    fw.write("\n")

# close2个文件对象
fr.close()
fw.close()      # 写出文件调用close()会自动flush()

十、 Pyhon异常、模块与包

(一) 了解异常

1. 异常

  • 程序运行的过程中出现了错误

2. bug

  • bug就是指异常的意思,因为历史是因为小虫子导致计算机失灵的案例,所以延续至今,bug就代表软件出现错误

(二) 异常的捕获方法

1. 程序出现bug后的情况

  • 程序因为一个bug停止运行
  • 对bug进行提醒·,整个程序继续运行

2. 为什么要捕获异常?

  • 在可能发生异常的方法,进行捕获,当出现异常时,提供解决方式,而不是任由其导致程序无法运行
  • 作用:提前假设某处会出现异常,做好提前准备,当真的出现异常的时候,可以有后续手段

(三) 异常综合案例

(四) Pyhton模块

(五) Python包

(六) 安装第三类Python包

十一、python综合基础案例——折线图可视化

十二、python综合基础案例——地图可视化

一、面向对象

(一)、初识对象

1.生活中数据的组织

学校开学,要求学生填写自己的基础信息,一人发一张白纸,让学生自己填

改为登记表,打印出来让学生自行填写:

 2.程序中数据的组织

在程序中简单使用变量来记录学生信息

 使用变量记录数据太乱了。

  • 如果程序中也和生活中一样 可以设计表格
  • 可以将设计的表格打印出来
  • 可以将打印好的表格供人填写内容

那么数据的组织就非常方便了。

3.使用对象组织数据

在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的。

  1. 在程序中设计表格,我们称之为:设计类(class)
    1. class Student:
      
      name = None # 记录学生姓名

  2. 在程序中打印生产表格,我们称之为:创建对象
    
    
    1. # 基于类创建对象
      
      stu_1 = Student()
      
      stu_2 = Student()

  3. 在程序中填写表格,我们称之为:对象属性赋值
    
    
    1. stu_1.name = "周杰伦" # 为学生1对象赋予名称属性值
      
      stu_2.name = "张三" # 为学生2对象赋予名称属性值

    4.总结:

1. 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据

2. 进行对比,在程序中:

  • 设计表格,称之为:设计类(class)
  • 打印表格,称之为:创建对象
  • 填写表格,称之为:对象属性赋值

(二)、类的成员和方法

1.类的定义和使用

我们简单了解到可以使用类去封装属性,并基于类创建出一个个的对象来使用。 现在我们来看看类的使用语法:

  • class是关键字,表示要定义类了
  • 类的属性,即定义在类中的变量(成员变量)
  • 类的行为,即定义在类中的函数(成员方法)

创建类对象的语法:对象 = 类名称()

2.成员变量和成员方法

什么是类的行为(方法)呢?


  1. class Student:
    
    name = None # 学生的姓名
    
    age = None # 学生的年龄
    
    
    def say_hi(self):
    
    print(f"Hi大家好,我是{self.name}")
    
    
    
    stu = Student()
    
    stu.name = "张三"
    
    stu.age = 25
    
    stu.say_hi() # Hi大家好,我是张三

 可以看出,类中:

  • 不仅可以定义属性用来记录数据
  • 也可以定义函数,用来记录行为

其中:

  • 类中定义的属性(变量),我们称之为:成员变量
  • 类中定义的行为(函数),我们称之为:成员方法

定义在类内部的函数 称之为方法

3.成员方法的定义语法

在类中定义成员方法和定义函数基本一致,但仍有细微区别:


  1. def 方法名(self, 形参1, ......, 形参N):
    
    方法体

可以看到,在方法定义的参数列表中,有一个:self关键字

self关键字是成员方法定义的时候,必须填写的。

  • 它用来表示类对象自身的意思
  • 当我们使用类对象调用方法的是,self会自动被python传入
  • 在方法内部,想要访问类的成员变量,必须使用self
    
    
    1. def say_hi(self):
      
      print(f"Hi大家好,我是{self.name}")

4.注意事项

self关键字,尽管在参数列表中,但是传参的时候可以忽略它。 如:


  1. class Student:
    
    name = None
    
    
    def say_hi(self):
    
    print("Hello 大家好")
    
    
    def say_hi2(self, msg):
    
    print(f"Hello 大家好,{msg}")
    
    
    
    stu = Student()
    
    stu.say_hi() # 调用的时候无需传参
    
    stu.say_hi2("很高兴认识大家") # 调用的时候,需要传msg参数
    
    
    
    结果:
    
    Hello 大家好
    
    Hello 大家好,很高兴认识大家

 可以看到,在传入参数的时候,self是透明的,可以不用理会它。

5.总结

 类是由哪两部分组成呢?

  • 类的属性,称之为:成员变量
  • 类的行为,称之为:成员方法

注意:函数是写在类外的,定义在类内部,我们都称之为方法哦

类和成员方法的定义语法

  • self的作用 表示类对象本身的意思
  • 只有通过self,成员方法才能访问类的成员变量
  • self出现在形参列表中,但是不占用参数位置,无需理会

(三)、类和对象

1.现实世界的事物和类

 现实世界的事物也有属性和行为,类也有属性和行为。

使用程序中的类,可以完美的描述现实世界的事物

2.类和对象  对象名 = 类名称()

基于类创建对象的语法:

为什么非要创建对象才能使用呢?

        类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作

                        这种套路,称之为:面向对象编程

3.使用类和对象描述现实事物

在现实中,生产事物

 在程序中通过类来描述

 4.基于类创建对象


  1. class Clock:
    
    id = None # 序列号
    
    price = None # 零售价
    
    
    def ring(self):
    
    import winsound
    
    winsound.Beep(2000, 3000)
    
    
    
    clock1 = Clock() # 基于类创建对象
    
    clock1.id = "003032"
    
    clock1.price = 100
    
    print(f"闹铃ID:{clock1.id},价格:{clock1.price}")
    
    clock1.ring() # 使用对象的属性和行为clock1 = Clock()
    
    
    clock2 = Clock() # 基于类创建对象
    
    clock2.id = "003033"
    
    clock2.price = 152
    
    print(f"闹铃ID:{clock2.id},价格:{clock2.price}")
    
    clock2.ring() # 使用对象的属性和行为

5.总结:

 1. 现实世界的事物由什么组成?

  • 属性
  • 行为

类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的

2. 类和对象的关系是什么?

  • 类是程序中的“设计图纸”
  • 对象是基于图纸生产的具体实体

3. 什么是面向对象编程?

  • 面向对象编程就是,使用对象进行编程。

即,设计类,基于类创建对象,并使用对象来完成具体的工作

标签:name,Python,定义,笔记,学习,字符串,num,print,变量
From: https://blog.csdn.net/weixin_67870062/article/details/137233330

相关文章

  • 【QT学习笔记】qt配置快捷键:全局快捷键|应用程序中的快捷键
    在QtCreator中配置快捷键,可以通过以下步骤进行:配置全局快捷键(适用于整个IDE的操作):1.**打开快捷键设置**:  -打开QtCreator,点击顶部菜单栏的“工具”(Tools)。  -在下拉菜单中选择“选项”(Options)。  -在打开的选项窗口中,找到并点击“键盘”(Keyboard)或......
  • Python简直是万能的,这5大主要用途你一定要知道!
    众所周知小学生的教材里面已经有Python了,国家二级计算机证也需要学习Python了!因为Python简单、入门快,是不少程序员入门的首选语言。如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?”这个问题不好回答,因为Python有很多用途。但是随着时间,我......
  • 如何系统学习数据分析?需要学习那些知识
    大数据时代到来,如何从数据中提取、挖掘对业务发展有价值的、潜在的知识,为决策层的决策提供有力依据,为产品或服务发展方向提供指引,有力推动企业管理的精益化,对于每个企业都意义重大。而这些工作,大多需要数据分析师才能完成,但如何才能系统学习数据分析成为一名合格的数据分析......
  • 熬夜梳理!Python 技术大佬总结了53个使用技巧!
    大家好,今天给大家分享老司机总结的一些干货技巧,非常有价值,尤其是对Python编程基础比较薄弱的小伙伴,记得收藏哦,欢迎关注、点赞。交流群建立Python交流群,想要进技术交流群的同学,可以直接加微信号:dkl88191。加的时候备注一下:研究方向+学校/公司+知乎,即可。然后就可以拉你......
  • 【学习笔记】字符串基础:后缀数组
    后置数组好难啊好难啊好难啊好难啊好难啊好难啊最后还是听了不知道从ftp里搞出来的yspm讲课视频才听懂的,但是yspm用的屏幕绘画是看不见的比较尊贵,然后开了画图本文约定字符串下标从\(1\)开始后缀数组后缀数组,即\(\text{SA(SuffixArray)}\),主要关系到两个数组:\(sa......
  • 【飞控制作】从飞控制作学习项目经验
    1.四旋翼无人机飞行原理:欠驱动系统通过4个电机的转速,来控制飞行器X、Y、Z轴的加速度和角速度,实现悬停、垂直升降、俯仰、偏航、滚转(这里只对比较陌生的俯仰、偏偏行、滚转做示意图说明)。组成运动控制运动控制主要参考:四旋翼无人机飞行原理及控制方法,你了解多少?实物图2.......
  • 深度学习编译综述
    TheDeepLearningCompiler:AComprehensiveSurveyhttps://arxiv.org/pdf/2002.03794.pdf研究背景深度学习编译是深度学习模型与硬件之间的桥梁深度学习编译器通用设计框架高级IR:表示计算和控制流,体系架构无关低级IR:描述指令细节特性,体系架构相关前端:将深度学习模......
  • WingPro for Mac(Python开发工具)
    了解更多相关内容请点击此处WingProforMac是一款Python开发环境,适用于Mac平台。它由Wingware公司开发,提供了一系列强工具,可以帮助Python开发人员轻松地编写、调试和测试Python代码。WingProforMac具有一个直观的用户界面,支持多种编程语言和框架,例如Django、Flask、Pyramid......
  • 【Python基础】判断语句
    文章目录@[toc]布尔类型示例比较运算符逻辑运算符and示例or示例not示例特殊情况下的逻辑运算符andorif判断语句格式示例else判断语句格式示例elif语句格式执行流程示例if嵌套格式示例个人主页:丷从心.系列专栏:Python基础学习指南:Python学习指南布尔......
  • Python数据分析的基本过程
    一般来说,数据分析的基本过程包括以下几个步骤:1.提出问题——即我们所想要知道的指标(平均消费额、客户的年龄分布、营业额变化趋势等等)2.导入数据——把原始数据源导入JupyterNotebook中(网络爬虫、数据读取等)3.数据清洗——数据清洗是指发现并纠正数据文件中可识别的错......