文章目录

  • Part.I 准备工作
    • Chap.I 下载安装
    • Chap.II 实现快捷键清屏
    • Chap.III 概念汇编 & 注意事项
  • Part.II 基础知识
    • Chap.I 快应用
    • Chap.II 输入输出
    • Chap.III 条件与循环语句
    • Chap.IV 关于文件
    • Chap.V 关于调试
    • Chap.VI 迭代器与生成器
  • Part.III 常用功能实现
    • Chap.I 大佬的轮子
    • Chap.II 自己实现的功能
    • Chap.III 问题 & 解决方案
  • Reference

Part.I 准备工作

Chap.I 下载安装

Windows 的下载安装可以看下面的快应用,也可以看 Ref.3;Linux 下的安装可以参考 Ref.4,也可以参考下面的操作。

  • St1:从官网上下载源码包,比如https://www.python.org/downloads/release/python-386/ 下载

  • St2:将压缩包放到想安装的目录下,然后终端cd到此目录下,之后tar -zxvf Python-3.8.6.tgz解压缩

  • St3:./configure --prefix=/Adirectory注意,这里的Adirectory是一个目录的名字(可省,这就是默认安装了),比如:/usr,意思是将该软件安装在 /usr 下面,执行文件就会安装在 /usr/bin (而不是默认的 /usr/local/bin),资源文件就会安装在 /usr/share(而不是默认的/usr/local/share

  • St4:make 编译

  • St5:make install

  • St6:设置环境变量,在.bash_profile 文件中加入:export PATH=$PATH:/yourdirectory/bin这个和上面St3的Adirectory是一样的。


Python 之所以如此受欢迎原因之一就是它有很多好用的三方库,下载这些三方库一般用pip指令(windows 用 powershellcmd都行,Linux 用终端),下面是常用的pip指令:

pip -V               # 查看 pip 版本
pip install numpy   # 示例:安装 numpy
pip list            # 查看安装的三方库有哪些
py -0p              # 查看 python 的安装路径

Chap.II 实现快捷键清屏

当然,这里指的是windows,Python 并没有自带清屏快捷键,网上这招也许是大佬自己搞出来的。有很多文章都讲如何操作的,操作方法大同小异,本质上都是一样的,这里挑了个简洁的,链接参上

大致分为这几步:
1.在Python\Lib\idlelib下,新建一个ClearWindow.py文件(没有时就新建)
2.Python\Lib\idlelib下修改config-extensions.def ,在末尾添加如下内容

关于第二步,若改不了的话,可以以管理员的身份打开powershell,然后输入 notepad xx\Python\Lib\idlelib\config-extensions.def 进行修改,之后保存。


Chap.III 概念汇编 & 注意事项

  • Anaconda 指的是一个开源的 Python 发行版本,其包含了conda、Python等180多个科学包及其依赖项。 因为包含了大量的科学包,Anaconda 的下载文件比较大(约 531 MB),如果只需要某些包,或者需要节省带宽或存储空间,也可以使用Miniconda这个较小的发行版(仅包含conda和 Python)。
  • 虚拟环境是一个将不同项目所需求的依赖分别放在独立的地方的一个工具,它给这些工程创建虚拟的Python环境。它解决了“项目X依赖于版本1.x,而项目Y需要项目4.x”的两难问题,而且使你的全局site-packages目录保持干净和可管理。
  • 当 python2 和 python3 共存时,一般 python 指 python2,想用python3 需用命令 python3
  • Python List:append 方法向列表的尾部添加一个新的元素;extend方法将参数的每个元素都添加到原有的列表中。

Part.II 基础知识

Chap.I 快应用

这部分记录一下笔者本篇博客的分博客和其他优秀的博客:

  • VS 2015 配置 Python
  • VSCode 搭建 Python 环境
  • Python 格式化输出
  • Python 常用符号含义 + 常用数学函数
  • Python 数据类型及其相互转换
  • Python List 操作笔记(里面有一些子博客,主要是对三维列表的操作)
  • Python 函数使用
  • Python 跨文件调用函数
  • Python 如何用 shell 调用脚本中的函数+参数传递

Python 很强大的功能之一就是它的绘图功能,这也是笔者使用 Python 最最常用的功能之一。之前用Matlab,对图形的绘制用到很熟练,python 其实和 Matlab 差不多,下面是一些总结

  • Python 各种画图(这个是绘图的主博客,有关绘图的里面基本都可以找到)
  • Python 常用线型 + 点符号 + 颜色汇总
  • Python 中图例 Legend 的调整
  • Python 修改 x/y ticks
  • Python 绘图字体控制 + 文字在图片中的位置调整
  • Python 让多图排版更加美观
  • Python 箱型图的绘制并提取特征值

下面是Python的一些强大的模块 / 类:

  • Python 导入模块
  • Python 之 subprocess 调用其他程序模块
  • Python 之 Logging 日志记录模块
  • Python 之 argparse 解析命令行参数模块
  • Python 之 xml.etree.ElementTree 解析 xml 模块
  • Python 之 subprocess 调用程序运行指令

随机数函数

import random
函数 描述
choice(seq) 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step]) 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1
random() 随机生成下一个实数,它在[0,1)范围内。
seed([x]) 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst) 将序列的所有元素随机排序
uniform(x, y) 随机生成下一个实数,它在[x,y]范围内。

Chap.II 输入输出

python 简单的输入输出如下:

>>> a=input('please input the value of a: ')
please input the value of a: 12
>>> print(a)
12

当你想知道一个变量的值是多少时,可能会对它是整型还是长整型感兴趣。这可以通过两种机制来实现,实际上是值被转换为字符串的两种机制。可以通过以下两个函数来使用这两种机制:一是通过str函数,它会把值转换为合理形式的字符串,以便用户可以理解,而repr会创建一个字符串,它以合法的Python表达式的形式来表示值。下面是一些例子

>>> 'hello world!'
'hello world!'
>>> print('hello world!')
hello world!
>>> print(repr('hello world!'))
'hello world!'
>>> print(str('hello world!'))
hello world!

关于两个input (input 和 raw_input) ,假设有这样一个脚本:

name = input( "what is your name? ")
print "He11o. " + name + " !"
------------------
What is your name? "Gumby"
#输入需加引号,用raw_input()则不需
He11o. Gumby!
++++++++++++++++++++++++++++
>>input( "Enter a number: ")Enter a number: 3
3
>>>raw_input( "Enter a number: ")Enter a number: 3
'3'

raw_input 会把所有数据当作原始输入存放在字符串中。也就是说,使用这俩input的时候,可以按照如下规则:input 对值进行操作,raw_input 对字符串进行操作。

'''跨行书写字符串,当然最后也得用'''将其引起来。普通字符串也可以跨行(换行的时候加个\)。如果一行之中最后一个字符是反斜线\,那么,换行符本身就“转义”了,也就是被忽略了。

>>> print('C:\nowhere')
C:
owhere
>>> print(r'C:\nowhere')
C:\nowhere

原始字符串,其最后一个字符不可以是反斜杠\
格式化输出见上面。

Chap.III 条件与循环语句

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
A. 条件判断 - if 语句

if condition_1:statement_block_1
elif condition_2:statement_block_2
else:statement_block_3
  • Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。
  • 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 在Python中没有switch – case语句。

B. 循环语句 - while

while 判断条件(condition):执行语句(statements)……

while … else :在条件语句为 false 时执行 else 的语句块。

while <expr>:<statement(s)>
else:<additional_statement(s)>

C. 循环语句 - for

for <variable> in <sequence>:<statements>
else:<statements>

python 中使用 for 循环的几种方式:

# c 是 lst 中的元素
for c in lst:
# 使用 range,
for i in range(n):
# 使用 enumerate, i 和 x 分别是索引和 lst 中的值
for i,x in enumerate(lst):
# 使用 zip 可以获取多个 lst 的值
for x,y in zip(lst1,lst2):

其他控制语句:

语句 含义
break break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
pass pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。

Chap.IV 关于文件

1、open函数用来打开文件,语法如下:open(name[, mode[, buffering]])
其使用文件名(name)作为一个强制参数,模式(mode)和缓冲(buffering)参数都是可选的。
1)open 函数中模式参数常用值

描述
'r' 读模式 ,默认参数
'x' 写模式,新建一个文件,如果该文件已存在则会报错。
'w' 写模式
'a' 追加模式
'b' 二进制模式(可添加到其他模式中使用)
'+' 读/写模式(可添加到其他模式中使用)

注:'b'模式改变处理文件的方法。一般来说,Python 假定处理的是文本文件(包含字符)。若要处理二进制文件,那么应该在模式参数中增加'b',例如'rb'
2)open函数的第3个参数(可选)控制着文件的缓冲。如果参数是0(或者是False),IO(输入/输出)就是无缓冲的(所有的读写操作都直接针对硬盘)﹔如果是1(或者是True),IO就是有缓冲的(意味着Python使用内存来代替硬盘,让程序更快,只有使用flush或者close时才会更新硬盘上的数据。大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认的缓冲区大小。

读写简单示例:

# write
f=open('somefile.txt','w')
f.write('Hello, ')
f.write('World!')
f.close();
-----------------------
# read
f=open('somefile.txt','r');
f.read(4)     #读取4个字符
f.read()      #读取剩下的字符
f.close()

2、seek 函数来随机访问,seek函数的一般用法为:seek(offset[, whence]) 这个方法把当前位置(进行读和写的位置)移动到由offset 定义的位置。
offset:从开始位置的偏移量,也就是代表需要移动偏移的字节数。
whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
tell()返回当前游标在文件中的位置。

3、读写行
file.readline() 读取单独的一行(从当前位置开始直到一个换行符出现,也读取这个换行符。file.readline(5) 读取这一行中前五个字符。file.readlines()读取一个文件中所有行并将其作为列表返回。

writelines方法和readlines相反:传给它一个字符串的列表(实际上任何序列或者可迭代的对象都行),它会把所有的字符串写人文件(或流)。注意,程序不会增加新行,需要自己添加。没有writeline方法,因为能使用write

Chap.V 关于调试

1 在所需要调试的地方加入如下代码:

import pdb
pdb.set_trace()

2 调试代码常用命令:

命令 含义
break / b 设置断点
command / c 继续执行程序
list / l 查看当前行的代码段
step / s 进入函数
return / r 执行代码直到从当前函数返回
exit / q 中止并退出
next / n 执行下一行
pp 打印变量的值
help 帮助

Chap.VI 迭代器与生成器

这块参考:https://www.runoob.com/python3/python3-iterator-generator.html

迭代器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。(人生如棋,我当为卒,可谁曾见我后退一步!)
  • 迭代器有两个基本的方法:iter() 和 next()。
  • 字符串,列表或元组对象都可用于创建迭代器:
>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>>
  • 迭代器对象可以使用常规for语句进行遍历:
#!/usr/bin/python3list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:print (x, end=" ")
----------------------------
1 2 3 4
  • 也可以使用 next() 函数:
#!/usr/bin/python3import sys         # 引入 sys 模块list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象while True:try:print (next(it))except StopIteration:sys.exit()
-------------------------
1
2
3
4

生成器

  • 使用了 yield 的函数被称为生成器(generator)。
  • 跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
  • 在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
  • 调用一个生成器函数,返回的是一个迭代器对象。
    以下实例使用 yield 实现斐波那契数列:
#!/usr/bin/python3import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n): returnyield aa, b = b, a + bcounter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True:try:print (next(f), end=" ")except StopIteration:sys.exit()
-----------------------------
0 1 1 2 3 5 8 13 21 34 55

Part.III 常用功能实现

这块记录一下一些小功能的实现。

Chap.I 大佬的轮子

笔者收集的大佬们分享的『轮子』如下:

  1. Python绘制樱花

Chap.II 自己实现的功能

  1. 求两个小数的“最小公倍数”;这个小功能的实现过程,对我而言是一个美好的回忆。为什么这么讲呢?保密hhh
  2. Allan 方差计算方法实现

Chap.III 问题 & 解决方案

这部分是笔者使用 Python 过程中所遇到的问题以及得到的解决方案。


避免 VisibleDeprecationWarning 警告的方法:

import warnings
warnings.filterwarnings("ignore", category=Warning)

Python 内部的 line.split() 函数只支持一种分隔符输入,使用re.split()函数可以指定多个分隔符分割字符串,下面是一个示例。

import
re.split(r'[;,\s]',line)
split_list = list(filter(None, re.split(r'[.,!#$?%^]', text)))

注:

  • 第二行中\s:表示空格,第二行指定了三种分隔符;,和空格
  • 第三行可以去除分割后的空串。

分割文件绝对路径,获得字符串中的文件路径和文件名

tmp = os.path.split(file)   # tuple
path = tmp[0]
file = tmp[1]

得到的是一个列表,有俩元素,第一个是文件路径,第二个是文件名


Reference

  1. runoob.com
  2. Python 官网
  3. Python安装教程 - Windows 版
  4. Centos7 安装 Python3 - Linux 版

Python 编程笔记(本人出品,必属精品)相关推荐

  1. 全世界最详细的图形化VMware中linux环境下oracle安装(三)【weber出品必属精品】...

    数据库软件和数据库都建好了,基本上可以说完成90%的工作,但是美中不足的就是企业管理器还没有安装好,现在我们就开始安装企业管理器吧. 安装之前我们先将补丁给补上.补丁我们也是采用禁默安装.补丁:p83 ...

  2. 解决linux下oracle进入sqlplus环境中后退键显示^H、上下键无效与ctrl+l无法清屏等问题【weber出品必属精品】...

    习惯linux中上下键回退历史输入的人们肯定也希望sqlplus中也能实现相同的效果,可是不幸的是,sqlplus中不提供诸多方便的快捷键,这个时候我们就需要另外安装一个插件来实现这个想法. 这个插件 ...

  3. 使用DML语句【weber出品必属精品】

    DML语句包含以下语法: INSERT:往一个表中增加新行 DELETE:从一个表中删除掉现有的行 UPDATE:更改一个表中现有的行 INSERT语句 语法:INSERT INTO TABLE(CO ...

  4. 控制用户的访问之权限、角色【weber出品必属精品】

    权限的作用 限制用户对数据的访问 权限的分类 1. 系统权限:能够存取数据库的权限 2. 对象权限:操作数据库对象的内容 系统权限   1.1 如何创建用户: SQL> create user ...

  5. 【阿朱出品 必属精品】你也说医院,我也说医院

    怎么说俺也是在卫生部官办国企做了4年啊,那就说道说道.由于中国医疗制度牵扯全民利益所以变革非常谨慎微小,中国医生圈子大多属于几个院系派系嫡系自我近支繁衍,体制内有事业单位编制问题,体制外有莆田系金钱交 ...

  6. ChatGPT团队出品,必属精品—Bito插件完全指北

    Bito是一个IntelliJ IDEA插件,由ChatGPT团队开发,用于提高开发效率和生产力. 首先,安装Bito插件非常简单.在IntelliJ IDEA编辑器中打开"Plugins& ...

  7. 剪映,最简单的PC端视频处理工具,大厂出品必属精品~

    相信在座的小伙伴都用过抖音app,看的多了难免也有想要发视频的冲动. 这时我们就会想到诸如Ae.Pr之类的视频制作工具,但他们都有一定的上手难度-- 好在抖音霸霸很早就推出了免费的官方全能剪辑工具,也 ...

  8. Python 常用线型 + 点符号 + 颜色汇总 ∈ Python 编程笔记

    文章目录 Part.I 线型 Chap.I 基本线型 Chap.II 元组线型 Part.II 点符号 Chap.I 基本符号 Chap.II 高级符号 Part.III 颜色 Chap.I 单词或字 ...

  9. Python编程笔记6字典

    Python编程学习笔记,第6记:数据结构之字典           本节将学习:能够将相关信息关联起来的Python字典.如何定义字典.如何使用存储在字典中的信息.如何访问和修改字典中的元素.如何遍 ...

  10. Python编程笔记

    Table of Contents 1. 绪论 2. python编程概述 2.1. 知识点 2.2. 良好的编程习惯 2.3. 常见编程错误 2.4. 测试和调试提示 2.5. 移植性提示 3. 控 ...

最新文章

  1. C++ STL: 分配器allocators 源码分析
  2. OpenGL程序管道,可分离程序和着色器子例程的基本用法
  3. CRM Excel导出技术实现的调试截图
  4. php 钩子,php钩子原理是什么
  5. 高效使用Bitmaps(一) 大Bitmap的加载
  6. Attention模型:我的注意力跟你们人类不一样
  7. Ubuntu下的文件安全删除工具
  8. 关于HTML+CSS3的一些笔记
  9. JDK-阻塞队列、非阻塞队列原理
  10. r语言 svycoxph_生存分析的Cox回归模型(比例风险模型)R语言实现及结果解读
  11. 2021年新版阿里云服务器价格表(收费标准报价)
  12. cso(布谷鸟)算法优化神经网络参数
  13. 超出本地计算机网络,超出本地计算机网络适配器卡的名称限制怎么解决?
  14. 【Tableau】如何使用tableau进行两列数据的运算
  15. 基于springboot+dubbo微服务开发的商城系统
  16. 【华人学者风采】余家国 武汉理工大学
  17. JS通过List列表生成树结构
  18. jQuery选择器(二)
  19. zynq PS端通过EMIO访问PL资源
  20. 杜克计算机工程本科专业申请,杜克大学电气与计算机工程专业申请要求有哪些?...

热门文章

  1. MATLAB升级失败导致无法使用simulink
  2. Android攻城狮ScrollView
  3. Hooks 常见的问题
  4. 产品经理 - 路漫漫其修远兮
  5. echarts(一)之地图连线动效
  6. Double Check形式的单例模式
  7. 2015062801 - 祈福八仙水上乐园
  8. 【pytest】(六) pytest中fixture的使用
  9. Alexa, Stop Spying on Me!“: Speech Privacy Protection Against Voice Assistants
  10. 第十五周 项目一 (3)验证交换排序