5.1. Python基础

SudoSim 采用Python语言进行建模,这给用户提供了非常自由的建模环境。基于Python语言建模,用户不但可以高效编写建模脚本,还可以无缝调用大量已有的Python包。

Python是缩进敏感型程序,缩进帮助Python进行作用域的划分。’#’ 符号用于Python代码的单行注释。下面的代码给出了Python的一些基本的语法结构。

5.1.1. 导入包

导入math库,math库包含了一些基本的数学运算工具

1import math

5.1.2. 定义一些数

数的基本类型主要包括整型、浮点(小数)。但在Python中,我们不需要先声明变量的类型,而是直接对一个变量赋值即完成定义。Python中的变量没有严格的类型限制,即便一个变量实现赋值了一个整数,你也可以重新给这个变量赋值小数或字符串甚至其它对象。数之间的操作符常用的主要有加(+)、减(-)、乘(*)、除(/)、指数(**)。

1a = 2 # 整型
2b = 5
3c = 2.0 # 浮点型
4d = a/b # d是整型
5e = c/b # e是浮点型
6print(a, d, e) # 打印a, d, e的值到命令行

5.1.3. 定义一些字符串

1a = 'abc' # 我们可以赋值任意类型的值到任意类型的变量当中
2b = "this is a 'Python' script."
3print(a, b)

5.1.4. 定义列表,元组以及字典

用于Python基本数据的存储

1c = [1,2,3,'ss'] # 列表
2d = (1,2,3,'ss') # 元组
3c[0] = 5 # 改变列表c的第一个元素,索引是从0开始计算的
4d[0] = 5 # 报错!与列表不同,元组在初始化后是不可以被修改的
5d={1:22,2:33,4:'ssss','w':123} #字典:其中1, 2, 4, 'w'属于键,而22, 33, 'ssss'和123属于键对应的值
6print(d[1], d[4], d['w'])

定义空的列表和字典用于稍后的数据存储

1c = list() # an empty list
2d = dict() # an empty dict

5.1.5. 测试表达式

 1if 1>2:
 2    print("1 is greater than 2, really?")
 3else:
 4    if 2 in [1, 2, 3]: # 如果2在列表[1, 2, 3]中
 5        #此处我们开始一个for循环
 6        for i in range(5): # 等价于 for i in [0, 1, 2, 3, 4]
 7            print(i) # 用于打印显示for循环的i值
 8            # 在c和d中追加一些数据
 9            c.append(math.cos(i)*10 + 2.0**5) # 追加 10*cos(i) + 2.0^5 的值到列表 c,这里cos来自math库。
10            if i not in d.keys(): # 如果i不属于d字典的键
11                d[i] = str(i)

5.1.6. 函数

我们可以使用函数对我们的命令进行封装

1def GoodJob(input_number, keyword1 = 1, keyword2 = True):
2    if keyword2: # 等价于 if keyword2 == True
3        print(f"the input number is {input}")
4    input_number += keyword1 # 这里 input_number 的值被更新为 input_number + keyword1
5    return input_number # 返回 input_number 的值
6
7# 运行函数
8a = GoodJob(2) # a = 3, 打印信息将会显示 'the input number is 3'
9b = GoodJob(3, keyword1 = 5, keyword2 = False) # b = 8, 这里函数将不会打印任何信息

恭喜你!你现在已经掌握了运行数值模拟所必要的全部知识!

但也许这对于好学的你来说还不够!你可能会好奇更多酷炫的技术,比如如何进行文件的读写操作,如何利用Python进行面向对象编程。别急,我们后续教程会逐步为你呈现!