百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python数字编程 第一章 第三、四节

off999 2024-10-11 14:02 41 浏览 0 评论

第三节 不同类型的数字

刚刚的计算过程中,我们看到有两类数字,整数(int,称为整型)和小数(float,称为浮点型),不论对于什么数字,人们一眼即可看出数字的类型,那在程序中应该如何看出来呢?答案揭晓:使用type()函数即可进行查看,如


 >>> type(3)
 <class 'int'>
 >>> type(3.0)
 <class 'float'>

此处要理解关于数字的数据类型,整型(int),浮点型(float),比如3和3.0,虽然我们知道这两个数字是等价的,但是Python会对这两种数进行不同的处理,因为在Python看来他们他们是两种数。

并且我们要编写的一些程序也只有输入是整数或者小数才能够去正常工作。

但是,Python提供了内置函数,可以将两种数进行转换

首先,浮点数转成整数,使用int()函数,仅保留小数部分的整数


 >>> int(3.8)
 3
 >>> int(3.0)
 3

整数转成浮点数,使用float()函数,在整数后面添加小数点,转成浮点数


 >>> float(3)
 3.0

1.3.1 分数的操作

Python可以操作分数,但要借助Python的fractions模块。模块可以认为是他人编写的程序,但是我们可以在自己的程序中使用。模块可以是Python标准库的一部分,也可以从第三方位置分发,后一种情况下需要安装该模块才能使用。

fractions模块是标准库的一部分,也就是不需要再主动安装。他在其中定义了一个类,这是用来在程序中输入分数的。只需要使用import导入即可,即告诉Python我们要使用fractions里面的类Fraction,例子如下,创建一个新的标签f,f指代分数3/4


 >>> from fractions import Fraction  # ①
 >>> f = Fraction(3, 4)              # ②
 >>> f                               # ③
 Fraction(3, 4)

①:首先从fractions模块里面导入Fraction类

②:传递分子分母两个参数到Fraction类创建一个Fraction对象,这样就为3/4创建了一个Fraction对象

③:此时f为一个Fraction对象,输出f时,Python会以Fraction(分子,坟分母)的形式显示

那我们就可以把这个对象当作是一个分数来进行数学运算,如下


 >>> Fraction(3, 4) + 1 + 1.5
 3.25

注意:表达式中有浮点数,上述例子中为1.5,运算结果返回浮点数

当表达式中只有分数和整数时,返回结果为分数形式,即使分母为1,例子如下


 >>> Fraction(1, 4) * 2 + Fracction(1/2)
 Fraction(1, 1)

1.3.2 复数

上述我们看到的都是实数,Python还支持复数,其中虚数部分使用字母j或J来表示(这与数学中使用i来表示不同,但类似),如,复数2+3i可以表示为2+3j


 >>> a = 2 + 3j
 >>>type(a)
 <class 'complex'>

我们依然可以使用type()函数来返回复数的类型,可以看到是<class 'complex'>

还可以使用complex()函数来定义一个复数,传入的参数为这个复数的实部和虚部,返回一个复数


 a = complex(2, 3)
 a
 (2 + 3j)

我们可以用与实数相同的方式对复数进行加减运算


 >>> b = 3 + 3j
 >>> a + b
 (5 + 6j)
 >>> a - b
 (-1 + 0j)

复数的乘法和除法也可以进行类似操作,首先我们来复习一下复数的乘法和除法计算方法


 >>> a * b
 (-3 + 15j)
 >>> a / b
 (0.83333333334 + 0.16666666666j)        

取模(%)和向下取整(//)操作对复数无效

可以使用real和imag属性来提取复数的实部和虚部,可以看到复数的实部和虚部都是浮点数。


 >>> z = 2 +3j
 >>>z.real
 2.0
 z.imag
 3.0

可以通过conjugate()函数来获得某个复数的共轭复数

共轭复数:两个复数实部相,虚部互为相反数,如2+3j 和 2 - 3j


 >>> z.conjugate()
 (2 -3j)

借助复数的实部和虚部可以计算复数的模

复数的模计算公式:


 >>> (z.real ** 2 + z.imag ** 2) ** 0.5
 3.605551275463989   

当然,还有更直接的办法,abs()函数,当传入的参数为实数时,计算其绝对值,传入参数为复数时,计算复数的模


 >>> abs(z)
 3.605551275463989

第四节 获取用户输入

当编写程序时,经常使用input()函数来接收用户输入,我们它我们可以编写要求用户输入数字的程序,然后对数字执行特定的操作,例如


 >>> a = input()     # ①
 1                   # ②

在①处,调用input()函数,此时系统会暂停运行,等待用户输入

在②处,用户输入,按Enter键,输入的数字将存储在a中

我们打印输出a


 >>> a
 '1'

此处可以看到输出的1是带着引号的,input()函数返回的都是字符串,字符串是两个引号之间的任何一组字符,python中可以使用单引号或者双引号来定义字符串

值得注意的是,即使这个字符串是纯数字,Python也不会将其视为数字,这时候我们需要将其进行转换,只有字符串仅包含数字才能进行转换,可以使用int()或者float()函数


 >>> a = '1'
 >>> int(a) + 1
 2
 >>> float(a) + 1
 2.0

此处的int()和float()函数与之前的数据类型转换有所不同,之前传入的参数为数字,而现在为字符串。必须说明一下,int()只能转换整数型字符串,如果传入的是浮点型字符串,就会报错。例如


 >>> int('2.0')
 Traceback (most recent call last):
   File "<pyshell#0>", line 1, in <module>
     int('2.0')
 ValueError: invalid literal for int() with base 10: '2.0'

同样,当你输入一个分数如3/4时,Python不能将其转化为等价的整数或者浮点数,再次引发ValueError异常:


 >>> a = float(input())
 3/4
 Traceback (most recent call last):
   File "<pyshell#3>", line 1, in <module>
     a = float(input())
 ValueError: could not convert string to float: '3/4'

通常我们放在try...except块中来执行转换,提醒用户无效输入

1.4.1 处理异常和无效输入

try...except基本思想:在try...except程序块中执行一行或者多行代码时,如果程序发生错误,并不会立即停止,而是输出一个Traceback,然后,程序的执行会转到except后的块,我们可以继续一些适当操作,比如输出错误信息或者尝试其他操作等等,如


 >>> try:
     a = float(input('Enter a number: '))
 except ValueError:
     print("You entered an invalid number")

上述代码中指定了需要处理的错误类型,如ValueError。

现在给出一个无效输入,如下所示


 Enter a number: 3/4
 You entered an invalid number

你也可以使用intput()函数来输出一些提示信息,告诉用户需要输入什么样的数据


 >>> a = input("Input a integer: ")

用户看到提示信息后输入


 Input a integer: 1

本课程学习的内容中有许多程序会要求魱输入一个数字,所以必须确保在数字在使用之前已经做了适当的转换,我们可以在单个语句中组合输入函数和转换函数


 >>> a = int(input())
 1
 >>> a + 1
 2

此处,依然不能输入浮点型,不然会报ValueError类型异常

假设我们需要输入的数字为整数,此时我们可以像之前那样做一个ValueError异常捕获,这样一来,程序将会捕获浮点数,这些浮点数对于只针对整数的程序没有作用。然而,也需要标记像1.0,2.0这样的数字,他们的作用等同于整数,它们也可以作为整数程序的正确输入。

为了解决这个问题,我们可以使用is_integer()函数来过滤掉那些小数点后面还带有有效数字的浮点数,留下整数或等同于整数的浮点数(只适用于float数据,不适用以整数输入的数字)


 >>> 1.1.is_integer()
 False
 >>> 1.0.in_integer()
 True

通过上述例子,我们可以看到,is_integer()函数可以过滤掉非整数输入,同时保留等价于整数的浮点数,如1.0,稍后会将这种方法应用于更大的程序

1.4.2 将分数和复数作为输入

事实上,对于分数的接受操作我们之前已经有所接触了。那就是将一个分数使用Fraction类来转换成Fraction对象


 >>> a = Fraction(input('Enter a fraction: '))
 Enter a fraction: 3/4
 >>> a
 Fraction(3, 4)

尝试输入一个分数如:3/0


 >>> a = Fraction(input('Enter a fraction: '))
 Enter a fraction: 3/0
 Traceback (most recent call last):
   File "<pyshell#18>", line 1, in <module>
     a = Fraction(input('Enter a fraction: '))
   File "D:\User\Python\lib\fractions.py", line 178, in __new__
     raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
 ZeroDivisionError: Fraction(3, 0)

ZeroDivisionError异常信息告诉我们,分母为0的分数无效,所以我们一个正常的程序需要始终取捕获此类异常,可以这样做:


 >>> try:
     a = Fraction(input('Enter a fraction: '))
 except ZeroDivisionError:
     print('Invalid fraction')
     
 Enter a fraction: 3/0
 Invalid fraction

此时对于分母为0的这种无效输入我们就可以捕获了,输出Invalid fraction信息。

类似,对于复数而言,complex()函数可以将一个如‘2+3j’字符串转化为复数


 >>> z = complex(input('Enter a complex number: '))
 Enter a complex number: 2+3j
 >>> z
 (2+3j)

此处复数加号两边如果加了空格,就会报错,


 >>> z = complex(input('Enter a complex number: '))
 Enter a complex number: 2 + 3j
 Traceback (most recent call last):
   File "<pyshell#21>", line 1, in <module>
     z = complex(input('Enter a complex number: '))
 ValueError: complex() arg is a malformed string

可以看出,它是一个ValueError异常,对于这类异常捕获刚刚已经说过了,只需要except 后指定异常类型即可,我们将字符串转换为复数时,最好捕获此类异常

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: