LearnPythonByApplication
Introducing the basic aspects of Python and its application in Civil Engineering
Install / Use
/learn @Junjun1guo/LearnPythonByApplicationREADME
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
区块引用3
代码块
``` Python
print ("Hello world!")
```
print ("Hello world!")
地址与图片链接
网址链接:[python官网](https://www.python.org)
图片链接:
表格
采用|分割单元格,采用----分割标题栏与单元格。单元格的对齐采用:,如左对齐(:----)
| 左对齐 | 右对齐 | 居中对齐 |
| :------|------:| :-----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
| 左对齐 | 右对齐 | 居中对齐 |
| :-----|----:| :----: |
| 单元格 | 单元格 | 单元格 |
| 单元格 | 单元格 | 单元格 |
| 左对齐 | 右对齐 | 居中对齐 | | :------|------:| :-----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 | | 左对齐 | 右对齐 | 居中对齐 | | :-----|----:| :----: | | 单元格 | 单元格 | 单元格 | | 单元格 | 单元格 | 单元格 |
Python语言
python语言及其特点
python语言的发展
Guido von Rossum 1989年开发了python编译器。python语言介于C语言与脚本语言之间,是一种“胶水”语言。python语言的宗旨就是“能用胶水解决的问题,坚决不造轮子”。发展的版本有2.x和3.x,python官网

python语言下载及安装
- 在下载页面选择相应系统对应的版本进行下载
2. 安装python,可以选择相应的安装目录,添加python到系统路径

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

python常用编辑器介绍

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
ai-cmo
Collection of my Agent Skills and books.
next
A beautifully designed, floating Pomodoro timer that respects your workspace.
product-manager-skills
38PM skill for Claude Code, Codex, Cursor, and Windsurf: diagnose SaaS metrics, critique PRDs, plan roadmaps, run discovery, and coach PM career transitions.
devplan-mcp-server
3MCP server for generating development plans, project roadmaps, and task breakdowns for Claude Code. Turn project ideas into paint-by-numbers implementation plans.

