zoukankan      html  css  js  c++  java
  • python基础知识(一)

           最近花时间整理了一下以前学过的python基础知识,语言最多的是使用。

    1.1 开发模式

    • 交互模式:简单的调试或者测试

     

    • 开发流程

    创建以.py结尾的python文件

    在python文件中输入打印“hello world”的代码

    运行编写完的python代码文件

    • 使用pycharm创建python项目
      • 注释作用:描述一段代码的实现逻辑和功能,增强代码的可读性,易于维护
      • 单行注释:以#开头,注释一行,多行注释需在注释的内容开头分别添加#
      • 多行注释:'''注释内容'''或者 ''''''注释内容'''''' 可以对多行内容整体进行注释  
      • 注释在代码执行过程中不会被执行,注释数量没有限制
      • 注释快捷键:“Ctrl”+ “/”

    1.2 注释 

    • 注释作用:描述一段代码的实现逻辑和功能,增强代码的可读性,易于维护
    • 单行注释:以#开头,注释一行,多行注释需在注释的内容开头分别添加#
    • 多行注释:'''注释内容'''或者 ''''''注释内容'''''' 可以对多行内容整体进行注释  
    • 注释在代码执行过程中不会被执行,注释数量没有限制
    • 注释快捷键:“Ctrl”+ “/”

    1.3 变量

    • 变量指向各种类型值的名字,当使用该类型值时,直接使用变量,不需要再写具体的值。

    格式:变量名 = 数值

    • 变量的类型不需要显示指定,python解释器会自动判断数据类型。可将任意数据类型赋值给变量。
    • 变量名词命名简洁明了,见名知意

    module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name

    • 使用type(变量)查看变量类型

    1.4 数据类型

     

    *** eval(str)根据str的值来自动判断转换为哪一种数据类型:

    eval("123”) 转换为int

    eval(“3.25”)转换为float

    1.5 输入、输出

    • input()用于在程序执行过程中接收用户输入的内容,默认接收的输入内容为字符串类型
    • print()用于在程序执行过程中输出内容:

    直接输出内容

    输出单个和多个变量

    格式化输出

    1.6 格式化输出

    格式化输出应用示例:

    print("你输入的名字是:%s" %name)

    print(“你输入的名字是:%s,你输入的年龄是:%d” %(name, age))

    print(“你的身高是:%.2f” %height)

    占位

    意义

    占位

    意义

    %c

    字符

    %X

    十六进制整数

    %s

    通过str()字符串转换来格式化

    %x

    十六进制整数

    %e

    索引符号

    %o

    八进制整数

    %E

    索引符号

    %i

    有符号十进制整数

    %f

    浮点实数,默认保留6位小数;

    指定精度:

    %.<n>f, <n>代表保留的小数位数

    %d

    有符号十进制整数

    %g

    %f和%e的简写

    %u

    无符号十进制整数

    %G

    %f和%e的简写

     

     

     

    1. 格式化输出时,若打印%,需使用%%表示是字符串而不是转化说明符
    2. print无换行输出:

    print(“hello”, end=””)

    print(“world”)

    1. 简洁格式化:format

    print(“你的名字是:{},你的年龄是{}”.format(name, age)

    1.7 标识符、命名规则、关键字

    标识符:

    • 在python程序开发过程中,自定义的一些符号、名称
    • 由字母、数字、下划线组成,不能以数字开头
    • 标识符区分大小写

    命名规则:

    • 见名知意

    module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name

    • 不能使用关键字

    关键字:

    • 在Python内部具有特殊功能的标识符
    • 通过keyword模块的kwlist函数查看

    1.8 运算符

    算术运算符:

    符号

    意义

    +

    加:两个对象相加

    -

    减:得到负数或者一个数减去另外一个数

    *

    乘:两个数相乘或是返回一个被重复若干次的字符串

    /

    除:x除以y

    %

    取模:返回除法的余数

    **

    幂:返回x的y次幂

    //

    取整除:返回商的整数部分

     

    赋值运算符:

    符号

    意义

    =

    简单的赋值运算符

    +=

    加法赋值运算符

    -=

    减法赋值运算符

    *=

    乘法赋值运算符

    /=

    除法赋值运算符

    %=

    取模赋值运算符

    **=

    幂赋值运算符

    //=

    取整除赋值运算符

     

    比较运算符:

    符号

    意义

    ==

    等于:比较对象是否相等

    !=

    不等于:比较两个对象是否不相等

    >

    大于:返回x是否大于y

    <

    小于:返回x是否小于y

    >=

    大于等于:返回x是否大于等于y

    <=

    小于等于:返回x是否小于等于y

     

    逻辑运算符:

    符号

    意义

    and

    x and y:如果表达式x和y同时为True,则返回True,否则返回False

    or

    x or y:如果x或y中某一表达式为True,则返回True,否则返回False

    not

    not x:如果表达式x为True,则返回False,否则返回True

     

    运算符优先级:

     

     

    条件判断、循环

    2.1 条件判断

    • 条件判断语法格式:

    if条件:

       逻辑代码

    else:

       其他逻辑代码                             

      

    • 多条件判断语法格式:

    if 条件1:

       逻辑代码1

    elif 条件2:

       逻辑代码2

    elif 条件3:

       逻辑代码3

    else:

       其他逻辑代码     

    • If嵌套语法格式:

    if 条件1:

       if 内部条件1:

          内部逻辑代码1

       elif 内部条件2:

          内部逻辑代码2

       else:

          内部其他逻辑代码

    elif 条件2:

       逻辑代码2

    else:

       其他逻辑代码                                   

    2.2 循环

    2.2.1 while循环

    • 语法格式

    while 判断条件:

    条件满足,执行语句

    • 执行流程

    首先对while条件判断,当条件为true时,执行循环体内语句块,然后再判断while条件,仍然为true则继续执行语句块,直到条件为false循环结束,执行循环后的代码

    • 应用场景

    对于满足某种条件,重复调用实现相同功能的代码

    2.2.2 for循环

    • 语法格式

    for 临时变量 in 序列:

    序列中存在待处理元素则进入循环体执行代码

    for i in range(0, 10, 1)

    range(0,10): [0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

    • 执行流程

    每次循环判断for中的条件,从序列的零脚标开始,将序列中的元素赋值给临时变量,进入循环体执行代码,执行完所有判断for中序列是否存在下一个元素,如果存在则继续进入循环体,依次类推,直到序列中最后一个位置的元素被处理完,循环结束。

    2.2.3 Break跳出循环

    • 跳出break所在的整个循环,结束循环,继续执行循环外的语句。
    • while循环中使用break

    while 条件:

              break  # 整个循环结束

    • while循环嵌套中使用break

    while 条件:

    代码

    while条件:

                  break   # 只结束内层整个循环

    代码

    • for 循环中使用break

    for 变量 in 序列:

    break  #整个循环结束

    • for嵌套循环中使用break

    for 变量in序列:

               代码

    For变量in序列:

    break  #只结束内层整个循环

    代码

    • 总结:break的作用范围值作用与它所在的循环,不影响其他外部循环

    2.2.4 continue跳出本次循环

    • continue跳出本次循环,当次循环中continue后的语句将不会被执行,继续执行下一次循环
    • while循环中使用continue

    while 条件:

    if条件:

    continue  #本次循环结束,后边的代码语句不执行

    代码语句  #不会不执行

    代码语句 #不会不执行

    • for循环中使用continue

    for变量in序列:

    if条件:

    continue  #本次循环结束,后边的代码语句不执行

    代码语句  #不会不执行

    2.3 项目实践

    计算器功能:

    1. 根据用户输入的数字和运算符,自动计算结果
    2. 能够支持大部分运算符的计算
    3. 对程序可能产生的异常,优化处理

    2.4 代码作业

    小美奶茶馆盛大开业了!今天,门店前立出了以下招牌:

    小美奶茶馆售卖宇宙无敌奶茶,奶茶虽好,可不要贪杯哦!每次限尝一种口味:

    1)原味冰奶茶 3元 2)香蕉冰奶茶 5元 3)草莓冰奶茶 5元 4)芒果冰奶茶 7元

    5)珍珠冰奶茶 7元

    请您帮助小美奶茶馆的收银小妹设计一款价格结算系统,要求:

    顾客可输入1-5来选择奶茶口味,输入其他数字则输出:‘Woops!我们只售卖以上五种奶茶哦!新口味敬请期待!’

    顾客可输入购买数量,根据奶茶口味和数量计算总价。

    顾客可输入是否为本馆会员,会员可以享受9折优惠。

    输出顾客购买的详细信息,包括奶茶口味、购买数量、总价。若是会员输出会员价。

    建议大家使用格式化输出。

    字符串、列表、元组、字典

    3.1 字符串

    • 字符串类型变量定义

    S=”hello”或者’hello’

    • 组成字符串的方式

    使用‘+’号将两个字符串连接成一个新的字符串

    使用字符串格式化符号

    • 下标

      

    通过下标获取指定位置的字符:string_name[index]

    • 切片

    语法:string_name[起始:结束:步长]

    • 常用内置方法

    方法

    说明

    find(str[, start,end])

    在字符串中查找制定的字符串是否存在,如果存在则返回第一个子字符串的起始下标,如果不存在则返回-1

    start、end是可选参数,表示查找子字符串的起始和结束范围

    count(str[, start, end])

    在字符串中统计包含的子字符串的个数

    replace(old, new[, count])

    使用新的子字符串替换指定的旧子字符串,返回新的字符串

    count是可选参数,可以指定替换的字符串个数,默认全部替换

    split(sep[, maxsplit])

    按照指定的分隔符分割字符串,返回分割之后所有元素的列表

    maxsplit 是可选参数,指定对几个分隔符进行分割

    startswith(prefix[, start, end])

    判断字符串是否以指定前缀开头,返回值为True或False

    start、end是可选参数,表示查找前缀的起始和结束范围

    endswith(suffix[, start, end])

    判断字符串是否以制度后缀结束,返回值为True或False

    start、end是可选参数,表示查找后缀的起始和结束范围

    upper()

    字符串所有字符大写

    lower()

    字符串所有字符小写

     

    3.2 列表

    • 可以存储相同或者不同类型数据的集合。通常是相同类型。
    • 列表定义

    name_list = ["zhangsan”, “lisi”, “wangwu”]

    • 顺序存储,可通过下标获取内部元素

    name_list[0]

    name_list[1]

    • 内容可变,可通过下标修改元素值

    name_list[0] = “xiaobai”

    • 使用循环遍历列表
    • 嵌套列表
    • 常用内置方法

    方法

    说明

    例子

    添加元素:append()

    insert()

     

    append()列表末尾条件元素

    insert()在列表指定的下标位置添加元素

     

    list.append(element)

    insert(index, element)

    组合列表:

    +

    extend()

     

    +组合两个列表生成新的列表

    extend()向调用它的列表中添加另外一个列表的元素

     

    list1 = list2 + list3

    list1.extend(list2)

    删除元素:

    del

    pop()

    remove()

     

    del删除列表某下标位置的元素

    remove删除某名称的元素

    pop删除列表末尾元素

     

    del list[index]

    list.remove(element)

    list.pop()

    判断元素在列表中是否存在:

    in

    not in

    可作为条件判断中的条件

     

    排序:

    sort()

    列表内元素重排序:

    sort() 升序

    sort(reverse=True)倒序

     

    num_list.sort()

    num_list.sort(reverse=True)

    内容倒置:

    reverse

     

    将列表内容倒置

     

    list.reverse()

    统计元素个数:

    count

     

    统计列表内指定元素个数

    List.count(element)


    3.3 元组

    • 顺序存储相同/不同类型的元素
    • 元组定义,使用()将元素括起来,元素之间用“,”隔开
    • 特性:不可变,不支持添加、修改、删除元素操作
    • 查询:通过下标查询 元组指定位置的元素
    • 空元组定义:none_tuple = ()
    • 只包含一个元素的元组:one_tuple = (“one”,)
    • 循环遍历元组
    • 存储Key-Value键值对类型的数据
    • 字典定义:{key1:value1, key2:value2, …}
    • 查询:根据key查找value
    • 创建空字典:dic = {}
    • 内置方法

    3.4 字典

    方法

    说明

    dic[key] = value

    添加/修改键值对

    del dic[key]

    删除键值对

    len(dic)

    键值对个数

    dic.get(key)

    查找某键(不管是否存在)

    若键存在于字典中,则返回该键对应值

    若键不存在,则返回null

    dic.get(key, default_value)

    若键不存在,则添加键并设置默认值为default_value,并返回default_value

    for key in dic.keys()

    遍历字典所有键

    for value in dic.values()

    遍历字典所有值

    for item in dic.items()

    遍历字典所有键值对,返回元组,即type(item)为元组

    for key,value in dic.items()

    遍历字典所有键值对,返回key和value

    dic.clear()

    清空字典

    3.5 集合set

    • 无序存储不同数据类型不重复元素的序列
    • 集合定义:set = {"value1”, “value2”, “value3”, …}
    • 使set(序列)中对序列中元素去重,同时创建集合

    例如:name_set = set(list)

    • 创建空集合:none_set = set()
    • 使用in和not in判断一个元素在集合中是否存在
    • 内置方法

    方法

    说明

    len(set)

    集合元素个数

    set = set(list)

    set = set(str)

    将list的元素去重,并存储到set中

    将字符串中的字符去重,并存储到set中

    set.add(ele)

    添加元素至集合

    set.update(序列)

    set.update([ele3, ele4], [ele5, ele6])

    添加序列中的元素至集合,并且去重

    set.remove(ele)

    删除集合中的元素

    删除不存在的元素时会报错

    set.discard(ele)

    删除集合中的元素

    删除不存在的元素时不会报错

    set.pop()

    随机删除集合中的某个元素,同时返回被删除的元素

    set.clear()

    清空集合

    交集intersection(&)

    set1 = {1,2,3,4}

    set2 = {2,6,7,8}

    set3 = set1 & set2

    set3 = set1.intersection(set2)

    并集union(|)

    set1 = {1,2,3,4}

    set2 = {2,6,7,8}

    set3 = set1 | set2

    set3 = set.union(set2)

    差集difference(-)

    set1 = {1,2,3,4}

    set2 = {2,6,7,8}

    set3 = set1 - set2

    set3 = set1.difference(set2)

    对称差集(^)

    set1 = {1,2,3,4}

    set2 = {2,6,7,8}

    set3 = set1 ^ set2

     

    函数

    4.1 基本概念

    • 对实现某一功能的封装
    • 函数定义

    def 函数名称(参数):

    函数体代码

    return 返回值

    • 函数调用:函数名(参数)

    带参函数注意:调用函数时传入的参数个数与函数定义参数个数相同;

                              参数顺序要相同

    • 函数参数

    形参:定义函数时设置的参数

    实参:调用函数时传入的参数

    4.2 函数类型

    • 无参无返回值函数
    • 无参有返回值函数
    • 有参无返回值函数
    • 有参有返回值函数

    ***返回多个值时用逗号”,”隔开

     

    4.3 变量

    • 局部变量

    函数内部定义的变量

    不同函数内的局部变量可以定义相同的名字,互不影响

    作用范围:函数体内有效,其他函数不能直接使用

    • 全局变量

    函数外部定义的变量

    作用范围:可以在不同函数中使用

    在函数内使用global关键字实现修改全局变量的值(字典、列表除外,全局变量的字典 / 列表可在任意函数直接修改,不需使用global关键字

    全局变量命名建议以g_开头,如:g_name

    4.4 函数参数

    4.4.1 缺省参数

    • 函数定义带有初始值的形参
    • 函数调用时,缺省参数可传,也可不传
    • 缺省参数一定要位于参数列表的最后
    • 缺省参数数量没有限制
    • 调用带有参数的函数时,通过指定参数名称传入参数的值
    • 可以不按函数定义的参数顺序传入
    • 函数可以接收不定个数的参数传入
    • def function([formal_args, ]*args)函数调用时,传入的不定参数会被封装成元组
    • def function([formal_args, ]**args)函数调用时,如果传入key=value形式的不定长参数,会被封装成字典

    4.4.2 命名参数

    4.4.3 不定长参数

      

    4.4.4 拆包

    • 对于定义了不定长参数的函数,在函数调用时需要把已定义好的元组或者列表传入到函数中,需要使用拆包方法

      

    4.5 递归函数及应用

    • 函数调用自身
    • 注意:递归过程中要有 用于结束递归的判断

     

    4.6 匿名函数及应用

    • 用lambda关键字创建匿名函数
    • 定义:lambda [参数列表]:表达式
    • 匿名函数可以作为参数被传入其他函数

     

     

    文件操作

    5.1 日期和时间

    5.1.1 time模块

    • time()函数获取当前时间戳
    • localtime([seconds])格式化时间戳为本地时间,返回时间元组

    字段

    属性

    tm_year

    2018

    tm_mon

    1到12

    tm_mday

    1到31

    tm_hour

    0到23

    tm_min

    0到59

    tm_sec

    0到61(60或61是润秒)

    一周的第几日

    tm_wday

    0到6(0是周一)

    一年的第几日

    tm_yday

    1到366,一年中的第几天

    夏令时

    tm_isdst

    是否为夏令时,值为1时是夏令时,值为0 时不是夏令时

     

     

    • time.strftime(format[, time_tuple])格式化日期函数

    格式化符号

    说明

    %y

    两位数的年份表示(00-99)

    %Y

    四位数的年份表示(000-9999)

    %m

    月份(01-12)

    %d

    月份中的一天(0-31)

    %H

    24小时制小时数(0-23)

    %I

    12小时制小时数(01-12)

    %M

    分钟数(00=59)

    %s

    秒(00-59)

    %a

    本地简化星期名称

    %A

    本地完整星期名称

    %b

    本地简化的月份名称

    %B

    本地完整的月份名称

    %c

    本地相应的日期表示和时间表示

    %j

    年内的一天(001-366)

    %p

    本地A.M.或者P.M.的等价符

    %U

    一年中的星期数(00-53)星期天为星期的开始

    %w

    星期(0-6),星期天为星期的开始

    %W

    一年中的星期数(00-53)星期一为星期的开始

    %x

    本地相应的日期表示

    %X

    本地相应的时间表示

    %Z

    当前时区的名称

     

    • time.strptime(string, format)将日期时间字符串转换为时间元
    • time.mktime(time_tuple)将时间元组转换为时间戳

     

    • time.sleep(seconds)程序睡眠等待几秒钟

    5.1.2 datetime模块

    • datetime.datetime.now()获取当前日期和时间
    • strftime(format)日期时间格式化

     

    • datetime.datetime.fromtimestamp(timestamp)将时间戳转换为日期时间

     

    • datetime.timedelta(时间间隔)返回一个时间间隔对象,通过时间间隔可以对时间进行加减法得到新的时间

     

    5.2 文件与文件夹操作

    5.2.1 文件操作

    open(文件路径,访问模式,encoding=编码格式)

    r:只读模式

    w:只写模式

    a:追加模式

    打开一个已存在的文件,或者创建新的文件

    r模式打开不存在的文件会报错

    w模式代开不存在的文件会创建新的文件

    close()

    关闭已打开的文件

    write(data)

    向文件中写入字符串

    read()

    读取文件全部内容

    readlines()

    读取文件全部内容,返回一个列表,每行数据是列表中的一个元素

    readline()

    按行读取文件数据

    writelines(字符串序列)

    将一个字符串序列(如字符串列表等)的元素写入到文件中

    os.rename(oldname, newname)

    文件重命名

    os.remove(filepath)

    删除文件

    with open(文件路径,访问模式) as f:

            f.write(“hello python”)

    自动调用close方法


    read和readlines一次性读取,并将内容保存在内存中

     

    readline逐行读取

     

    5.2.2 文件夹操作

    os.mkdir(path)

    创建文件夹

    os.getcwd()

    获取程序运行的当前目录

    os.listdir(path)

    获取指定目录下的文件列表

    os.rmdir(path)

    删除文件夹

    shutil.rmtree(path)

    删除非空文件夹

    os.chdir(path)

    切换目录


     

    5.3 JSON文件、CSV文件操作

    5.3.1 JSON文件

    • 引入json模块:import  json
    • dumps(python_data):将Python数据转为JSON编码的字符串
    • loads(json_data):将json编码的字符串转换为python的数据结构
    • dump(python_data, file):将python数据转换为JSON编码的字符串,并写入文件
    • load(json_file):将JSON数据文件中读取数据,并将json编码的字符串转换为python的数据结构
    • python数据类型与JSON类型对比

     

     

    5.3.2 CSV格式文件

    • csv格式文件默认以逗号分隔
    • 引入csv模块:import_csv
    • writerow([row_data])一次写入一行数据
    • writerows([[rowdata], [rowdata], …])一次写入多行数据

     

    • reader(file_object)根据打开的文件对象返回一个可迭代的reader对象

    可以使用next(reader)遍历reader对象,获取每一行数据

     

    • DictWriter和DictReader对象处理Python字典类型的数据

     

     

     

     

     

  • 相关阅读:
    第一节 2字符串 简单
    第一节 1C#基础 简单
    终于找到wamp修改密码方式了!
    js通过class name获得元素
    JavaScript中arguments
    对技术的态度
    C++的坑真的多吗?
    js 常用正则
    js利用Array.splice实现Array的insert/remove
    c# asp.net webform web页面打印,可以控制需要打印和不需要打印的位置
  • 原文地址:https://www.cnblogs.com/wendyw/p/10131169.html
Copyright © 2011-2022 走看看