Bootstrap

python笔记

本篇用于记录学习的python知识,便于以后速查,不定期更新(●'◡'●)

=====================================================================

第一章 哈喽派森

1,python环境的安装

这里windows为例,苹果和linux见视频第一阶段-第一章-04-【拓展】-Python环境安装(MacOS)_哔哩哔哩_bilibili

官网下载: Welcome to Python.org

安装要点:(部分简单步骤省略)

验证安装是否成功:

cmd输入命令:python,能看到版本就是成功

2,hello world

print("Hello world!!!")

↑引号和括号是英文

2.5,可能出现的问题

1

2

3

3,解释器简介

进入解释器环境:

python

退出解释器:

exit()

点py文件↓

4,PyCharm开发工具的安装

下载地址:JetBrains: Essential tools for software developers and teamsicon-default.png?t=N7T8https://www.jetbrains.com/

下社区版,不要钱

记得改一下安装路径

打开后,接受协议,不发送

新建工程

记得勾选一下那个     口creat a welcome script,不然没有main.py文件,格式会不一样

新建之后可能会弹窗问你下不下载,选择always下载

新建文件

右键工程>new>python file>>命名>回车

运行

1,右键>run

2,顶部菜单栏直接按小三角

5,Pycharm的基础使用

修改主题颜色:

千万别看都不看点错了,不小心把菜单栏点没了你就偷着乐去吧

修改字体

修改字体快捷键设置

设置搜increase

这个是增大字体,缩小就搜decrease

插件安装

在这里搜你需要的插件,汉化搜chinses,翻译搜translation,

搜不到的去这搜,PyCharm官方Marketplace链接:JetBrains Marketplace

这里给出汉化直达链接

Chinese (Simplified) Language Pack / 中文语言包 Plugin for JetBrains IDEs | JetBrains Marketplace

如果你当前已经打开pycharm,他会直接匹配你的版本,没打开就自己找对应的版本,然后install就欧克了

常用快捷键

  • ctrl+ alt +s:打开软件设置
  • ctrl+ d∶复制当前行代码
  • shift + alt +上\下:将当前行代码上移或下移
  • crtl + shift + f10∶运行当前代码文件
  • shift + f6∶重命名文件
  • ctrl+a:全选
  • ctrl + c\v\x︰复制、粘贴、剪切
  • ctrl+ f:搜索
  • 选中多行+Tab/shift+Tab:多行同时缩进
  • ctrl+ /:快速注释

第二章 python基础

1,字面量

含义:代码中,被写下来的固定的值

派森中,字符串需要用引号包围起来,被引号包围起来的都是字符串

print(666)
print(13.14)
print("你好")

2,注释

注释的作用:注释是代码中的解释型语句,用来对代码内容进行注解

注释不是代码,不会被程序执行

单行注释,一般用于解释 单行代码或一小段代码

# 我是单行注释,代码规范一般建议井号后面一个空格
print()

多行注释,一般用于解释-整个python代码文件,类,方法,一般写在开头

"""
    我是多行注释
    可以换行
    多行注释一般用于解释-整个python代码文件,类,方法

"""
print("111")

3,变量

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

简单来说就是程序运行时,记录数据用得

格式:

# 定义一个变量,用来记录钱包余额
money = 50
#输出变量
print("钱包还有:",money)

# 买了一个冰激凌,花费10元
money = moner - 10
print("买了一个冰激凌,钱包还有:",money)

特征:变量得值可以改变

★★print语句输出多个内容中间用(英文)逗号隔开

4,数据类型

入门常用:

# 查看类型信息
type()

也可以查看变量中存储得数据类型

★★在派森中,变量是没有类型的

所以type(变量)查看的也是变量中存储得数据类型

5,数据类型转换

用途:

  • 从文件中读取的数字,默认是字符串,我们需要转换成数字类型
  • 后续学习的input()语句,默认结果是字符串,若需要数字也需要转换
  • 将数字转换成字符串用以写出到外部系统

★★这三个语句都是带有返回值的,可以直接输出也可以用变量接

★★万物皆可转字符串,反之不行,整数转浮点数会加小数部分,反之会丢失精度(丢失小数部分)

6,标识符

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

规则:

  1. 内容限定:只允许出现,英文,中文(不推荐),数字(不可以用在开头 ),下划线,这四种元素
  2. 大小写敏感:能区分大小写
  3. 不可使用关键字:

命名规范:

  1. 变量名:见名知意(明了,简洁),下划线命名法(多个单词用下划线隔开),英文字母全小写
  2. 类名:
  3. 方法名:

7,运算符

算数(数学)运算符:

赋值运算符:

复合赋值运算符:

8,字符串扩展 

字符串的三种定义方式

1,单引号定义法:name = ' 你好 '

2,双引号定义法:name = "你好"

3,三引号定义法:name = """你好"""

★★三引号定义法的写法和多行注释一样,同样支持换行,用变量接收就是字符串,不接就可以作为多行注释使用

★★怎么定义引号自身:

  • 单引号定义法,可以内含双引号,
  • 双引号定义发,可以内含单引号,
  • 可以使用转义字符反斜杠\来将引号解除效用,变成普通字符串
name = "\"你好\"\'"


字符串拼接

用加号+拼接 ,一般用于字面量与变量之间,或者变量与变量之间

name = "张三"
age = "11"
print("你好," + "我的名字叫"+ name + ",我今年" + age + "岁。")

但是字符串不能直接拼接 整数或浮点数

# 错误示例
age = 11
print("我的年龄是" + age)


字符串格式化(多个拼接)

目的:既方便拼接,又支持拼接其他类型

name = "张三"
message = "你好,我亲爱的 %s" % name
print(message)

%s表示:

  • %表示:我要占位
  • s表示:将变量变成字符串放入占位的地方
  • 综合意思:我先占个位置,等下有个变量过来,我把它变成字符串放到占位的地方

多个拼接:

shengao = 180
tizhong = 60
message = "我的身高是%s,我的体重是%s。" % (shengao,tizhong)
print(message)

格式要求:多个变量占位,变量要用括号括起来,并且按照占位顺序填入

常用占位符👇:

#混合使用占位符示例

name = "张三"
age = 18
weight = 69.9
message = "我的名字叫%s,我的年龄是%d岁,我的体重是%fKG" % (name,age,weight)
print(message)


格式化的精度控制

我们可以使用辅助符号"m.n"来控制数据的宽度和精度

  • m 控制宽度,要求是数字(很少使用),若设置的宽度小于数字自身,则不生效
  • .n 控制小数点精度,要求是数字,会进行小数的四舍五入

例如:


字符串格式化方式2

语法:f"内容{变量}"

name = "张三"
age = 18
weight = 69.9
print(f"我的名字叫{name},我的年龄是{age}岁,我的体重是{weight}")

不理会类型,不做精度控制,原样输出


对表达式进行格式化

表达式 定义:一条 具有明确执行结果 的 代码语句

例如👇:

可以直接格式化表达式👇:

★★表达式拼接等同于变量拼接的方法

9,数据输入输出

  • 数据输出:print()
  • 数据输入:input()

使用input()语句可以从键盘获取输入,使用一个变量接收(存储)即可

★★input可以自带文字提示

name = input("请告诉我你是谁")
print("吆西,你是%s" % name)

★★input()输入的都是字符串类型,可以用数据类型转换变成其他类型

★★print()默认是输出换行的,想要不换行↓

print("你好",end='')
print("你好",end='')

★★制表符:\t,效果等同于键盘上按下tap键

第三章 判断语句

1,布尔类型和比较运算符

布尔类型

布尔类型的字面量:

  • True 表示真(是,肯定)
  • False 表示假(否,否定)

定义变量存储布尔类型数据 :

        变量名称 = 布尔类型字面量

布尔类型可以自定义,也可以通过计算得来

比较运算符

2,if语句的基本格式

条件成立要做的事可以写很多行↓例子

★★注意:

  • 判断语句的结果,必须是布尔类型
  • 归属于if判断的代码语句块,需在前方填充4个空格缩进
  •  不要忘记冒号

3,if else 组合判断语句

★★注意:

  • else后面不需要判断条件,但是别忘记冒号
  • else代码块,也需要四个空格缩进

4,if、elif、else语句的组合使用

简洁写法↓条件中可以直接写input语句,用一个输入一个

★★注意:

  • elif可以写多个
  • 判断是互斥且有顺序的,前面的if满足了,后面就不判断了
  • else也可以不写,效果等同于三个独立的if判断
  • 四个空格缩进

5,判断语句的嵌套

关键点:空格缩进控制层级,if、elif、else都可以自由组合

6,判断语句综合案例

# 生成一个随机数
import random
num = random.randint(1,10)

#通过if判断语句进行猜数字
a = int(input("请输入你猜的数字:"))
if a==num:
    print("你猜对了")
else:
    if a>num:
        print("你猜大了,还有两次机会")
    else:
        print("你猜小了,还有两次机会")

    a = int(input("请输入你猜的数字:"))
    if a==num:
        print("你猜对了")
    else:
        if a>num:
            print("你猜大了,还有一次机会")
        else:
            print("你猜小了,还有一次机会")

            a = int(input("请输入你猜的数字:"))
            if a == num:
                print("你猜对了")
            else:
                if a > num:
                    print("你猜大了,你寄了")
                else:
                    print("你猜小了,你寄了")

第四章 循环语句

1,while循环的基础语法

# 输出100次你好
i=0
while i<100:
    print("你好")
    i+=1

★★注意:

  • while的条件需要得到布尔类型,true表示继续循环,false表示结束循环
  • 需要设置循环终止的条件,不设置就是无限循环
  • 空格缩进和if判断一样,

2,while循环案例(猜数字)

import random
num = random.randint(1,100)

flag = True
count = 0

while flag:
    a=int(input("请输入你猜测的数字:"))
    count += 1
    if a==num:
        print("恭喜你猜对了")
        flag = False
    else:
        if a>num:
            print("你猜的大了")
        else:
            print("你猜的小了")

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

3,while循环的嵌套

基于空格缩进决定层级关系

4,while循环案例(九九乘法表)

知识补充,详见第二章第九点,print不换行和制表符

#九九乘法表
a=1
while a<=9:
    b=1
    while b<=a:
        print(f"{b}*{a}={a*b}\t",end='')
        b+=1
    print("")
    a+=1

5,for循环的基础语法

可以看出,for循环时将字符串的内容依次取出,所以也叫遍历循环

和while循环不同,for循环无法定义循环条件,只能被动取出数据处理

理论上,for循环无法构建无限循环(被处理的数据集不可能无限大)

6,for循环案例(数数有几个a)

7,range语句

8,for循环临时变量作用域

9,for循环的嵌套使用

  • 空格缩进
  • for循环和while循环可以相互嵌套使用

10,for循环案例(打印九九乘法表)

#九九乘法表
for a in range(10):
    for b in range(1,a+1):
        print(f"{b}*{a}={a*b}\t",end='')
    print("")

11,循环中断:break和continue

continue

continue关键字用于:中断本次循环,直接进入下一次循环

continue可用于:for循环和while循环,效果一致

continue关键字只可以控制:他所在的循环临时中断

break

break关键字作用于:直接结束循环

break可以作用于:for循环和while循环,效果一致

break关键字同样只可以控制:他所在的循环结束

12,综合案例

#发工资
import random
money = 10000
for a in range(1,21):
    num = random.randint(1,10)
    if money == 0:
        break
    if num>=5:
        money-=1000
        print(f"员工{a},绩效{num},发工资1000元,账户余额还剩{money}。")
    else:
        print(f"员工{a},绩效{num},低于5分,不发工资。")
print("工资发完啦")

#先考虑不发工资跳过的话,就加个continue,我这种写法就不用加

第五章 函数

1,函数初识

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

作用:

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

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

2,函数的基础定义语法

函数的定义:

函数的调用:

注意:

  • 参数如果不需要,可以省略
  • 返回值如果不需要,可以省略
  • 函数必须先定义后调用

3,函数的传入参数

传入参数功能:在函数进行计算的时候,接受外部(调用时)提供的数据

4,函数的返回值定义语法

返回值:函数在执行完成后,返回给调用者的结果

★★遇到return,函数就结束了

5,None类型

None是类型为"NoneType"的字面量,用于表示空的、无意义的

函数如何返回None:

  • 不使用return语句,即返回None
  • 主动return None

6,函数的说明文档

 函数是纯代码语言,想要理解含义就要一行行阅读理解,效率比较低

我们可以给函数添加说明文档,辅助理解函数的作用

通过多行注释的形式,对函数进行解释说明,

内容应写在函数体之前

在Pycharm编写代码时,鼠标悬停就可以查看调用函数的说明文档

7,函数的嵌套调用

函数A中执行到调用哈函数B的语句,会将B全部执行完之后,再继续执行A

8,变量再函数中的作用域

变量的作用域指的是,变量的作用范围(变量在哪里可用,在哪里不可用)

主要分为:局部变量全局变量

局部变量是定义在函数体内部的变量,即只在函数体内部生效,在外部访问就会出错

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

全局变量指的是在函数体内、外都能生效的变量

global关键字:设置内部定义的变量为全局变量

9,综合案例(ATM)

#ATM案例
money = 5000000
name = None

def chaxun (show_header):
    """
    查询余额
    """
    if show_header:
        print("========查询余额=====")
    print(f"{name}你好,你的当前余额为:{money}元")
    menu()

def cunkuan ():
    print("========存款=====")
    a = int(input(f"{name}你好,请输入你想存入钱的数目:"))
    global money
    money = money + a
    print(f"{name}你好,你成功存入{a}元")
    chaxun(False)
    menu()

def qukuan ():
    print("========取款=====")
    a = int(input(f"{name}你好,请输入你想取出钱的数目:"))
    global money
    money -= a
    print(f"{name}你好,你成功取出{a}元,你的当前余额为:{money}元")
    menu()

def menu ():
    """
    主菜单
    """
    print("========主菜单=====")
    print(f"{name}你好,欢迎来到ATM")
    print("1,\t查询余额")
    print("2,\t存款")
    print("3,\t取款")
    print("4,\t退出")
    a = int(input("请输入你想操作的数字序号:"))
    if a==1:
        chaxun()
    elif a==2:
        cunkuan ()
    elif a==3:
        qukuan()
    else:
        print("操作错误,祝您生活愉快,再见")

name = input("请输入你的名字")
menu()

自己写的能跑,但是可能不够好,下面是标准答案

"""
ATM案例
"""

# 定义全局变量
money = 5000000
name = None
#要求客户输入姓名
name = input("请输入您的姓名")
#定义查询函数
def query(show_header):
    if show_header:
        print("====查询余额====")
    print(f"{name}您好,您的余额剩余:{money}元")
#定义存款函数
def saving(num):
    global money
    money += num
    print("====存款====")
    print(f"{name}您好,您存款{money}元成功")
    query(False)
#定义取款函数
def get_money(num):
    global money
    money -= num
    print("====取款====")
    print(f"{name}您好,您取款{money}元成功")
    query(False)
#定义主菜单函数
def main():
    print("====主菜单====")
    print(f"{name}您好,欢迎来到ATM")
    print("查询余额\t\t【输入1】")
    print("存款\t\t【输入2】")
    print("取款\t\t【输入3】")
    print("退出\t\t【输入4】")
    return input("请输入你的操作:")
#设置无限循环,确保程序不退出
while True:
    keyboard_input = main()
    if keyboard_input == "1":
        query(True)
        continue
    elif keyboard_input == "2":
        num = int(input("请输入您想存入的钱:"))
        saving(num)
        continue
    elif keyboard_input == "3":
        num = int(input("请输入您想取出的钱:"))
        saving(num)
        continue
    else:
        print("程序退出")
        break

第六章

1,数据容器入门

2,数据容器:列表

2.1,列表的定义:

★★注意:列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套 

2.2,列表的下标索引

定义:列表的每一个元素,都有编号,称之为下标索引

正向:

反向:

嵌套:[0][1]

注意:超出下标索引的范围,无法取出元素,会报错

2.3,列表的常用操作(方法)

1,列表的操作方法
  • 插入元素
  • 删除元素
  • 清空列表
  • 修改元素
  • 统计元素个数
2,方法的概念

3,查找某元素的下标

功能:查找指定元素在列表的下标,如果找不到,报错ValueError

语法:列表名.index(元素名)

index就是列表对象(变量)内置的方法(函数)

namelist = ["张三","李四","王五"]
a = namelist.index("张三")
print(f"张三在列表中的下标索引值是:{a}")
4,列表的修改功能(方法)

4.1修改指定位置(索引)的元素值

语法:列表[下标]=值

可以使用如上语法,直接对指定下标(正向反向下标均可)的值进行:重新赋值(修改)

4.2插入元素

语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

4.3追加元素

语法:列表.append(元素),将指定元素,追加到列表的尾部

4.4追加元素方法2

语法:列表.extend(其他数据容器),将其他数据容器的内容取出,依次追加到列表尾部

4.5删除元素

语法1:del列表[下标]

语法2:列表.pop[下标]

4.6删除某元素在列表中的第一个匹配项

语法:列表.remove(元素)

4.7清空列表内容

语法:列表.clear()

4.8统计某元素在列表中的数量

语法:列表.count(元素)

4.9统计列表内有多少元素

语法:len.(列表)

4.10,列表的方法总结(速查)★★★

列表的特点:

  • 可容纳多个元素(上限为2**63-1、922337203685477580个)
  • 可容纳不同类型的元素(混装)
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增删)

2.4,列表练习案例

#列表案例
age_list = [21,25,21,23,22,20]
age_list.append(31)
age_list.extend([29,33,30])
a = age_list[0]
b = age_list[-1]
c = age_list.index(31)
print(c)

3,list(列表)的遍历

将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代

3.1,while循环 

3.2,for循环

3.3,对比

3.4,案例:

num_list = [0,1,2,3,4,5,6,7,8,9,10]
list1 = []
list2 = []
a = 0
while a<len(num_list):
    a = num_list[a]
    if a%2==0:
        list1.append(a)
    a += 1
print(list1)

for a in num_list:
    if a%2==0:
        list2.append(a)
print(list2)

4,数据容器:tuple(元组)

4.1,定义

元组同列表一样,都可以封装多个、不同类型的元素,但是最大的不同在于,元组一旦定义完成,就不可修改

4.2,语法

定义元组使用小括号,且使用逗号隔开各个数据,数据可以是不同的数据类型

 

4.3,特点

4.4,相关操作★★★

遍历循环while,for同列表

修改元组的元素会直接报错

4.5,案例

#元组案例

t1 = ("周杰伦",11,["football","music"])
a = t1.index(11)
print(f"年龄所在的下标为{a}")
b = t1[1]
print(f"学生姓名为:{b}")
del t1[2][0]
t1[2].append("coding")
print(t1)

5,数据容器:str(字符串)

5.1,下标

5.2,常用操作(速查)★★★

5.3,特点

5.4,案例

6,数据容器的切片

6.1,什么是序列

序列是指:内容连续,、有序,可使用下标索引的一类数据容器

列表、元组、字符串,均可视为序列

6.2,序列的常用操作--切片

切片:从一个序列中,取出一个子序列

6.3,案例

7,数据容器:set(集合)

7.1,基本语法

7.2,常用操作

6.3,常用操作(速查)★★★

6.4,集合的特点

6.5,练习

8,数据容器:dict(字典)

9,数据容器的通用操作

10,综合案例

======未完待续=========

========================================================

未完待续(●'◡'●)。。。

;