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

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

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

相关推荐

win10iso文件(win10iso文件怎么安装)

安装Win10ISO系统文件需要以下步骤:1.首先需要从Microsoft官网下载Win10ISO系统文件,打开网站后选择Win10的版本、语言和架构(32位或64位),点击下载即可。2.下载...

qq邮箱登录不上去怎么回事(qq邮箱怎么登陆不上去)
  • qq邮箱登录不上去怎么回事(qq邮箱怎么登陆不上去)
  • qq邮箱登录不上去怎么回事(qq邮箱怎么登陆不上去)
  • qq邮箱登录不上去怎么回事(qq邮箱怎么登陆不上去)
  • qq邮箱登录不上去怎么回事(qq邮箱怎么登陆不上去)
英特尔显卡性能排行(英特尔显卡性能排行天梯图)

IRIS(英特尔第四/五代集成显卡)英特尔第四代集成显卡,分为HD4200/4400/4600,HD5100/5200。代号为GT2/3/3e,中文名为锐炬。hd420044004600和台式...

电脑做系统u盘启动选项(做系统开机u盘怎么选择)

操作须知:1、设置U盘启动分很多种:传统legacy机型设置、uefi新机型设置、uefi机型改legacy启动设置2、由于电脑品牌以及机型非常多,这边仅列举一部分电脑的设置方法,3、如果是uefi机...

未安装nvidia控制面板(电脑未安装nvidia控制面板)

如果你使用的是Nvidia显卡,但未安装Nvidia控制面板,则可能会遇到以下问题:1.无法进行高级显卡设置:Nvidia控制面板提供了高级显卡设置选项,例如显卡超频、显示器分辨率和刷新率、视频调整...

u盘检测不到怎么修复(u盘检查不了是什么原因)

以下是可能的解决办法:1.更换不同的USB端口。有时候电脑某个USB端口可能出现问题,试试换一个不同的端口。2.重启电脑。有时候出现问题的USB端口可能需要重启才能正常。3.插拔几次U盘。有时候...

win7 共享设置(win7共享设置详细步骤)

1.进入控制面板家庭组页打开控制面板找到网络和Internet下面的家庭组和共享选项并打开?2.进入更改高级共享设置打开以后选择更改高级共享设置功能进入?3.开启文件和打印机共享开启文件和打印机共享,...

电脑硬盘怎么装步骤图(电脑硬盘怎么装步骤图片)

1、查看硬盘的各项信息。硬盘的背面会有硬盘的存储容量以及电压,功率,转速等基本信息。2、购买到的一整块硬盘里面包括硬盘、对接线跟螺丝钉。将对接线和螺丝钉摆在一旁。3、在硬盘的上方会有两个SATA接口,...

小马win10永久激活(小马win10永久激活工具使用方法)

很简单,重装系统win7,这个可以激活的,然后根据推送升级win10,如果有强迫症可以升级以后重新安装win10系统,以后都是自动联网激活的。安全。小马激活工具win10版是小马专门为windowns...

win10开机欢迎时间太长(开机欢迎界面时间长)

win10第一个就是你系统里的垃圾太多,如果系统垃圾太多,直接清理垃圾就可以解决这个问题,第二个就是你的开机启动项过多,如果开机启动项过多,直接关闭不必要的开机启动项就可以缩短开机时间,就可以解决你...

登录126邮箱入口(登录126邮箱入口官网)

126邮箱是网易的一个免费邮箱登录入口在浏览器输入:mail.126.com浏览器进入126邮箱网站之后,即可自行登录126邮箱账号。如何在手机上登录126邮箱1、打开手机,找到并打开网易邮箱软件。2...

如何让防火墙允许某个软件(如何允许防火墙阻止访问)

1.打开电脑的开始菜单,找到控制面板选项,并点击打开。2.在打开的控制面板中,找到防火墙选项,并点击打开。3.在打开的防火墙界面中,单击左侧的允许程序通过防火墙选项。4.在跳转的界面中,选择允许通过防...

智慧工厂管理系统(智慧工厂管理系统哪家好)
智慧工厂管理系统(智慧工厂管理系统哪家好)

智慧工厂智能化系统整体的解决方案分为三个主要部分,分别是现场控制系统(FDC)、生产数据管理系统(PDM)以及工厂数字化协同平台(LCT)。其中,现场控制系统(FDC)是智慧工厂系统非常重要的核心组成部分,它是一个支持大规模互联的集群控制系...

2025-11-13 22:03 off999

笔记本无法连接此网络(笔记本无法连接网络wifi)
  • 笔记本无法连接此网络(笔记本无法连接网络wifi)
  • 笔记本无法连接此网络(笔记本无法连接网络wifi)
  • 笔记本无法连接此网络(笔记本无法连接网络wifi)
  • 笔记本无法连接此网络(笔记本无法连接网络wifi)
电脑如何打开隐藏文件(电脑怎么打开隐藏文件夹)

要显示隐藏文件,首先需要打开文件资源管理器,然后点击菜单栏中的“查看”选项,选中“隐藏项目”复选框即可。此时,隐藏文件和文件夹将会显示在文件资源管理器中,可以进行正常操作。如果需要隐藏文件和文件夹,可...

取消回复欢迎 发表评论: