python----学习

python学习网址

https://www.runoob.com/python/python-variable-types.html

1.ROS消息传递——std_msgs

https://blog.csdn.net/qq_36355662/article/details/62226935
https://blog.csdn.net/qq_30460905/article/details/88941899

2.字符串与数字转化

https://blog.csdn.net/u013475964/article/details/68954251
https://www.cnblogs.com/likailiche/p/4902863.html

3.FileStorage在Python中的API和使用方法

http://zhaoxuhui.top/blog/2018/06/29/PythonOpenCVFileStorage.html

一、python 语言基础

1.运算符

+, -, *, /, %(取余), //(整除), **(幂)
除法(/)在 py2 中,如果被除数为整数,结果也为整数. py3 中正常

2.基本输入和输出

input( ) 输入:

注意:

  1. 在py3 中,无论输入的是数字还是字符,都将被作为字符串读取.
  2. 2.在py2 中, 输入字符串类型时,需要加引号.
b = float(input("请输入数字: "))   #将输出的字符串类型转化为浮点型

print( ) 输出

以下是 print() 方法的语法:

print(*objects, sep=' ', end='\n', file=sys.stdout)

–参数:–

objects – 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep – 用来间隔多个对象,默认值是一个空格。
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file – 要写入的文件对象。

三、列表

1.定义:[ ].

注意:

  1. 相邻两个元素用逗号.
  2. 同一个列表元素类型可不同
name = []   #空列表
name2 = ['哈哈哈',222,[333,'嘎嘎嘎']]

2.创建数值列表

name3 = list(range(10,20,2))

3.访问列表元素

print(name2[2])

4.遍历列表

for item in name2:
   print(item)

5.添加,修改和删除列表元素

添加:

name.append('新来的')  #在列表的末尾
print(name)
name.extend(name2)  #添加新列表
print(name)

修改

name2[1] = '呵呵'

删除

del name2[1]   # 根据索引删除

name2.remove('222')

四. 各种矩阵运算

#-*- coding: utf-8 -*-
from numpy import *;#导入numpy的库函数
import numpy as np; #这个方式使用numpy的函数时,需要以np.开头。

# https://www.cnblogs.com/chamie/p/4870078.html
#自己生成行矩阵
aa=matrix([1,2,3])
print(aa)
print(aa[0,1])
#自己生成列矩阵
aaa=matrix([[1],[2],[3]])
print(aaa)

###矩阵a
a=np.floor(10*np.random.rand(2,2))
###a
print(a)
 
###矩阵b
b=np.floor(10*np.random.rand(2,2))
print(b)

###hstack()在行上合并
c=np.hstack((a,b))
print(c)
 
####vstack()在列上合并
d=np.vstack((a,b))
print(d)

#### 矩阵乘法
e = aa*aaa
print(e)

# 矩阵的逆
a1=mat(eye(2,2)*0.5)
a2=a1.I   #求矩阵matrix([[0.5,0],[0,0.5]])的逆矩阵
print(a2)

#矩阵元素的提取

#矩阵的转置
a2=a1.T

#矩阵的迹
aaa = = matrix([[1,0,0],[0,1,0],[0,0,1]])
trace = np.trace(aaa)
print'矩阵的迹:',trace

五. NumPy 中 ndarray 和 matrix 的区别

import numpy as np

1. 维数限制

matrix 和 ndarray 所能表示的数据维数不同,matrix 只能表示二维数据,而 ndarray 可以表示 N 维数据。

1.1. matrix

matrix 只能是二维,可以使用如下的方法生成两个 2 * 2 的 matrix:

a = np.mat([[1, 2],[3, 4]])
# a = [[1 2]
#      [3 4]]

b = np.mat('5 6; 7 8');
# b = [[5 6]
#      [7 8]]

如果尝试生成多于二维的矩阵,会产生报错:

c = np.mat([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])  
# ValueError: matrix must be 2-dimensional

1.2. ndarray

ndarray 可以是 N 维,如使用如下的方法生成两个 2 * 2 的 ndarray:

x = np.array([[1, 2], [3, 4]])
# x = [[1 2]
#      [3 4]]
y = np.array([[5, 6], [7, 8]])
# y = [[5 6]
#      [7 8]]

可以生成任意维数的 ndarray:

z = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
# z = [[[1 2]
#       [3 4]]
#
#      [[5 6]
#       [7 8]]]

2. 矩阵乘法

matrix 和 ndarray 在进行矩阵乘法时的操作不同。

2.1. matrix

对于 matrix,使用运算符 * 或 NumPy 的 dot() 方法计算矩阵乘法,使用NumPy 的 multiply() 方法计算逐元素相乘。例如对于上面定义的 matrix a 和 b,有:

a * b
# matrix([[19, 22],
#         [43, 50]])
 
np.dot(a, b)
# matrix([[19, 22],
#         [43, 50]])
 
np.multiply(a, b)
# matrix([[ 5, 12],
#         [21, 32]])

2.2. ndarray

对于 ndarray,使用 NumPy 或者 ndarray 的 dot() 方法计算矩阵乘法,使用 运算符 * 或 Numpy 的 multiply() 方法计算逐元素相乘。例如对于上面定义的 ndarray x 和 y,有:

x * y
# array([[ 5, 12],
#        [21, 32]])
 
x.dot(y)
# array([[19, 22],
#        [43, 50]])
 
np.dot(x, y)
# array([[19, 22],
#        [43, 50]])

此外,从 Python 3.5 和 Numpy 1.10 以后,可以使用中缀操作符 @ 计算 ndarray 间的矩阵乘法,写起来更加方便:

x @ y
# array([[19, 22],
#        [43, 50]])

3. 转换

3.1. matrix 到 ndarray

可以使用 matrix 的 A 属性或者 NumPy 的 asarray() 方法,将 matrix 转换为 ndarray。如:

d = a.A
type(d) # numpy.ndarray
 
e = np.asarray(a)
type(e) # numpy.ndarray

注意上面两个转换方法不会复制数据,如果修改了原始 matrix(即 a),则该修改也会反映到转换后的 ndarray(即 d、e)中,如:

a = np.mat([[1, 2], [3, 4]])
 
d = a.A
e = np.asarray(a)
print('before change a[0][0]: \nd = \n{}\ne = \n{}'.format(d, e))
 
a[0][0] = 10
 
print('\nafter change a[0][0]: \nd = \n{} \ne = \n{}'.format(d, e))

输出为:

before change a[0][0]: 
d = 
[[1 2]
 [3 4]]
e = 
[[1 2]
 [3 4]]
 
after change a[0][0]: 
d = 
[[10 10]
 [ 3  4]] 
e = 
[[10 10]
 [ 3  4]]

3.2. ndarray 到 matrix

可以使用 Numpy 的 asmatrix() 将 ndarray 转换为 matrix。如:

z = np.asmatrix(x)
type(z) # numpy.matrixlib.defmatrix.matrix

该转换也不会复制数据,如果修改了原始 ndarray(即 x),则该修改也会反映到转换后的 matrix(即 z)中。

4. 如何选择 ndarray 和 matrix

对于 ndarray 和 matrix 的选择,scipy.org 给出的建议是使用 ndarray,因为:

They are the standard vector/matrix/tensor type of numpy. Many numpy functions return arrays, not matrices.
There is a clear distinction between element-wise operations and linear algebra operations.
You can have standard vectors or row/column vectors if you like.

六、Python 异常处理

1. 异常名称

2. 异常处理

try:
<语句>        # 运行可能出错的代码块
except <异常名字><语句>        # 如果在try部份引发了'name'异常
except <异常名字> as <数据>:
<语句>        # 如果引发了'name'异常,获得附加的数据
else:
<语句>        # 如果没有异常发生
finally:
<语句>        # 无论有无异常,都会执行

注意:

  1. 如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印默认的出错信息)。

3.使用raise语句抛出异常

raise语法格式如下:

raise [Exception [, args [, traceback]]]

语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。

例子

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定义函数
def mye( level ):
    if level < 1:
        raise Exception,"Invalid level!"
        # 触发异常后,后面的代码就不会再执行
try:
    mye(0)            # 触发异常
except Exception,err:
    print 1,err
else:
    print 2

执行以上代码,输出结果为:

$ python test.py
1 Invalid level!

变量的作用域

1. 局部变量

指在函数内部定义并使用的变量,旨在函数内部有效。在函数运行之前或者运行完毕之后,所有的名字就不存在了。

2.全局变量

(1): 函数定义在函数外,不仅函数外可以访问,函数内部也可以访问。

局部变量与全局变量重名时,对函数体内的变量进行赋值,不影响函数体外的变量。

#-*- coding: utf-8 -*-
message = '阿斯顿法国'

def fun_one():
    message = '之前玩儿体育'
    print(message)

#~~~~~~~~~~~~~~~~~~~~
fun_one()
print(message)

运行结果:

之前玩儿体育
阿斯顿法国

(2): 在函数体内部定义,使用global 后为全局变量。

1.先在函数体外定义,想在函数体内修改,加global,修改后全局发生变化;
2. 在函数内部定义全局变量,函数体外也可以进行修改;

如何改变文本的样式

强调文本 强调文本

加粗文本 加粗文本

标记文本

删除文本

引用文本

H2O is是液体。

210 运算结果是 1024.

插入链接与图片

链接: link.

图片: Alt

带尺寸的图片: Alt

居中的图片: Alt

居中并且带尺寸的图片: Alt

当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。

如何插入一段漂亮的代码片

博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.

// An highlighted block
var foo = 'bar';

生成一个适合你的列表

  • 项目
    • 项目
      • 项目
  1. 项目1
  2. 项目2
  3. 项目3
  • 计划任务
  • 完成任务

创建一个表格

一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式here.

新的甘特图功能,丰富你的文章

Mon 06 Mon 13 Mon 20 已完成 进行中 计划一 计划二 现有任务 Adding GANTT diagram functionality to mermaid
  • 关于 甘特图 语法,参考 这儿,

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图::

张三 李四 王五 你好!李四, 最近怎么样? 你最近怎么样,王五? 我很好,谢谢! 我很好,谢谢! 李四想了很长时间, 文字太长了 不适合放在一行. 打量着王五... 很好... 王五, 你怎么样? 张三 李四 王五

这将产生一个流程图。:

链接
长方形
圆角长方形
菱形
  • 关于 Mermaid 语法,参考 这儿,

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes no
  • 关于 Flowchart流程图 语法,参考 这儿.

导出与导入

导出

如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。

导入

如果你想加载一篇你写过的.md文件或者.html文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。


  1. 注脚的解释 ↩︎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值