SkillAgentSearch skills...

LearnPythonByApplication

Introducing the basic aspects of Python and its application in Civil Engineering

Install / Use

/learn @Junjun1guo/LearnPythonByApplication
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Learning python by examples(pythonLearning.ipynb)


教程使用步骤:

1. 在本页面下载项目文件,并解压
2. 按照readme.md附录教程安装jupyterlab模块
3. 进入解压后的文件目录,切换到命令行,打开当地网页进行交互式学习


Markdown语言

Markdown是一种轻量级 的标记语言,可与HTML语言兼容,可以看做是HTML语言的简易版本,2004年由John Gruber创建。Markdown语言主要用于编写文档及论坛发表消息,如github的read.me文档,jupyterlab文本的编写。

多级标题

# 一级标题
## 二级标题
...
###### 六级标题

一级标题

二级标题

...

六级标题

段落样式

  空行: 通过文本间空行实现

  这是第一段

  这是第二段

空格:

  中文输入 状态下,按shift+空格切换到全角状态,然后按空格

文字样式:

   斜体采用 *斜体* 粗体采用 **粗体** 粗斜体采用 ***粗斜体***

  斜体 粗体 粗斜体

分割线:

  可以采用三个以上的下划线___ 

下划线

  采用HTML语言的underline标签实现 <u> </u>
  <u>通过HTML的标签实现</u>

<u>通过HTML的标签实现</u>

字体颜色

  采用HTML font标签实现 <font color="red">内容</font>

<font color="green">  字体颜色通过HTML字体颜色标签实现</font>

有序与无序列表

* 无序列表
* 无序列表
1. 有序列表
2. 有序列表
  • 无序列表
  • 无序列表
  1. 有序列表
  2. 有序列表

区块引用

> 区块引用1   
>> 区块引用2

区块引用1

区块引用2

区块引用3

代码块

``` Python
print ("Hello world!")
```

print ("Hello world!")

地址与图片链接

网址链接:[python官网](https://www.python.org)    
图片链接:![](https://github.com/Junjun1guo/learnPythonByApplication/raw/master/images/python.png)

python官网

表格

  采用|分割单元格,采用----分割标题栏与单元格。单元格的对齐采用:,如左对齐(:----)

| 左对齐 | 右对齐 | 居中对齐 |
| :------|------:| :-----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
| 左对齐 | 右对齐 | 居中对齐 |
| :-----|----:| :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |

| 左对齐 | 右对齐 | 居中对齐 | | :------|------:| :-----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 | | 左对齐 | 右对齐 | 居中对齐 | | :-----|----:| :----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 |

Python语言

python语言及其特点

python语言的发展

  Guido von Rossum 1989年开发了python编译器。python语言介于C语言与脚本语言之间,是一种“胶水”语言。python语言的宗旨就是“能用胶水解决的问题,坚决不造轮子”。发展的版本有2.x和3.x,python官网

python语言下载及安装

  1. 在下载页面选择相应系统对应的版本进行下载

2. 安装python,可以选择相应的安装目录,添加python到系统路径

  1. 进入python安装目录Scripts进行安装需要的模块,安装好的模块位于site-pakages

python常用编辑器介绍

  editPluspyCharmanaConda

python语言的特点

优点

  • 简洁优雅,可读性强  
  • 可移植性强,接口强大
  • 优秀强大的第三方库

不足

  • 速度中等
  • 不同版本及包的兼容性

python的应用场景

  • 数值计算,依赖于众多的第三方包
  • 机器学习及深度学习
  • 网络爬虫及大数据分析
  • 网页制作,知乎,facebook等
  • 桌面程序的开发,依赖于pyQt,wxPython等第三方GUI库
  • 与其他软件的交互,如Opensees,Abaqus,SAP2000等 ...

python与matlab对比

|<font size=4>matlab</font>|<font size=4>python</font>| |:------:|:------:| |<font size=4>商业软件</font>|<font size=4>免费开源</font>| |<font size=4>软件冗杂</font>|<font size=4>即用即装</font>| |<font size=4>面向过程</font>|<font size=4>面向对象</font>| |<font size=4>速度慢</font>|<font size=4>速度快</font>| |<font size=4>发展缓慢</font>|<font size=4>发展极快</font>| |<font size=4>...</font>|<font size=4>...</font>|

python语言基础语言

数据类型

数字:整型(int) 浮点型 (float)

print (type(2)) #type()函数返回输入数据的类型
print (type(2.0)) #print ()函数用于文本输出
a=float(2) #整型转换为浮点型
b=int(2.0) #浮点型转换为整型
print (a)
print (b)
2.0
2

字符串:'' ""

a="hello world!"
b="我是python"
print (type(a))
print (a)
print (a+b)
<class 'str'>
hello world!
hello world!我是python

Math模块

from math import * #导入math模块中所有函数
a=sqrt(2)
print (a)
1.4142135623730951

布尔类型:真(True),假(False)

a=True
b=False
print(int(a))
print(int(b))
1
0

数据结构

列表(list)

a=[] #空列表
print (a)
b=[1,8,3,6]
print (b[0])
b.append(7) #从列表尾部不断添加新对象
print (b[-1])
b.reverse() #反转列表中元素
print (b)
b.sort() #列表排序
print (b)
f=len(b) #列表的长度
print (f)

可以通过help函数与dir函数查看模块内所有的特性

print (dir(list)) #特殊方法与公共方法列表
print (help(list)) #返回各个方法的具体定义

元组(tuple)

元组与列表类似,区别在于一旦创建不能对其进行修改
元组可应用于不可变量的存放,既快又安全,需要修改时可以先转化为列表

a=(2,3,2,5,1)
b=list(a)
b.append(8)
print (b)

字典(dict)

字典(dict)是键与值一一映射的一种数据结构 {key:value}

a={"one":21,"two":43,"three":54} #三个元素的字典
print (a)
print (list(a.keys())) #返回字典a的所有键
print (list(a.values())) #f返回字典a的所有值
print (a["one"]) #返回特定键对应的值

列表解析:目的是简化代码

a=[1,2,3,5]
b=[each*2 for each in a] #列表解析
print (b)
c={str(key1):value1 for key1,value1 in zip(a,b)} #列表解析
print (c)
d=(each1*2 for each1 in a)
print (d) #返回一个生成器
print (list(d))
[2, 4, 6, 10]
{'1': 2, '2': 4, '3': 6, '5': 10}
<generator object <genexpr> at 0x000001E9917B9E08>
[2, 4, 6, 10]

运算符

算术运算符: 加(+),减(-),乘(*),除(/),乘方(**),求余(%)
比较运算符:等于(==),不等于(!=),大于(>),小于(<),大于等于(>=)等
赋值运算符:=,+=,*=等
逻辑运算符:与(and), 或(or),非(not)
成员运算符:in, not in

条件语句

if (1>2) and (3>2) :
    print ("代码块1")
else:
    print ("代码块2")
   
代码块2
score=70
if 0<=score<60:
    print ("不及格")
elif 60<=score<80:
    print ("良好")
elif 80<=score<=100:
    print ("优秀")
else:
    print ("输入错误,请输入0到100之间的数字!")
良好

循环语句

for i1 in range(1,6,1):
    print (i1)
flag=True
while flag: #第二种循环结构
    print ("It's true!")
    flag=False
print ("It's done!")
It's true!
It's done!
a=[1,3,4,5,86,34]
for each in a:
    if each==max(a):
        print (each)
        break #跳出最近一层的循环
    else:
        print (each)
        continue #终止本轮循环,并进入下轮循环
        print ("我不是最大值!")
1
3
4
5
86

函数(面向过程编程)

def listSquare(inputList): #形参
    """ 
    描述:对列表中数字平方并返回列表
    输入:列表
    输出:平方后的列表
    例子:listSquare([1,2,3])
    """
    b=[each**2 for each in inputList]
    return b #返回值,可返回多个类型数据

print (help(listSquare)) #查看帮助文档
print (listSquare([1,2,3]))
print (listSquare(["a",2,3])) #引发程序异常

异常处理

def listSquare(inputList): #形参
    """ 
    描述:对列表中数字平方并返回列表
    输入:列表
    输出:平方后的列表
    例子:listSquare([1,2,3])
    """
    try:
        b=[each**2 for each in inputList] #可能出现异常的代码块
    except TypeError: 处理,可以指出异常的类型,如TypeError
        print ("请输入数字型列表!")
        return #无正确返回,则返回None
    else: #没有异常,则执行如下代码
        return b #返回值,可返回多个类型数据

print (listSquare(["a",1,2]))
print (listSquare([1,2,3]))

类(面向对象编程的核心)

=属性(数据)+方法(函数)
OOP特征:封装(只提供借口),继承(避免重复造轮子),多态(方法名相   同,具体实现不同)等
以做菜为例:
**属性:**各种原材料与工具
**方法:**切菜,炒菜等具体每一项工作
**封装:**炒菜机(输入原材料,调用每一个方法,出菜,不需要知道细节
**继承:**多功能炒菜机(炒青菜,土豆炖牛肉等菜)
**多态:**子类炒青菜与子类土豆炖牛肉都有切菜这个共同方法,但具体操作不同

import numpy as np
import math
class IMs():#没有继承自任何类,默认继承自基类object
    """
    地震动强度指标计算类
    初始化参数:单列加速度时程acc(g),采样间隔t(s)
    方法:
    PGA()--返回峰值加速度值(g)
    PGV()--返回峰值速度值(cm/s)
    """
    def __init__(self,acc,t): #类的初始化方法,内置特殊方法
        #acc单列加速度时程(g),t时间间隔(s)
        self.acc=acc #self是类的实例化铭牌,在类内起到通信的作用
        self.t=t
        self.num=len(self.acc)

    def PGA(self):
        #返回acc的最大峰值加速度(PGA)(g)
        pga=b=np.fabs(self.acc).max()
        return pga
    
    def __AcctoVelocity (self): #类的私有化方法(前置两下划线)
        #将加速度(g)转换为速度(cm/s)
        vel=[0]
        acc=self.acc
        for i in range(self.num-1):
            velocity=(acc[i]+acc[i+1])*self.t/2*981+vel[-1]
            vel.append(velocity)
        return vel

    def PGV (self):
        #返回Velocity的最大峰值速度(PGV)(cm/s)
        veloc=self.__AcctoVelocity()
        pgv=b=np.fabs(veloc).max()
        return pgv
    
if __name__=='__main__':#测试用
    acc=np.loadtxt("acceleration.txt")#txt数据的加载
    imInstance=IMs(acc,0.01)#强度指标类的实例化
    pga=imInstance.PGA()#调用类中的方法计算PGA
    pgv=imInstance.PGV()
    print ("PGA=",round(pga,3),"g") #保留3位小数
PGA= 1.219 g
    print ("PGV=",round(pgv,3),"cm/s")
PGV= 114.471 cm/s

python学习资料

常用网站:

matplotlib(第三方绘图库)
Numpy(科学计算基本库)
Scipy(集成了数学,科学及工程常用库)
SymPy(符号运算库)
Python教程(官方教程中文版)
Python标准库(Python内置标准库)
wxPython(图形用户界面库)
pypi(大量第三方包库)
Scikit-learn(python机器学习库)
PyOpenGL(基于Python的图形开发库)
stackoverflow(程序员交流答疑网站)
台大李宏毅机器学习(中文机器学习经典课程)
斯坦福吴恩达机器学习(英文机器学习经典课程)
斯坦福吴恩达深度学习(英文深度学习经典课程)
github上python资源 (收集了一些不错的python教程)
github(代码管理及发布网站,可以免费搭建个人博客)
[MCMC](https://twiecki.io/blog/

Related Skills

View on GitHub
GitHub Stars8
CategoryProduct
Updated1y ago
Forks5

Languages

Jupyter Notebook

Security Score

70/100

Audited on May 29, 2024

No findings