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

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

off999 2024-10-11 14:02 35 浏览 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 后指定异常类型即可,我们将字符串转换为复数时,最好捕获此类异常

相关推荐

如何下载youtube视频(如何下载youtube视频2160p)

这个可以在应用宝中下载,就是在手机上下载一个应用宝,然后在搜索栏里输入软件名字,点击搜索,根据提示下载就可以了。将视频下载到电脑上有几种途径,如果是网络上的,可以下载的视频会设置有下载标记或按钮,点...

深度国际2025最新一期视频(今日关注最新一期的)

1、就算不快乐也不要皱眉,因为你永远不知道谁会爱上你的笑容。2、踏入社会的时候,不要什么话都跟别人讲,你说的是心里话,别人听的是笑话。3、该扔的就扔,该放弃就放弃,从今天起,余生做个俗人,以自己最好的...

华为最新系统版本(华为最新系统版本微信)

鸿蒙3.0。鸿蒙最新版本是3.0系统,相比2.0有着全面提升。尤其是在交互设计,多设备互联互通,流畅度性能,安全属性,用户关怀等方面升级幅度最大,而且升级并非是简单的更新换代,修复了不少鸿蒙2.0版本...

不知道原机主id密码如何激活

答案:如果忘记ID账号和密码,可以尝试以下方法激活手机:1.使用备用邮箱或手机号码:如果您已将备用邮箱或手机号码与您的ID账号绑定,可以使用备用邮箱或手机号码进行身份验证以激活手机。2.联系客服:...

win10安装需要输入产品密钥(win10安装程序要输入产品密匙)

可按照如下方式解决:1.右击桌面左下角的“Windows”按钮,然后点击“命令提示符”项。2.接下来再输入以下命令:slmgr/ipkW269N-WFGWX-YVC9B-4J6C9-T83GX按回...

手机秒变电脑摄像头(手机秒变电脑摄像头怎么设置)

可以的我用过,但是要你手机支持啊国产的山寨机很多都支持这个功能:支持这个功能的手机摄像头有两种工作状态:手机摄像状态和USB连接状态,在手机设置里把手机的摄像头改为USB连接状态,直接插到电脑上就可以...

苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
  • 苹果ipad充不上电是什么原因
bios没有advanced选项(bios没有advanced选项卡)

华硕主板可开机后点击ESC键或F12键选择AdvancedBIOSFeatures项:你说的只很少几项可以修改,可能是分别设置了CMOS密码和开机密码。而你进入COMS时输的的开机密码!要输入C...

路由器选购技巧(路由器选购技巧大全)

第一,WI-FI协议;我们在购买路由器的时候需要仔细注意分辨WI-FI协议是厂家的噱头还是真正实用的,对上网体验有帮助的功能。目前的Wi-Fi协议已经发展到第6代,既厂商宣传的Wi-Fi...

联想电脑摄像头驱动怎么安装
  • 联想电脑摄像头驱动怎么安装
  • 联想电脑摄像头驱动怎么安装
  • 联想电脑摄像头驱动怎么安装
  • 联想电脑摄像头驱动怎么安装
win7电脑没有声音怎么解决(win7电脑为什么没声音)

1.在我们的win7系统中,突然间没有声音,此时用鼠标右键点击电脑左边的开始菜单,选择“管理”按钮。2.在此页点击系统工具下面的设备管理器,然后展开声音、视频和游戏控制器此选项。3、在该选项当中,...

playstore(playstore app install english)

原文:PlayStore翻译:谷歌的电子市场,或者是指一些虚拟的电子商城。例句:Playstore,restaurant,oricecreamstandtogether.情景游戏...

office2010不激活可以用吗(window10中office不激活可以吗)

可以购买正版授权码激活或激活工具,不激活也可以一直用,但是每一次打开都会弹框。可以使用。因为Office2010不激活后,只会出现一个提醒框,并不影响软件的正常使用。但是未激活的Office2010不...

雨林木风在线重装系统(雨林木风系统安装教程win10)

一,一般雨林木风番茄花园之类的盗版系统重装系统后都是自动激活的,不需要再重新激活。二,如果偶尔系统提示没有激活的话,上系统之家等网站可以下载激活码,按提示激活即可。三,不建议安装雨林木风之类的盗版系统...

系统镜像文件放在哪里(系统镜像文件放在哪里好)

镜像文件路径在安装的U盘内有显示,如果没有显示,那是文件不对,或被解压了。镜像文件是一些压缩文件的统称。常见的有img格式的文件(例如,文本文件的格式是txt),它通常是用特定的软件,将本身自带启动文...

取消回复欢迎 发表评论: