python求两数之和的命令_数学建模:科学计算Python2小时-Python基础

这一部分主要面向数模活动中的python基础知识进行讨论

作者

系列文章(科学计算Python2小时)目录:李似:科学计算Python2小时-前言与目录​zhuanlan.zhihu.com8f08f8046b513dc567848ae700b9db6a.png

首先要说明的是,目前常用的Python版本包括Python2和Python3,二者有一些语法和一些包是互不兼容的。部分Python的拓展库已经放弃了对Python2的支持所以本分文档推荐使用Python3作为解释器。当然对于数学建模而言,Python2也是一个可选的方案,但是可能会在使用过程中遇到一些问题,如果你是Python2的忠实拥护者,那么使用Python2来完成数学建模工作,也未尝不可。

接下来我们可能需要理清几个概念解释器,文本编辑器,IDE和包管理工具

解释器

一般我们编写Python源程序时,会得到一个后缀名为py的文件,当你想要运行这份代码的时候,操作系统是不能够认识py这份文件怎怎么样工作的,这时就需要一个解释器,将这份文件翻译成机器可以识别的机器码。

通常我们在网络上看到一些教程说,我们可以直接去Python的官方网站上下载某一个版本的Python,并将它们安装在我们自己的电脑上,那么这里我们所安装的Python其实就是解释器。

如果说的更明确一些,他应该被称为CPython解释器,一个用C语言写的Python解释器,当我们在命令行中运行下面这行代码的时候,其实就是它在执行作用

python demo.py

IPython是另外一种Python解释器,与其说它跟CPython上有什么不同,还不如说它只是在CPython的交互方式上进行了一些改进,IPython使用代码块的方式展现和运行代码。

CPython使用>>>做命令提示符,而IPython使用IN[num]作为命令提示符,从这里可以就可以很容易的把二者分辨开.

比如在命令行中进行Python或者在pycharm这类软件中运行Python使用的都是CPython解释器

而在jupyter notebook或者spyder这样的软件中运行,用的都是IPython解释器

二者并没有什么明显的区别,当我们已经完成了功能的测试时,我们可以使用CPython来进行大规模的计算,到我们测试功能时,我们可以使用IPython来进行交互式的代码书写。如果要进行一些展示性的或者教程性的代码书写的时候,使用IPython一般是比较友好的一种展示方式。

文本编辑器

就像电脑中最常用的记事本软件一样,文本编辑器其实就就是用来敲代码的一个界面而已但是有一些文本编辑器,集成了代码补全、代码高亮、缩管理之类的插件,所以在代码的编写中会用的比较顺手。

比如记事本,Vim,VSCode都是常用的文本编辑器

通常使用纯文本编辑器编辑好的程序,需要在命令行中调用对应的文件来运行它

IDE

集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,使用集成开发环境的好处在于你可以在一处完成代码测试编写到运行的所有步骤,通常在侧边栏它会有文件夹的管理,在占程序空间的大块的区域,会有代码编写的位置,一些菜单栏会提供给你运行程序和显示程序运行结果的按键和区域。

甚至相当一部分IDE还会贴心的给你安装好Python的运行环境。(我说的就是Anaconda)

诸如 Anaconda,pycharm,spyder,VS 都属于集成开发环境

包管理工具

原生的Python其实并没有什么特别强大的功能,许多常用的科学计算软件包或者绘图软件包比如我们熟知的numpy或者matplotlib,都是独立出来的程序库,那怎么样把他们导入到我们的程序中,并且为我们所用呢?这时候就需要包管理工具,常用的包管理工具有pip和conda

一般情况下再安装好Python的解释器之后,pip就是默认的包管理工具,你可以在命令行中使用pip install来安装某些你想要的包。这时候 Pip会从网络上把对应的软件包下载下来,并且安装到你的电脑上,但是Python默认的下载源在国外,所以下载速度会比较慢,这里推荐使用清华大学的镜像源,来下载你所需要的软件包。

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple [软件包名字]

许多情况下,当你iimport某个包时它会报错,那么问题就在于这个包你根本没有安装和下载过,那么使用上面这一条代码在命令行中运行,基本就可以解决问题。

Hello world

等你完成安装Python环境以及相关软件的一些工作之后,就可以开始正式的踏入Python的世界了,那么其实任何编程语言的第1步都是一样的,打印出hello world。尝试运行以下这行代码

print("Hello wold")

Hello wold

那么接下来将这个部分,我们将开始进行Python科学计算的一些基本常识的了解

在Python中行注释的用法是在当前行最前面加一个井号 #,而多行数式是用三个单引号或者三个双引号将代码块框起来

而在大部分的文本编辑器或者IDE中如果你想在很多行前面都加一个井号来做单行注释,那么对应的快捷键是Ctrl+/,(这个超级好用)

# 这是一行注释

# 这也是一行注释

# 这还是一行注释

这是一行忘加的注释符号的注释

那么就可以清晰的看出来,我们引入了一个错误,他表示这一个变量没有被定义.

在代码的编写过程中,你可能会遇到很多这样类似的问题,善用搜索引擎之前需要先读一下他到底是说了些什么,就我们这点英语水平,还是能读懂他的报错的很多报错都已经将问题出现原因讲得很清晰了。

运算与数据类型

在Python中一个变量,如果你想要使用它,其实你并不用像C一样首先去定义,直接用它来计算就好了。

数据类型

a = 2

b = 3

c = 4

str_ = "a,b,c"

strWithFormat = "{},{},{}".format(a,b,c)

list_ = [a,b,c]

tuple_ = (a,b,c)

map_ = {"a":a,"b":b,"c":c}

print("字符串:\t",str_)

print("带占位符的字符串:\t",strWithFormat)

print("列表:\t",list_)

print("元组:\t",tuple_)

print("字典:\t",map_)

#更多关于数据类型:Python 变量类型 | 菜鸟教程

字符串: a,b,c

带占位符的字符串: 2,3,4

列表: [2, 3, 4]

元组: (2, 3, 4)

字典: {'a': 2, 'b': 3, 'c': 4}

运算

# 加减乘除

print(a+b)

print(a-b)

print(a*b)

print(a/b)

# 对结果四舍五入

print(round(a/b))

# 取余

print(a%b)

#更多关于运算:Python3 运算符 | 菜鸟教程

5

-1

6

0.6666666666666666

1

2

部分数学函数

判断与循环

balls = ['white','white','white','otherColor','white','white','otherColor','otherColor','otherColor','white','white','otherColor']

numOfWhiteColorBalls = 0

numOfOtherColorBalls = 0

for ball in balls:

if ball == 'white':

numOfWhiteColorBalls += 1

else :

numOfOtherColorBalls += 1

if numOfWhiteColorBalls == 0:

print("There has no white ball in all {} balls".format(numOfWhiteColorBalls+numOfOtherColorBalls))

elif numOfWhiteColorBalls == 1:

print("There is 1 white ball in all {} balls".format(numOfWhiteColorBalls+numOfOtherColorBalls))

else :

print("There are {} white balls in all {} balls".format(numOfWhiteColorBalls,numOfWhiteColorBalls+numOfOtherColorBalls))

#更多关于判断和循环语句:

# Python 条件语句 | 菜鸟教程

# Python 循环语句 | 菜鸟教程

There are 7 white balls in all 12 balls

这段代码运用到了相当多的知识点和需要讨论的部分。

首先你所有的变量都应该有意义,可以使用下划线命名法或者驼峰命名法来对你的变量进行命名。

其次for循环可以对相当多的数据类型进行迭代,其中列表就是一个有迭代能力的数据类型,代码中ball在循环中指的是每一个球的颜色

在Python中没有像C语言中i++这样的变量自增方法,你可以使用+= 1代替它

Python中没有像C语言中那样使用分号来作为每一行代码的结尾,但是Python对于缩进的要求相当严格,像很多初学者常犯的问题都是出现在缩进上面

下面这一幅动图是在循环和判断中的一个流程

函数

函数指的是一段可以执行特定功能的代码段,一般又称为子程序。函数存在的意义是可以将大量的重复性工作打包成一个固定的流程,当你给这个流程一些符合条件的输入时,在这个程序里面进行计算之后返回给你计算的结果。

函数之间可以相互调用,这个特性也促成了一些算法的实现,比如递归。

那在数学建模这种使用程序代码来帮助我们运算的应用背景下,一般都是我们有一系列的数据,需要经过相同或者类似的处理,那这个时候我们就把他们一个一个送进写好的函数中,再去接收他返回回来的输出,这样就可以起到批次计算的效果。

接下来我们把上一个例子用函数来重新写一遍。

def countSelectColorBalls(balls,selectColor):

numOfSelectColorBalls = 0

numOfOtherColorBalls = 0

for ball in balls:

if ball == selectColor:

numOfSelectColorBalls += 1

else :

numOfOtherColorBalls += 1

if numOfSelectColorBalls == 0:

print("There has no {} ball in all {} balls".format(selectColor,numOfSelectColorBalls+numOfOtherColorBalls))

elif numOfSelectColorBalls == 1:

print("There is 1 {} ball in all {} balls".format(selectColor,numOfSelectColorBalls+numOfOtherColorBalls))

else :

print("There are {} {} balls in all {} balls".format(numOfSelectColorBalls,selectColor,numOfSelectColorBalls+numOfOtherColorBalls))

return {selectColor:numOfSelectColorBalls}

balls = ['white','white','white','yellow','white','white','yellow','red','yellow','white','red','red','blue']

ballColorList = []

ballColorList.append(countSelectColorBalls(balls,"white"))

ballColorList.append(countSelectColorBalls(balls,"black"))

ballColorList.append(countSelectColorBalls(balls,"yellow"))

ballColorList.append(countSelectColorBalls(balls,"red"))

ballColorList.append(countSelectColorBalls(balls,"blue"))

print(ballColorList)

#更多关于函数:

# https://www.runoob.com/python3/python3-function.html

There are 6 white balls in all 13 balls There has no black ball in all 13 balls There are 3 yellow balls in all 13 balls There are 3 red balls in all 13 balls There is 1 blue ball in all 13 balls [{'white': 6}, {'black': 0}, {'yellow': 3}, {'red': 3}, {'blue': 1}]

在这个例子中,我们把主要的运算部分包装成了一个叫做countSelectColorBalls的函数,这个函数有两个输入参数,返回值是颜色和对应该颜色的球的个数,其外还打印了一些输出在屏幕上.两个输入参数分别是balls和selectColor,代表了球的列表和被选择的颜色。返回值是一个以所选颜色为key,以所选颜色球的个数为value的字典,在主程序之外使用一个列表接收返回值,append指的是将参数接到列表末端。

之后我们将上一个例子中对白球的计数器换成了对所选颜色的球的计数器,使它对其他的颜色也同样具有适配性。

这里我们看到仍然有几行代码是高度重复的,那么我们可以用下面的例子来替代它。

ballColorList = []

for color in set(balls):

ballColorList.append(countSelectColorBalls(balls,color))

print(ballColorList)

There are 3 yellow balls in all 13 balls There are 6 white balls in all 13 balls There are 3 red balls in all 13 balls There is 1 blue ball in all 13 balls [{'yellow': 3}, {'white': 6}, {'red': 3}, {'blue': 1}]

set是一种叫做集合的数据类型,它的特点就是集合内的元素是不重复的.那么对一个列表取集合,就能够得到里面不重复的所有元素。在将每一个颜色作为函数的输入值进行查询和运算。就能够得到相同的效果。

日期和时间 这里有一个计算机中非常常见的关于时间的概念叫做时间戳,它指的是从1970年1月1日零时开始的时间秒数或者毫秒数.

import time # 引入time模块

ticks = time.time()

print("当前时间戳为:", ticks)

#更多关于日期和时间:

# https://www.runoob.com/python3/python3-date-time.html

当前时间戳为: 1611793367.7136235

时间戳基本上就是所有关于时间的运算的基础,包括计算时间差值转换成日期,或者转换成其他什么别的格式。

当然在Python中还包括了一些其他关于时间的操作,不用我们自己从时间戳开始转换。

这里我们只做一些比较基本的示例,更多的更具体的使用方法,可以去参考其他的教程。

为了方便后面的运算,我们先上两个函数。

# 输出指定范围内的所有质数算法1

def primeList_1(numMax):

primes = []

for num in range(2,numMax):

for m in range(2,num):

if num % m == 0:

break

else:

primes.append(num)

return primes

# 输出指定范围内的所有质数算法2

def primeList_2(numMax):

primes = []

numsList = []

for i in range(numMax):

numsList.append(True)

for num in range(2,numMax):

addSum = num + num

while addSum < numMax :

numsList[addSum] = False

addSum += num

for i in range(2,numMax):

if numsList[i]:

primes.append(i)

return primes

# 计算程序运行时间

import time

ticks1 = time.time()

primeList_1(50000)

ticks2 = time.time()

print("时间差为:", ticks2-ticks1)

ticks1 = time.time()

primeList_2(50000)

ticks2 = time.time()

print("时间差为:", ticks2-ticks1)

时间差为: 6.9387428760528564 时间差为: 0.04651689529418945

其实这个时间差计算还挺简单的,主要就是在代码块前面打一个时间戳,在代码块后面打一个时间戳把两个时间戳做一下减法就可以了。

那么这里额外还要再说几个比较有价值的点。

首先看函数primeList_1定义的第6行和第9行,这是一个for else结构 else在前面的for中break生效时会生效。

再有就是当我们写程序时需要考虑城市的时间复杂度的问题,我们能看到上面的一端程序,第1种算法执行6-7秒,而第2种方法只需要执行0.04-0.06秒,效率差了100多倍,这就是一个很普通的计算质数的两种方法,在其他的问题中也有类似的优化途径,如果当你的循环达到了两层或者三级以后,你就可能需要用一些方法来进行优化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

空白世界地图打印版_洪恩识字卡1300字十字帖+绘本,可打印成册

洪恩识字卡电子版资源&#xff0c;共1300字&#xff0c;无拼音和升级版带拼音都有&#xff0c;可直接打印&#xff0c;可分享免费送我在app中无意洪恩识字这个宝藏app&#xff0c;识字是想着孩子能早日实现自由阅读&#xff0c;可是一直对着电子设备伤眼晴&#xff0c;于是找了…

操作系统实验读者写者程序源码_SAST Weekly | STM32F103系列开发板移植华为LiteOS操作系统...

SAST weekly 是由电子工程系学生科协推出的科技系列推送&#xff0c;内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面&#xff0c;帮助同学们增长姿势&#xff0c;开拓眼界&#xff0c;每周更新&#xff0c;欢迎关注&#xff01;欢迎愿意分享知识的同…

java 远程调试spark_spark开启远程调试

一.集群环境配置#调试Master&#xff0c;在master节点的spark-env.sh中添加SPARK_MASTER_OPTS变量export SPARK_MASTER_OPTS"-Xdebug -Xrunjdwp:transportdt_socket,servery,suspendy,address10000"#调试Worker&#xff0c;在worker节点的spark-env.sh中添加SPARK_WO…

web中间件_常见web中间件拿shell

1.weblogic后台页面&#xff1a;(http为7001&#xff0c;https为7002)Google关键字&#xff1a;WebLogic Server AdministrationConsole inurl:console默认的用户名密码1、用户名密码均为&#xff1a;weblogic2、用户名密码均为&#xff1a;system3、用户名密码均为&#xff1a…

java定义抽象类abarea_详解 抽象类

本人在这篇博文中要讲解的知识点&#xff0c;和本人之前的一篇博文有所关联。因为&#xff0c;“抽象类” 是按照 “自下而上” 的顺序来编写所需的类&#xff0c;而在本人之前的博文《详解 继承(上)—— 工具的抽象与分层》中讲到的 继承 则与之相反&#xff0c;按照 “自上而…

word表格图片自动适应表格大小_Excel应用实践20:使用Excel中的数据自动填写Word表格...

学习Excel技术&#xff0c;关注微信公众号&#xff1a;excelperfect我在Excel工作表中存放着数据&#xff0c;如下图1所示。图1我想将这些数据逐行自动输入到Word文档的表格中并分别自动保存&#xff0c;Word文档表格如下图2所示&#xff0c;文档名为“datafromexcel.docx”。图…

dnspod java_使用dnspod遭遇的奇特问题以及背后的原因与临时解决方法

由于园子里有不少用户在使用dnspod&#xff0c;我们觉得有必要将这两天blogjava.net域名在dsnpod遇到的奇特问题分享一下&#xff0c;以免再有人踩着这个坑。12月11日&#xff0c;我们登录到dnspod的后台时&#xff0c;大吃一惊&#xff0c;blogjava.net这个域名竟然消失了。联…

cad转dxf格式文件太大_想知道DWG、DWT、DWS和DXF是什么吗?从了解4种CAD图形格式开始吧...

原创&#xff1a;就说我在开发区常用图形文件格式盘点CAD中的图形文件格式共9种&#xff0c;其扩展名分别为&#xff1a;❶DWG – 图形或块文件❷DWT – 图形样板文件❸DWS – 图形标准文件❹DXF – 图形交换文件(ASCII 或二进制)❺DST – 图形集或图纸集文件(SHEETSET 命令)❻…

vue登录如何存储cookie_vue项目实现表单登录页保存账号和密码到cookie功能

实现功能&#xff1a;1.一周内自动登录勾选时&#xff0c;将账号和密码保存到cookie&#xff0c;下次登陆自动显示到表单内2.点击忘记密码则清空之前保存到cookie的值&#xff0c;下次登陆需要手动输入次要的就不说了直接上主要的代码html部分登陆帮助一周内自动登录忘记密码&a…

usb协议规范_USB连接标准接口简述发布

制程工艺材料类USB为Universal Series Bus (通用序列总线)的缩写,是一种串行通讯协议(sereal protocol),它负责实体层和链接层的建立。它可以支持慢速的数据传输(如鼠标、键盘、游戏摇杆等)也支持快速的数字压缩影音信息。普通的USB2.0版本以下有两对线&#xff0c;分别用来传输…

java urlencode php_PHP如何使用urlencode()函数进行url编码?(代码示例)

urlencode()函数是PHP中的一个内置函数&#xff0c;用于对url进行编码。下面本篇文章就来给大家介绍一些urlencode()函数的用法&#xff0c;让大家了解urlencode()函数是如何对url进行编码的&#xff0c;希望对大家有所帮助。【视频教程推荐&#xff1a;PHP教程】urlencode()函…

光电转换模块_光模块:PIN光电二极管和APD光电二极管

在前面的文章中我们介绍了光模块的基本结构&#xff0c;包括TOSA、ROSA以及BOSA。今天我们接着介绍ROSA光器件的光电探测器。光模块接收端能正确识别信号并完成光电转换&#xff0c;就需要光电探测器&#xff0c;光电探测器通过检测出照射在其上面的光功率&#xff0c;从而并完…

java如何添加自定义的图片_java代码将图片加上自定义水印 -4

java代码将图片加上自定义水印&#xff0c;然后生成了新的图片import java.awt.Color;import java.awt.Font;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import javax.image…

vba 当前文件名_值得学习和珍藏的VBA常用编程代码语句

分享成果&#xff0c;随喜真能量。大家好&#xff0c;今天继续和大家分享VBA编程中常用的过程代码。过程代码在这里讲解的语句非常简单单一&#xff0c;简单的语句组合起来就是一个复杂的过程&#xff0c;我们要认真掌握这些简单的过程&#xff0c;为我们复杂的工程服务。这也是…

java上传csv错误信息_java处理csv文件上传示例详解

前言&#xff1a;示例只是做了一个最最基础的上传csv的示例&#xff0c;如果要引用到代码中去&#xff0c;还需要根据自己的业务自行添加一些逻辑处理。ReadCsvUtil工具类package com.hanfengyeqiao.gjb.utils;import java.io.*;import java.util.*;/*** csv工具类*/public cla…

暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀

前言DURGOD杜伽的机械键盘一直以简约的外形和优秀的手感而备受好评。笔者之前用过杜伽的K310、K320两个系列的多把键盘&#xff0c;对其非常熟悉&#xff0c;外形简约大方&#xff0c;手感、灯效也比较满意。正因如此&#xff0c;这次刚刚入手了一把杜伽K310 RGB樱桃红轴&#…

vim 显示行号_Vim给文件加行号,这通惊为天人的操作没sei了!文末天书慎点

引言一般 Vim 使用 :set number 命令&#xff0c;在编辑器显示行号。本文展示了如何将行号插入到正文中&#xff0c;或者只插入到段落中。此外&#xff0c;还提供了打印行号的选项(Vim 可以打印带有数字的行&#xff0c;并且不需要文件有数字)。Vim可以使用 :s 命令在每行之前插…

java 获取对象方法有哪些方法有哪些方法有哪些_Java中创建String 对象的方法有哪些...

Java中创建String 对象的方法有哪些发布时间&#xff1a;2020-11-25 16:45:30来源&#xff1a;亿速云阅读&#xff1a;71作者&#xff1a;Leah这篇文章将为大家详细讲解有关Java中创建String 对象的方法有哪些&#xff0c;文章内容质量较高&#xff0c;因此小编分享给大家做个参…

vb中怎么使图片适应框的大小_叮!VB考前练习了解一下?

1、Visual Basic窗体设计器的主要功能是(C )。A) 画图B) 编写源程序代码C) 建立用户界面D) 显示文字解析&#xff1a;Visual Basic窗体设计器简称窗体(Form)&#xff0c;是应用程序最终面向用户的窗口&#xff0c;它对应于应用程序的运行结果。各种图形、图像、数据等都是…

苹果切换输入法_日语输入法哪个好

在初学日语的时候经常会遇到一些不认识的词&#xff0c;想查一下这个词是什么意思&#xff0c;应该怎么输入呢?尝试过许多软件之后&#xff0c;テツ为大家总结了一些认为比较好用的输入法百度IME输入法。下载安装后的切换非常简单&#xff0c;在右下角输入法处切换至JP日语即可…