第一章 Python简介、常见数据类型、常见序列类型

Python简介

Python特点

  1. 语法精简:相对于其他语言比较精简。
  2. 生态好,开发效率高:可以在短时间内实现想要的功能。有各种成熟的、强大的第三方库。
  3. 胶水语言:能轻易地与其用其他编程语言开发的程序组合在一起。
    1. 针对Python不擅长的领域,开发人员可以先利用其他擅长该领域的编程语言编写好相关程序。然后配合Python进行开发。
  4. 上手简单,老少皆宜。
  5. 跨平台:一次编写,到处运行,Python代码几乎可以在所有已知的平台上运行。Windows、macos、linux等

安装python

  1. 打开python官网下载:https://www.python.org/downloads/
    1. 选择不同的平台安装包:Windows、Linux/Unix、macOS、Android、iOS、other
  2. 下载exe文件之后,双击安装:(Windows)
    1. 勾选Add Python.exe to PATH
    2. 点击自定义安装:Customize installation
    3. 后续点击下一步即可完成
  3. 验证是否安装成功:直接搜索应用程序Python,打开即可

python的开发工具(市场主流)

  1. VSCode
    1. 组件库搜索:python,点击安装即可。(会自动安装几个依赖)
  2. pycharm:JetBratins出品的一款集成开发环境。
    1. 直接官网下载安装即可。

pip包管理工具

  1. 安装:一般安装完python之后就自动安装了pip。可以通过pip3 –version查看当前安装的版本。
  2. 使用pip可以安装、卸载、升级和管理Python包
  3. 通过pip,可以轻松地获取和安装这些包,以供Python项目使用.
  4. 在日常开发中,pip应用的场景包括但不限于,例如:
    1. pip可以下载和安装各种第三方库,例如numpy、pandas、matplotib等。这些库提供了各种功能,可以帮助开发人员快速实现数据处理、可视化、网络通信等任务。
    2. 管在开发大型项目时,可能需要使用多个库,并且这些库之间存在依赖关系。使用pip可以方便地管理这些依赖关系,确保在项目运行时所需的库及其依赖项都已正确安装。
    3. 升级已安装的包:使用pip可以方便地升级已安装的包到最新版本,以获取最新的功能和修复,
    4. 使用pip可以搜索PyPI上的可用包,找到满足特定需求的第三方库
  5. 总结下来,pip是Python开发中不可或缺的工具,可以协助开发者方便地获取和管理各种Python包和依赖项,提高开发效率和代码质量.
  6. 常用命令:
    1. pip install package_name:安装指定的Python包或库,将包的文件复制到Python解释器的site-packages目录下.
    2. pip uninstall package_name:卸载指定的Python包或库,从Python解释器的site-packages目录下删除该包的文件。
    3. pip list: 列出当前Python环境中已安装的所有包或库的列表.
    4. pip show package_name:显示指定包的详细信息,包括包的名称、版本号、安装路径等.
    5. pip search package_name:在PyPI (Python Package Index) 上搜索指定的包或库,并显示相关信息.
    6. pip freeze:显示当前Python环境中已安装的所有包的名称和版本号.
    7. pip install -r requirements.txt:根据requirements.txt文件中列出的依赖项列表,安装指定版本的Python包或库.
    8. pip install package_name[dependencies]:一个包可能依赖于其他包,要安装一个包及其依赖项,只需在终端中输人以下命令
      1. 假设我们有一个名为”my_math_package”的Python包,它依赖于numpy和scipy库,我们想要安装这个包,并确保同时安装这两个依赖项.pip install my_math_package[numpy,scipy]
    9. pip wheel package_name:将指定的Python包或库打包成wheel文件,以便在其他Python环境中使用.
      1. 使用pip将名为”numpy”的Python库打包成wheel文件(Python的分布式的文件格式,替代Python传统的egg文件):pip wheel numpy
    10. pip install /path/to/package: 安装一个本地的Python包
    11. pip install -r requirements.txt: 从requirements.txt文件中安装包
    12. pip cache purge: 清理缓存
    13. pip install package_name==version_number: 安装指定版本的包
    14. pip install --upgrade package_name: 升级已安装的包
    15. pip install --user package_name: 这将在用户的本地目录中安装该库。
    16. pip install --no-dependencies package_name: 安装名为xx的Python包,但忽略其依赖项。
    17. pip install --find-links=URL package_name: 从指定的URL中找到并安装名为”myproject”的Python包.

pycharm简单使用

使用pycharm新建一个项目

  1. 新建项目-》选择项目路径/项目名称、勾选“创建欢迎脚本”、解释器类型选择“自定义环境”、环境“选择现有”,类型:python、python路径:本机安装的路径
  2. 创建后,项目会自动生成一个main.py文件

注释

  1. python注释是#开头
  2. 使用command+/快捷键

常见数据类型

整数

  1. 类型int

浮点数

  1. 类型:float
  2. 从python3.6开始,可以在数字的任意中间位置插入下划线,让位数较多的数字更易于阅读。

变量

  1. 表现形式:变量名=变量值
  2. 不用声明变量类型。
  3. 两个变量值进行交换:a,b = b,a
  4. 变量名区分大小写。
  5. 变量名不能以数字开头。

字符串

  1. 类型:str
  2. 用单引号(’‘),也可以用双引号(“”)。
  3. 多行字符串书写:用三个单引号(’'’多行字符串’’‘)
  4. 如果字符串没有被使用可以作为注释使用。编译器不会编译。建议使用三个双引号。
  5. 字符串分行编写:如果一个字符串非常长,想写成多行。在想要换行的地方使用\然后换行即可。注意:\后不能有任何内容,空格也不行。
  6. f、F的使用
    1. 从python3.6开始,可以使用f、F来往字符串中插入数据
    2. 原始字符串r和f可以一起使用

       #name、total是变量
       print(f'姓名: {name},总成绩: {total}');
       # D:\tag\t18。  r的作用是让字符串原样输出,不要进行转义输出\t
       print(rf'D:\tag\t{age}') 
              
       #D: ag 18
       print(f'D:\tag\t(age}')
      
  7. 字符串占位符
# 格式转换说明符
# %d、%i转成整数(int)
# %s转成字符串(str)
# %f转成浮点数(f1oat)
# 字符串 % 数据
name ='xxx'
age = 18
s=‘我的名字是%s,我的年龄是%d岁’ % (name,age)

赋值运算

  1. python中,不存在自增、自减运算符。
  2. 可以写成:i += 1 ; i -= 1;

布尔类型bool

  1. 取值只有ture或者false
  2. 两个值比较:a == b
  3. 对于数字来说:任何非0的值都为真,ture。只有0才是假。
  4. 对于字符串来说:任何长度不为0的字符串都为真。只有长度为0的字符串才为false。

input函数

  1. 可以用来接收用户的键盘输入
  2. 默认返回的是字符串类型的数据,如果输入的整数,需要进行类型转换。

选择结构

if语句

  1. 格式

     if 表达式:
         代码
        
     if 表达式:
         代码1
         代码2
         代码...
    
  2. 注意:如果if语句有多行代码,他们的缩进要保持一致。

1.if else

  1. 格式

     if 表达式:
         代码
     else:
         代码
    

2.条件表达式

  1. 是if else语句的“单行版”(将代码写在同一行)
    1. 如果条件c为真,就执行x,单不执行y
    2. 如果条件c为假,就执行y,单不执行x
     x if c else y
    
  2. 如果if else中的代码较少,使用条件表达式会简洁很多。

3.elif语句

  1. 可以理解为else if语句
if 表达式1:
    代码1
elif 表达式2
    代码2
else:
    代码3

逻辑运算符

  1. 逻辑运算符有3种

     or  示例:a or b   如果a为假,就返回b,否则返回a
     and 示例:a and b   如果a为假,就返回a,否则返回b
     not 示例:not a   如果a为假,就返回true,否则返回false
    
  2. not a

    1. 对a的真假进行取反,也就是说,真的变假,假的变真
    2. 运算结果是bool类型(True或者False)
      1. 如果a是真,则not a的运算结果是假,就返回False
      2. 如果a是假,则not a的运算结果是真,就返回True

1.条件的等价性

```
左右等价
not (a > b)     a <= b
not (a < b)     a>= b
not (a >= b)    a<b
not ( a<= b)    a>b
not(a == b)     a != b
not(a != b)     a == b
a != 0          a
a == 0          not a

not (a and b)   (not a) or (not b)

not (a or b)   (not a) and (not b)
```

2.and的短路现象

  1. 实例 a and b
  2. 如果a为假,就不会再去执行代码b
    1. 这种现象称为:短路
    2. 因为不管b是真是假,运算结果都为假
  3. 如果a为真,就还需要去执行代码b
    1. 因为得知b是真是假,才知道运算结果。
    2. 如果b是真,运算结果就为真;如果b是假,运算结果就为假。

3.or的短路现象

  1. a or b
  2. 如果a为真,就不会再去执行代码b
    1. 这种现象称为:短路
    2. 因为不管b是真是假,运算结果都为真
  3. 如果a为假,就还需要去执行代码b
    1. 因为得知b是真是假,才知道运算结果
    2. 如果b是真,运算结果就为真;如果b是假,运算结果就为假

4.and 、or 的运算结果

  1. and 、or的运算结果不一定就是true、false
  2. a or b: 如果a为假,就返回b,否则返回a
  3. a and b: 如果a为假,就返回a,否则返回b
print(66 or 88) #66
print(0 or 108) #108

print(66 and 88) # 88
print(0 and 108) #0

循环结构

while语句

  1. 书写格式

     while 表达式:
         循环体
     代码2
    

for语句

  1. 书写格式

     for 数据 in 可迭代对象: 
         循环体
     代码2
    
  2. range函数
    1. range(n)会生成[0,n-1]范围内的整数
    2. range(i,n)会生成[i,n-1]范围内的整数
    3. range(i,n,s)会生成[i,n-1]范围内且步长为s的整数
  3. 下划线_
    1. 如果从迭代器里面获取的数据,再循环体里面用不到,一般用下划线_命名变量

       for _ in range(n):
           print('xxx')
      
  4. for语句中的变量,不要在循环外部使用。

break

  1. 只能用在while、for语句中
  2. 作用: 结束其所在的while 、for语句
  3. 书写格式:

     for i in range(5):
         if i == 3:
             break
         print(i)
    

continue语句

  1. continue只能用在while、for语句中
  2. 作用: 跳过本次循环中还未执行的代码

     for i in range(5):
         if i == 3:
             continue
         print(i)
    

序列类型-列表list

  1. 格式:scores = [1,2,x]
  2. 列表中的元素可以是任意类型。
  3. 可以用in判断某个元素是否在列表中,运算结果为bool.
  4. 可以用not in 判断某个元素是否不在在列表中,运算结果为bool.

     print(10 in [10, 20, 30])
     print(10 not in [10, 20, 30])
    
  5. 可以使用负数索引,比如-1表示倒数第1个。scores[-1]
  6. 假设列表长度是n,那么索引取值范围是[-n,n-1]
  7. 遍历

     //1. for循环遍历
     s = [11,33,44]
     for i in s:
         print(i)
     //拿到索引
     for i in range(len(s)):
         print(i,s[i])
        
     //2. 通过enumerate函数,同时拿到索引、元素
     for i,e in enumerate(s):
         print(i,e)
    

空列表

  1. 空列表创建方式

     s = []
     s2 = list()
    
  2. 以下函数在无参时生成的值都为假(False)

     v1 = int()  # 0
     v1 = float()  # 0.0
     v1 = str()  # ''
     v1 = bool()  # False
     v1 = list()  # []
    
  3. 空列表为假(False),非空列表为真(True)
  4. 列表相加,让多个列表合并为一个列表

list切片

  1. 切片:从列表中选取一部分元素,组成一个新的列表
  2. 格式:s[i:j]
  3. 从s[i]到s[j-1]的元素,生成一个新的列表
  4. 如果i和j超过了正常取值范围,程序并不会报错
  5. i跟j是可以省略的,一旦省略会“贪婪”地选取尽可能多的元素。
    1. s[n:] 从s[n]开始一直到结尾的元素
    2. s[:n] 从开头的n个元素
    3. s[-n:] 末尾的n个元素
    4. s[:] 所有元素,相当于复制当前列表
  6. s[i:j:k],i起始值,j结束值(不包含),k 步长(每次增加多少)

     s = [1,2,3,4,5,6,7,8]
     s2 = s[1,3]  #[2,3]
     s3 = s[1,100] #[2,3,4,5,6,7,8]
     s4 = s[1,6,2] #[4,6]
    
  7. 修改某个范围内的元素
    1. 修改切片范围内的元素:s[切片范围] = 可迭代对象

       s = [1,2,3,4,5,6]
       s[1,4]= [7,8,9]
       #最终s为 [1,7,8,9,5,6]
       print(s)
      

list常用方法

  1. 查询:s.index(x)
    1. 查询元素x在s中的最小索引(从左往右搜索)
    2. 如果元素x不在s中,会报错(valueError)
  2. s.index(x,i,j):在[i,j)范围搜索
  3. s.index(x,i):在[i,len(s))范围内搜索。
  4. s.count(x):统计元素中有多少个元素x。
  5. s.append(x):添加元素x到s的尾部。
  6. s.insert(i,x):将元素x插入到索引为i的位置。
  7. s.extend(t):可将迭代对象t中的所有元素添加到尾部。s.extend(range(20,0,-10))
  8. s.pop():删除并返回尾部元素
    1. 调用空列表的pop方法会报错(indexError)
    2. s.pop(i):删除并返回索引i位置的元素。如果索引i越界,调用pop(i)方法会报错(IndexError)
  9. s.remove(x):删除1个元素x(从左往右搜索)
  10. 可以通过关键字del实现删除功能(del是delete的简写):
    1. del s[i] 删除索引位置的元素
    2. del s[切片] 删除切片范围内的元素
    3. del s[:]删除所有元素,del s,删除变量s
  11. s.clear():删除所有元素。等价于del s[:]
  12. s[:] = [] 和 s = []的区别
    1. s[:] = [] 清空当前列表,s指针不变。
    2. s = [] 将s指向新的空列表
Table of Contents