【百度领航团】小白零基础python学习笔记

计算机是什么

在现实生活中,越来越无法离开计算机了
    电脑、笔记本、手机、游戏机、汽车导航、智能电视 。。。
计算机就是一个用来计算的机器!
目前来讲,计算机只能根据人类的指令来完成各种操作,人让它干嘛他就得干嘛
所以我们学习计算机,就是学习如何控制计算机!

计算机的组成

在这里插入图片描述

计算机的基本组成:控制器,运算器,存储器,输入设备,输出设备
计算机由两部分组成:硬件 和 软件
硬件包含:键盘、鼠标、显示器、CPU、主板、内存、硬盘 。。。
    硬件是看的见摸得着的
软件包含:系统软件(windows、macOS、Linux)和应用软件(office 、QQ、绝地求生)
    软件是看的见摸不着的,软件负责控制计算机中的硬件    

在这里插入图片描述

计算机的使用方式

我们必须要通过软件来对计算机完成各种操作,
    但是注意,软件中并不是所有的功能都会对用户开放,
        用户需要调用软件提供的接口(Interface 交互界面)来操作计算机

用户界面分成两种:TUI(文本交互界面)和 GUI(图形化交互界面)

windows的命令行

命令行就是文本交互界面,通过命令行可以使用一个一个的指令来操作计算机
任何的计算机的操作系统中都包含有命令行(windows、linux、macOS)
命令行有多个不同的名字:
    命令行、命令行窗口、DOS窗口、命令提示符、CMD窗口、Shell、终端、Terminal


1.如何进入到命令行
    win键 + R 出现运行窗口,输入cmd,然后回车
2.命令行的结构
    - 版本及版权声明(一般没有什么用)
        Microsoft Windows [版本 10.0.16299.431]
        (c) 2017 Microsoft Corporation。保留所有权利。

    - 命令提示符
        C:\Users\lilichao>  
            C:  
                - 当前所在的磁盘根目录
                - 可以通过 x: 来切换盘符(x表示你的盘符)

            \Users\lilichao
                - 所在磁盘的路径,当前所在的文件夹
                - cd 来切换目录
            >
                - 命令提示符,在大于号后边可以直接输入指令



3.常用的dos命令
    dir 查看当前目录下的所有文件(夹)
    cd 进入到指定的目录
        . 表示当前目录
        .. 表示上一级目录
    md 创建一个目录
    rd 删除一个目录    
    del 删除一个文件
    cls 清除屏幕

    命令的语法
        命令 [参数] [选项]



4.小技巧
    - 方向键上下,查看命令的历史记录
    - tab键自动补全命令        

环境变量(environment variable)

环境变量指的就是操作系统当中的一些变量。
可以通过修改环境变量,来对计算机进行配置(主要是来配置一些路径的)
1.查看环境变量
    > 右键 计算机(此电脑),选择属性
    > 系统界面左侧选择 高级系统设置
    > 选择环境变量
    环境变量界面分成了两个部分,上边是用户环境变量,下边是系统环境变量
        建议只修改用户的环境变量,不要修改系统的环境变量

2.添加环境变量
    > 通过新建按钮添加环境变量
    > 一个环境变量可以由多个值,值与值之间使用;(英文)隔开

3.修改环境变量
    > 通过编辑按钮来修改环境变量

4.删除环境变量
    > 通过删除按钮来删除环境变量

path环境变量

path环境变量中保存的是一个一个的路径。
当我们在命令行中输入一个命令(或访问一个文件时),
    系统会首先在当前目录下寻找,如果找到了则直接执行或打开
    如果没有找到,则会依次去path环境变量的路径中去寻找,直到找到为止
    如果path环境变量中的路径都没有找到,则报错
        'xxx' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我们可以将一些经常需要访问到的文件会程序的路径,添加到path环境变量中,
    这样我们就可以在任意的位置访问到这些文件了

注意事项:
    1.如果环境变量中没有path,可以手动添加
    2.path环境变量不区分大小写 PATH Path path   
    3.修改完环境变量必须重新启动命令行窗口
    4.多个路径之间使用;隔开

进制

- 十进制(最常用的进制)
    - 十进制就是满十进一的进制
    - 十进制当中一共有10个数字
        0 1 2 3 4 5 6 7 8 9
    - 十进制如何计数
        0 1 2 3 4 5 6 7 8 9 10 11 12 。。。 19 20 。。。29 30

- 二进制(计算机底层使用的进制)
    - 满二进一
    - 二进制中一共有2个数字
        0 1
    - 二进制如何计数
        0 1 10 11 100 101 110 111 1000
    - 所有的数据在计算机底层都是以二进制的形式保存的,计算机只认二进制
    - 可以将内存想象为一个一个的小格子,小格子中可以存储一个0或一个1
    - 内存中的每一个小格子,我们称为1bit(位)    
        bit是计算机中的最小的单位
        byte是我们最小的可操作的单位
        8bit = 1byte(字节)    
        1024byte = 1kb(千字节)
        1024kb = 1mb(兆字节)
        1024mb = 1gb(吉字节)
        1024gb = 1tb(太字节)
        。。。


- 八进制(一般不用)
    - 满八进一
    - 八进制中一共有8个数字
        0 1 2 3 4 5 6 7
    - 八进制如何计数
        0 1 2 3 4 5 6 7 10 11 。。。 17 20 。。。27 30

- 十六进制
    - 满十六进一
    - 十六进制中一共有16个数字
        由于十六进制是满16才进位,
            所以十六进制中引入了a b c d e f来表示 10 11 12 13 14 15   
        0 1 2 3 4 5 6 7 8 9 a b c d e f
    - 十六进制如何计数    
        0 1 2 3 4 5 6 7 8 9 a b c d e f 10 11 12 。。。 1a 1b 1c 1d 1e 1f
        20 21 22 。。。 2a 2b 2c 2d 2e 2f 30    
    - 我们在查看二进制数据时,一般会以十六进制的形式显示

文本文件和字符集

- 文本分成两种,一种叫做纯文本,还有一种叫做富文本
- 纯文本中只能保存单一的文本内容,无法保存内容无关的东西(字体、颜色、图片。。。)
- 富文本中可以保存文本以外的内容(word文档)
- 在开发时,编写程序使用的全都是纯文本!
- 纯文本在计算机底层也会转换为二进制保存,
    将字符转换为二进制码的过程,我们称为编码
    将二进制码转换为字符的过程,我们称为解码
    编码和解码时所采用的规则,我们称为字符集
- 常见的字符集:
    ASCII
        - 美国人编码,使用7位来对美国常用的字符进行编码
        - 包含128个字符
    ISO-8859-1
        - 欧洲的编码,使用8位
        - 包含256个字符
    GB2312
    GBK
        国标码,中国的编码
    Unicode   
        万国码,包含世界上所有的语言和符号,编写程序时一般都会使用Unicode编码
        Unicode编码有多种实现,UTF-8 UTF-16 UTF-32
        最常用的就是UTF-8
- 乱码
    编写程序时,如果发现程序代码出现乱码的情况,就要马上去检查字符集是否正确        

Sublime Text 3

- 纯文本编辑器
- Package Control(Sublime的包管理器)
    - Sublime Text3中的插件,通过该插件可以向Sublime中安装新的包

什么是计算机语言

计算机就是一台用来计算机的机器,人让计算机干什么计算机就得干什么!
需要通过计算机的语言来控制计算机(编程语言)!
计算机语言其实和人类的语言没有本质的区别,不同点就是交流的主体不同!
计算机语言发展经历了三个阶段:
    机器语言
        - 机器语言通过二进制编码来编写程序
        - 执行效率好,编写起来太麻烦

    符号语言(汇编)
        - 使用符号来代替机器码
        - 编写程序时,不需要使用二进制,而是直接编写符号
        - 编写完成后,需要将符号转换为机器码,然后再由计算机执行
            符号转换为机器码的过程称为汇编
        - 将机器码转换为符号的过程,称为反汇编  
        - 汇编语言一般只适用于某些硬件,兼容性比较差  

    高级语言
        - 高级语言的语法基本和现在英语语法类似,并且和硬件的关系没有那么紧密了
        - 也就是说我们通过高级语言开发程序可以在不同的硬件系统中执行
        - 并且高级语言学习起来也更加的容易,现在我们知道的语言基本都是高级语言
        - C、C++、C#、Java、JavaScript、Python 。。。

编译型语言和解释型语言

计算机只能识别二进制编码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码,
    也就是像 print('hello') 必需要转换为类似 1010101 这样的机器码   

根据转换时机的不同,语言分成了两大类:
    编译型语言
        - C语言
        - 编译型语言,会在代码执行前将代码编译为机器码,然后将机器码交由计算机执行
        - a(源码) --编译--> b(编译后的机器码)
        - 特点:
            执行速度特别快
            跨平台性比较差

    解释型语言
        - Python JS Java
        - 解释型语言,不会在执行前对代码进行编译,而是在执行的同时一边执行一边编译
        - a(源码)--解释器--> 解释执行  
        - 特点:
            执行速度比较慢
            跨平台性比较好   

Python的介绍

Python是解释型语言

Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。

Life is short you need Python (人生苦短,我用Python)    

Python的用途:
    WEB应用
        Facebook 豆瓣 。。。
    爬虫程序
    科学计算
    自动化运维
    大数据(数据清洗)
    云计算
    桌面软件/游戏
    人工智能
    。。。     

Python开发环境搭建

开发环境搭建就是安装Python的解释器
Python的解释器分类:
    CPython(官方)
        用c语言编写的Python解释器
    PyPy
        用Python语言编写的Python解释器
    IronPython
        用.net编写的Python解释器
    Jython
        用Java编写的Python解释器

步骤:
    1.下载安装包 python-3.6.5.exe
        - 3.x
        - 2.x    
    2.安装(傻瓜式安装)
    3.打开命令行窗口,输入python 出现如下内容
        Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
        Type "help", "copyright", "credits" or "license" for more information.
        >>>    

Python的交互界面

当我们通过命令行来输入Python,所进入到的界面就是Python的交互界面
结构:
    版本和版权声明:
    Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
    Type "help", "copyright", "credits" or "license" for more information.

    命令提示符:
    >>>

    在命令提示符后可以直接输入Python的指令!输入完的指令将会被Python的解释器立即执行!

    安装Python的同时,会自动安装一个Python的开发工具IDLE,通过IDLE也可以进入到交互模式
    但是不同的是,在IDLE中可以通过TAB键来查看语句的提示。
    IDLE实际上就是一个交互界面,但是他可以有一些简单的提示,并且可以将代码保存

交互模式只能你输入一行代码,它就是执行一行,所以他并不适用于我们日常的开发!
    仅可以用来做一些日常的简单的测试!   

我们一般会将Python代码编写到一个py文件中,然后通过python指令来执行文件中的代码

Python和Sublime的整合

1.在Sublime中执行Python代码,ctrl + b 自动在Sublime内置的控制台中执行  
    这种执行方式,在某些版本的Sublime中对中文支持不好,并且不能使用input()函数

2.使用SublimeREPL来运行python代码    
    安装完成,设置快捷键,希望按f5则自动执行当前的Python代码
    { "keys": ["f5"], "caption": "SublimeREPL:Python","command": "run_existing_window_command", "args":{"id": "repl_python_run","file": "config/Python/Main.sublime-menu"}},

几个概念

1.表达式
    表达式就是一个类似于数学公式的东西
    比如:10 + 5   8 - 4
    表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
    如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出

2.语句
    在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值。。。
    比如:
        print()
        input()
        a = 10
    语句的执行一般会对程序产生一定的影响
    在交互模式中不一定会输出语句的执行结果  

3.程序(program)
    程序就是由一条一条的语句和一条一条的表达式构成的。

4.函数(function)
    函数就是一种语句,函数专门用来完成特定的功能
    函数长的形如:xxx()          
    函数的分类:
        内置函数
            - 由Python解释器提供的函数,可以在Python中直接使用
        自定义函数   
            - 由程序员自主的创建的函数
    当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
    函数的两个要素:
        参数
            - ()中的内容就是函数的参数
            - 函数中可以没有参数,也可以有多个参数,多个参数之间使用,隔开
        返回值        
            - 返回值是函数的返回结果,不是所有的函数都有返回值

基本语法

1.在Python中严格区分大小写
2.Python中的每一行就是一条语句,每条语句以换行结束
3.Python中每一行语句不要过长(规范中建议每行不要超过80个字符)
    "rulers":[80],
4.一条语句可以分多行编写,多行编写时语句后边以\结尾  
5.Python是缩进严格的语言,所以在Python中不要随便写缩进  
6.在Python中使用#来表示注释,#后的内容都属于注释,注释的内容将会被解释器所忽略
    我们可以通过注释来对程序进行解释说明,一定要养成良好的编写注释的习惯
    注释要求简单明了,一般习惯上#后边会跟着一个空格

字面量和变量

字面量就是一个一个的值,比如:1,2,3,4,5,6,‘HELLO’
    字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量

变量(variable)变量可以用来保存字面量,并且变量中保存的字面量是不定的
    变量本身没有任何意思,它会根据不同的字面量表示不同的意思

一般我们在开发时,很少直接使用字面量,都是将字面量保存到变量中,通过变量来引用字面量

变量和标识符

数据类型

数据类型指的就是变量的值得类型,也就是可以为变量赋哪些值
数值
    整型
        布尔值
    浮点型
    复数
字符串
空值

在这里插入图片描述

类型检查

对象(object)

- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学习的数值、字符串、布尔值、None都是对象
- 参考 图1

对象的结构

- 每个对象中都要保存三种数据
    - id(标识)
        > id用来标识对象的唯一性,每一个对象都有唯一的id
        > 对象的id就相当于人的身份证号一样
        > 可以通过id()函数来查看对象的id
        > id是由解析器生成的,在CPython中,id就是对象的内存地址
        > 对象一旦创建,则它的id永远不能再改变

    - type(类型)
        > 类型用来标识当前对象所属的类型
        > 比如:int str float bool 。。。
        > 类型决定了对象有哪些功能
        > 通过type()函数来查看对象的类型
        > Python是一门强类型的语言,对象一旦创建类型便不能修改


    - value(值)
        > 值就是对象中存储的具体的数据
        > 对于有些对象值是可以改变的
        > 对象分成两大类,可变对象 不可变对象
            可变对象的值可以改变
            不可变对象的值不能改变,之前学习的对象都是不可变对象

变量和对象

- 对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
- 变量中存储的不是对象的值,而是对象的id(内存地址),
    当我们使用变量时,实际上就是在通过对象id在查找对象
- 变量中保存的对象,只有在为变量重新赋值时才会改变
- 变量和变量之间是相互独立的,修改一个变量不会影响另一个变量

类型转换

- 所谓的类型转换,将一个类型的对象转换为其他对象
- 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象

运算符(操作符)

- 运算符可以对一个值或多个值进行运算或各种操作
- 比如 + 、-、= 都属于运算符
- 运算符的分类:
    1.算术运算符
    2.赋值运算符
    3.比较运算符(关系运算符)
    4.逻辑运算符
    5.条件运算符(三元运算符)    

小实践理解基本知识:

一、Python编程基础

  1. 输入两个整数,并打印出它们的和
a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')

# 分别把 a、b 转换成整数
int(a)
int(b)

# 计算 a、b 的和,赋值给变量c
c= int(a)+int(b)

# 打印c
print(c)

2.输入两个整数,如果两个整数之和小于100,则输出 ‘小于100’,否则输出 ‘不小于100’

a = input('请输入第一个整数: ')
b = input('请输入第二个整数: ')

# 分别把 a、b 转换成整数
int(a)
int(b)

# 计算 a、b 的和,赋值给变量c
c= int(a)+int(b)

# 判断c是否小于100,按要求输出
if c < 100:
    print('\n小于100\n')
else:
    print('\n不小于100\n')

3.依次输入10组整数,然后求和,并输出

sum_num = 0
for i in range(10):
    # 用input输入数字并转化为整数
    i = input('请输入一个整数: ')
    int(i)
    # sum_num 对输入的数字进行累加
    sum_num=sum_num+int(i)

print(sum_num)

4.选取列表的第2到第5项,并打印(从0开始计数,即取出c d e f)

words = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']

# 选取第2-5项,并打印
a=words[2:6]
print(a)

5.使用列表生成式的方法,根据 list1 生成 list2
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
list2 = [100, 200, 300, 400, 500, 600, 700, 800]

list1 = [1, 2, 3, 4, 5, 6, 7, 8]

# 列表推导式生成list2
list2 = [n*100 for n in list1]

print(list2)

6.把下列字符串按下划线(’_’)划分成若干个片段
string1 = ‘this_is_a_sample’
[‘this’, ‘is’, ‘a’, ‘sample’]

string1 = 'this_is_a_sample'

# 按'_'划分string1
string1.split('_')

7.统计英语6级试题中所有单词的词频,并返回一个如下样式的字典

{‘and’:100,‘abandon’:5}

英语6级试题的文件路径./artical.txt

处理要求
(a) ‘\n’是换行符 需要删除
(b) 标点符号需要处理:[’.’, ‘,’, ‘!’, ‘?’, ‘;’, ‘’’, ‘"’, ‘/’, ‘-’, ‘(’, ‘)’]
© 阿拉伯数字需要处理:[‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,‘0’]
(d) 注意大小写 一些单词由于在句首,首字母大写了。需要把所有的单词转成小写’String’.lower()
(e) 高分项
通过自己查找资料学习正则表达式,并在代码中使用(re模块)
可参考资料:https://docs.python.org/3.7/library/re.html

import re
import sys
filename = sys.argv[1]
def get_artical(artical_path):
    with open(artical_path) as fr:
        data = fr.read()
    return data

# get_artical()为自定义函数,可用于读取指定位置的试题内容。
four = get_artical('./artical.txt')
four = open("./artical.txt","r+")

oklist = []

for i in four.readlines():
    oklist.append(i.strip('\n'))
okset = set(oklist)

f = open("./artical.txt")
freqdic = {}

def countfreq(list):
    for i in list:
        if i in freqdic:
            freqdic[i] += 1
        else:
            freqdic[i] = 1


for line in f.readlines():
    st = line.lower()
    singlelinelist = re.split("\W+",st)
    b = []
    for i in singlelinelist:
        b.append(i.strip("_"))
    countfreq(b)

dellist = []
for i in freqdic:
    if len(i) > 1 and i[-1] == "s":
        if i[:-1] in freqdic:
            freqdic[i[:-1]] += freqdic[i]
            dellist.append(i)
for i in dellist:
    del freqdic[i]


bookset = set(freqdic)

t = []
common = bookset & okset
known = list(common)
for i in known:
    del freqdic[i]

#return a freq turple.
for key,value in freqdic.items():
    if key.isalpha():
        t.append((key,value))

#write turple into a txt file.
print(t)
f.close()   

在这里插入图片描述

二、Python面向对象

(1)其中work/james_new.txt文件的内容为:
james,2004-5-21,2-34,3:21,2.34,2.45,3.01,2:01,2:01,3:10,2-22
(2)其中work/loren.txt文件的内容为:
loren,2011-11-3,270,3.59,4.11,3:11,3:23,4-10,3-23,4:10,4.21,4-21
(3)其中work/mark.txt文件的内容为:
mark,2010-2-4,300,3.59,3.11,3:11,3:23,4-10,4-23,4:10,4.21,4-21

1.定义get_cocah_data函数读取work/james_new文件的内容,定义运动员类包括name、dob、times属性,top3、sanitize方法, top3函数作用取时间中最短的3个时间,不能重复 sanitize函数作用统一james_new中的不一致的时间数据 将读取的数据存储到运动员的对象中并打印。

def get_coach_data(filename):
    with open(filename) as f:
        line = f.readline()
    return line.strip().split(',')



class Athlete:
    def __init__(self,a_name,a_dob=None,a_times=[]):
        self.name = a_name
        self.dob = a_dob
        self.times = a_times

    def top3(self):
        return sorted(set([self.sanitize(t) for t in self.times]))[0:3]
        
    def sanitize(self,time_string):
        if '-' in time_string:
            splitter = '-'
        elif ':' in time_string:
            splitter = ':'
        else:
            return (time_string)
        (mins,secs) = time_string.split(splitter)
        return (mins+'.'+secs)

james_new = get_coach_data('work/james_new.txt')
james_name = james_new.pop(0)
james_dob = james_new.pop(0)
james_times = james_new

james = Athlete(james_name,james_dob,james_times)

print('姓名:%s,生日:%s,最快的3次成绩:%s' %(james.name,james.dob,james.top3()))

在这里插入图片描述

2.Rugby、OtherAthlete继承Athlete,Rugby和OtherAthlete都增加了自己特有的属性squat。在Rugby中重写top3方法,去最长的3个时间(允许重复)。在OtherAthlete中重写top3方法,取最短的3个时间(允许重复)。分别调用get_coach_data方法读取loren.txt和mark.txt文件,将文件的存储到Rugby、OtherAthlete子类对象中。定义print_rugby函数,参数为父类的对象,在函数中打印name、dob、squat和top3的返回结果。调用print_rugby函数以多态的方式分别打印Rugby、OtherAthlete的信息。

def get_coach_data(filename):
    with open(filename) as f:
        line = f.readline()
    return line.strip().split(',')

class Rugby(Athlete):
    def __init__(self,a_name,a_bod,a_squat,a_times):
        Athlete.__init__(self,a_name,a_bod,a_times)
        self.squat = a_squat
    def top3(self):
        return sorted([self.sanitize(t) for t in self.times])[-3:]
class OtherAthlete(Athlete):
    def __init__(self,a_name,a_bod,a_squat,a_times):
        Athlete.__init__(self,a_name,a_bod,a_times)
        self.squat = a_squat
    def top3(self):
        return sorted([self.sanitize(t) for t in self.times])[0:3]

loren = get_coach_data('work/loren.txt')
mark = get_coach_data('work/mark.txt')

loren = Rugby(loren.pop(0),loren.pop(0),loren.pop(0),loren)
mark = OtherAthlete(mark.pop(0),mark.pop(0),mark.pop(0),mark)

def print_rugby(athlete):

    print(athlete.name)
    print(athlete.dob)
    print(athlete.squat)
    print(athlete.top3())

print_rugby(loren)
print_rugby(mark)

在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HwJack20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值