Python数值类型与数学函数:深入理解与高效应用

文章目录

  • 一、Python的数字
    • 1.数值类型
      • 1.1 整型(int)
      • 1.2 浮点型(float)
      • 1.3 复数(complex)
    • 2.数字类型转换
      • 2.1 int(x)
      • 2.2 float(x)
      • 2.3 complex(x)
      • 2.4 complex(x, y)
    • 3.数字运算
      • 3.1 round
  • 二、函数
    • 1.数学函数
      • 1.1 abs(x)
      • 1.2 ceil(x)
      • 1.3 cmp(x, y)
      • 1.4 exp(x)
      • 1.5 fabs(x)
      • 1.6 floor(x)
      • 1.7 log(x)
      • 1.8 log10(x)
      • 1.9 max(x1, x2,...)
      • 1.10 min(x1, x2,...)
      • 1.11 modf(x)
      • 1.12 pow(x, y)
      • 1.13 sqrt(x)
    • 2.随机数函数
      • 2.1 random()
      • 2.2 randint(a, b)
      • 2.3 choice(seq)
      • 2.4 shuffle(seq)
      • 2.5 sample(population, k)
    • 3.三角函数
  • 三、总结


一、Python的数字

1.数值类型

python 的数据类型,主要包括 Number(数值)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)、Set(集合)。Python 中的数值类型通常包括整数、浮点数和复数,布尔类型本质上也属于数值类型。本文中,主要讲Python 中的数值类型及相关操作,其他的数据类型将在另外文章中讲解。

1.1 整型(int)

通常被称为是整型或整数,是正或负整数,不带小数点。例如 42 和 -10。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型。布尔(bool)是整型的子类型。

# 整型
x = 42
y = -10
print(x)  # 输出: 42
print(y)  # 输出: -10

在Python中,布尔类型(bool)是整型的子类型。布尔类型只有两个值:True和False。通常用于控制程序流程,例如在if语句中判断条件是否成立。

# 定义布尔类型变量
a = True
b = False

# 在if语句中使用布尔类型
if a:
    print("a is true")
else:
    print("a is false")

if not b:
    print("b is false")
else:
    print("b is true")

# 使用布尔类型进行逻辑运算
c = True and False
d = True or False
e = not True
print(c)  # 输出: False
print(d)  # 输出: True
print(e)  # 输出: False

请注意,Python将布尔类型视为整数类型的子类型,其中True被视为等于整数值1,而False被视为等于整数值0。因此,您可以将布尔类型与整数类型混合使用,并对其进行运算。

x = True + 1
y = False + 2
print(x)  # 输出: 2
print(y)  # 输出: 2

1.2 浮点型(float)

浮点型由整数部分与小数部分组成,用于表示带有小数部分的数值,例如 3.14 和 -0.5。

# 浮点型
a = 3.14
b = -0.5
print(a)  # 输出: 3.14
print(b)  # 输出: -0.5

1.3 复数(complex)

复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。例如 1 + 2j 和 -3j。

c = 1 + 2j
d = -3j
print(c)  # 输出: (1+2j)
print(d)  # 输出: (-0-3j)

请注意,Python是一种动态类型语言,因此您不需要显式地声明变量的类型。根据赋给变量的值,Python会自动确定适当的数值类型。

2.数字类型转换

2.1 int(x)

int(x) 将x转换为一个整数。

# 整数转换
a = 10
b = int(3.14)
c = int("5")
print(a, type(a))  # 输出: 10 <class 'int'>
print(b, type(b))  # 输出: 3 <class 'int'>
print(c, type(c))  # 输出: 5 <class 'int'>

2.2 float(x)

float(x) 将x转换到一个浮点数。

# 浮点数转换
d = float(10)
e = float("3.14")
print(d, type(d))  # 输出: 10.0 <class 'float'>
print(e, type(e))  # 输出: 3.14 <class 'float'>

2.3 complex(x)

complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。

a = complex(3)
print(a)  # 输出: (3+0j)

b = complex(3.14)
print(b)  # 输出: (3.14+0j)

2.4 complex(x, y)

complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。

# 复数转换
f = complex(2, 3)
g = complex("4+5j")
print(f, type(f))  # 输出: (2+3j) <class 'complex'>
print(g, type(g))  # 输出: (4+5j) <class 'complex'>

需要注意的是,转换函数只能在数字类型之间进行转换,对于无效的转换则会导致错误。例如,将一个非数字字符串转换为数字类型会引发ValueError。

h = int("abc")  # ValueError: invalid literal for int() with base 10: 'abc'

3.数字运算

这边就简单介绍下round,如需其他更详细的可参考我的另外一篇博客揭秘Python的运算符:从加减乘除到幂次开方,一网打尽!

3.1 round

在Python中,round()函数可以对一个数字执行四舍五入操作。该函数的语法如下:

round(number, ndigits=None)
#其中,number是要进行四舍五入的数字,ndigits是指定四舍五入到小数点后几位。如果省略ndigits参数,则默认为0,即四舍五入到整数。

示例代码如下:

print(round(3.14159)) # 输出:  3

print(round(3.14159, 2))# 输出:  3.14

print(round(12345, -3))# 输出:  12000

这里有个关于 round 函数的小坑,请看下面:

print(round(10.4)) #10
print(round(10.5)) #10
print(round(10.6)) #11
print()
print(round(11.4)) #11
print(round(11.5)) #12
print(round(11.6)) #12

这个结果可以解释为:

当小数部分小于0.5时,round()函数会向下舍入到最接近的整数。

当小数部分大于0.5时,round()函数会向上舍入到最接近的整数。

当小数部分为5时,会向最接近的偶数舍入。

二、函数

1.数学函数

1.1 abs(x)

abs(x):返回数字的绝对值,如abs(-3) 返回 3

import math

print(abs(-3)) # 3

1.2 ceil(x)

ceil(x):返回不小于 x 的最小整数(向上取整)。示例:import math
math.ceil(3.2) 返回 4,math.ceil(-1.8) 返回 -1。

import math

print(math.ceil(3.2)) # 4
print(math.ceil(-1.8)) # -1

1.3 cmp(x, y)

cmp(x, y):如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。Python已经在版本2.7中移除了cmp函数。

可以使用 (x>y)-(x<y) 来代替 cmp(x, y) 函数,(x>y)-(x<y) 这个表达式的含义是,如果 x > y,则返回 1,如果 x < y,则返回 -1,如果 x == y,则返回 0。

print((1>2)-(1<2))   # 输出 -1
print((2>2)-(2<2))   # 输出 0
print((3>2)-(3<2))   # 输出 1

1.4 exp(x)

exp(x):返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045

import math

print(math.exp(1)) # 2.718281828459045

1.5 fabs(x)

fabs(x):以浮点数形式返回数字的绝对值,如math.fabs(-5) 返回5.0

import math

print(math.fabs(-5)) # 5.0
print(math.fabs(-4.6)) # 4.6

1.6 floor(x)

floor(x):返回不大于 x 的最大整数(向下取整)。示例:import math
math.floor(3.7) 返回 3,math.floor(-2.5) 返回 -3。

import math

print(math.floor(3.7)) # 3
print(math.floor(-2.5)) # -3

1.7 log(x)

log(x):返回 x 的自然对数(以 e 为底)。示例:import math
math.log(1) 返回 0,math.log(math.e) 返回 1。

import math

print(math.log(1)) # 0.0
print(math.log(math.e)) # 1.0

1.8 log10(x)

log10(x):返回以10为基数的x的对数,示例:import math
math.log10(10)返回 1.0,math.log10(100)返回 2.0

import math

print(math.log10(10)) # 1.0
print(math.log10(100)) # 2.0

1.9 max(x1, x2,…)

max(x1, x2,…):返回给定参数的最大值,参数可以为序列。

import math

print(max(3, 7, 2, 9)) # 9

1.10 min(x1, x2,…)

min(x1, x2,…):返回给定参数的最小值,参数可以为序列。

import math

print(min(5, 1, 8, 4)) # 1

1.11 modf(x)

modf(x):返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

import math

result = math.modf(10.6)
print(result)  # (0.5999999999999996, 10.0)

这里为啥是0.5999999999999996一大串数字,而不是0.6呢?
这个是因为在 Python 中,在进行浮点数运算时,会使用有限的位数来表示小数部分,因此会存在一定的精度损失。

如果为了避免这种问题,可以使用适当的方法来处理浮点数的舍入误差,例如使用 round() 函数来控制保留的小数位数,或者使用 Decimal 类来进行精确的十进制计算。

  1. round() 函数
import math

result = math.modf(10.6)
rounded_result = round(result[0], 1), round(result[1], 1)
print(rounded_result)  # (0.6, 10.0)
  1. Decimal 类
from decimal import Decimal
import math

result = math.modf(10.6)
rounded_result = Decimal(str(result[0])).quantize(Decimal('.00')), Decimal(str(result[1])).quantize(Decimal('.00'))
print(rounded_result)  # (Decimal('0.60'), Decimal('10.00'))

1.12 pow(x, y)

pow(x, y):返回 x 的 y 次方

import math

print(math.pow(2, 3))  # 8.0 

1.13 sqrt(x)

sqrt(x):返回数字x的平方根。

import math

print(math.sqrt(9))  # 3.0 

2.随机数函数

2.1 random()

random():随机生成下一个实数
示例:函数返回一个[0.0, 1.0)之间的随机小数。

import random

print(random.random())   # 输出一个随机小数,如 0.5718236770913483

2.2 randint(a, b)

randint(a, b):函数返回一个[a, b]之间的整数。
示例:函数返回一个[1, 10)之间的随机整数。

import random

print(random.randint(1, 10))   # 输出一个1~10之间的整数,如 8

2.3 choice(seq)

choice(seq):函数从序列seq中随机选择一个元素。
示例:从0到9中随机挑选一个整数。

import random

print(random.choice(range(10)))   # 输出序列中的一个元素,如 7

2.4 shuffle(seq)

shuffle(seq): 将序列的所有元素随机排序

import random

seq = [1, 2, 3, 4, 5]
random.shuffle(seq)
print(seq)   # 输出随机排序后的序列,如 [5, 2, 3, 1, 4]

2.5 sample(population, k)

sample(population, k):函数从总体population中随机选择k个元素,不会改变总体population。

import random

population = [1, 2, 3, 4, 5]
print(random.sample(population, 3))   # 输出从总体中随机选择的3个元素,如 [2, 4, 1]

3.三角函数

函数描述
acos(x)返回x的反余弦弧度值。
asin(x)返回x的反正弦弧度值。
atan(x)返回x的反正切弧度值。
atan2(y, x)返回给定的 X 及 Y 坐标值的反正切值。
cos(x)返回x的弧度的余弦值。
hypot(x, y)返回欧几里德范数 sqrt(xx + yy)。
sin(x)返回的x弧度的正弦值。
tan(x)返回x弧度的正切值。
degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x)将角度转换为弧度

三、总结

今天主要讲了Python数值类型与数学函数。

感谢你的观看,谢谢!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【模拟算法系列】详解5道题

本文讲解模拟算法系列的5道经典题&#xff0c;在讲解题目的同时提供AC代码&#xff0c;点击题目即可打开对应OJ链接 目录 模拟算法的介绍 1、替换所有的问号 2、提莫攻击 3、 Z 字形变换 4、外观数列 5、数青蛙 模拟算法的介绍 题目中明确告诉你要干什么&#xff0c;思路…

在云服务器上通过FileZilla配置FTP(通过FileZilla配置FTP升级版)

有兴趣的读者可以看看博主的博客&#xff0c;有很全面的教程 阿里云之申请云服务器–配置jdk,tomcat,安全策略–能够在他人电脑上显示本电脑的Tomcat 通过FileZilla配置FTP 修改我们的安全组&#xff0c;将21&#xff0c;和50000-50010端口添加进去 加入实例即可&#xff0c;剩…

vue处理后端返回的文件数据流,并提供下载接口

返回的数据流 前端对其进行处理并下载 downloadFile(res, fileName) {// 使用后台返回的数据创建一个新的Blob对象 let blob new Blob([res]); // 如果fileName参数未定义或为空&#xff0c;则从res的headers中获取content-disposition字段&#xff0c;并从中提取文件名 if…

基于阿里云服务器部署幻兽帕鲁联机服务器详细教程

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

Java实现加权平均分计算程序WeightedAverageCalculator

成绩加权平均分计算程序&#xff0c;带UI界面和输入保存功能。 因为本人对成绩的加权均分有所关注&#xff0c;但学校的教务系统查分时往往又不显示个人的加权均分&#xff0c;加之每次手动敲计算器计算很麻烦就花了点时间写了一个加权均分计算程序自用&#xff0c;顺便开源。…

Go 的 Http 请求系统指南

文章目录 快速体验请求方法URL参数响应信息BodyStatusCodeHeaderEncoding 图片下载定制请求头复杂的POST请求表单提交提交文件 CookieClient 上设置 Cookie请求上设置 Cookie 重定向和请求历史超时设置总超时连接超时读取超时 请求代理错误处理总结 前几天在 “知乎想法” 谈到…

开源的API Gateway项目- Kong基于OpenResty(Nginx + Lua模块)

Kong 是一个在 Nginx 内运行的开源 API 网关和微服务抽象层。它是用于处理 API 流量的灵活、可扩展、可插入的工具。 Kong 提供了以下功能&#xff1a; 用户登录&#xff1a;Kong 提供了多种认证插件&#xff0c;像 JWT、OAuth 2.0 等&#xff0c;可以满足用户登录需求。Toke…

精要图示:园区金融数字化服务蓝图,以园区为支点推动信贷业务增长

作为企业集聚地&#xff0c;园区已然成为银行业夯实客群基础的重要切口&#xff0c;各大行陆续围绕园区场景创新金融产品&#xff0c;以期抢跑园区金融新赛道、把握新增量。 启信慧眼首推一站式【园区金融】数字化服务方案&#xff0c;该方案同时支持启信天元私有化部署&#x…

使用acme.sh 签发SSL证书

(Nginx) 使用acme.sh 签发SSL证书 背景&#xff1a; 域名服务商&#xff1a; 阿里云 SSL证书使用场景: Nginx ,Tomcat 安装acme.sh 国内由于墙的问题&#xff0c;建议用gitee的镜像库克隆 mkdir /usr/local/acme cd /usr/local/acme git clone https://gitee.com/neilpa…

【操作系统】实验九 写一个设备驱动程序

&#x1f57a;作者&#xff1a; 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux &#x1f618;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &#x1f3c7;码字不易&#xff0c;你的&#x1f44d;点赞&#x1f64c;收藏❤️关注对我真的很重要&…

分享一个“产业级,开箱即用”的NLP自然语言处理工具

NLP的全称是Natuarl Language Processing&#xff0c;中文意思是自然语言处理&#xff0c;是人工智能领域的一个重要方向 自然语言处理&#xff08;NLP&#xff09;的一个最伟大的方面是跨越多个领域的计算研究&#xff0c;从人工智能到计算语言学的多个计算研究领域都在研究计…

Python基础(二十九、pymsql)

文章目录 一、安装pymysql库二、代码实践1.连接MySQL数据库2.创建表格3.插入数据4.查询数据5.更新数据6.删除数据 三、完整代码示例四、结论 使用Python的pymysql库可以实现数据存储&#xff0c;这是一种连接MySQL数据库的方式。在本篇文章中&#xff0c;将详细介绍如何使用pym…

SpringBoot 自定义Filter 提前返回 CORS 错误 处理前后端分离跨域配置无效问题解析

前言 浏览器有跨域限制&#xff0c;非同源策略 (协议、主机名或端口不同) 被视为跨域请求&#xff0c;解决跨域有跨域资源共享(CORS)、反向代理和 JSONP的方式。本篇通过 SpringBoot 的资源共享配置 (CORS) 来解决前后端分离项目的跨域&#xff0c;以及从原理上去解决跨域配置…

2023年NOC大赛(学而思赛道)创意编程Python初中组决赛真题

2023年NOC大赛&#xff08;学而思赛道&#xff09;创意编程Python初中组决赛真题 题目总数&#xff1a;7 总分数&#xff1a;100 编程题 第 1 题 问答题 二进制回文 编程实现: 输入一个正整数&#xff0c;判断它的二进制形式是否是回文数&#xff0c;如果是输出True…

web系统服务器监控检查

一、检查操作系统是否存在增减文件&#xff0c;是否有shell被上传 要检查操作系统是否存在增减文件或是否有shell被上传&#xff0c;您可以按照以下步骤进行操作&#xff1a; 文件完整性检查&#xff1a; 使用文件系统的完整性检查工具&#xff0c;例如fsck&#xff08;对于ext…

Backtrader 文档学习-Order Management and Execution

Backtrader 文档学习-Order Management and Execution 本章提供了关于order的详细功能测试用例&#xff0c;很好很重要。 最后的示例部分&#xff0c;详细分析总结了不同参数的效果和输出。 如果不能模拟订单交易回测就不会完整。为此&#xff0c;平台中提供了以下功能&…

LLM之Agent(九)| 通过API集成赋能Autogen Multi-Agent系统

随着大型语言模型的快速发展&#xff0c;构建基于LLM驱动的自治代理&#xff08;autonomous agents&#xff09;已经成为一个备受关注的话题。仅在过去一年中&#xff0c;就出现了许多基于这一理念的新技术和框架。 ​ 本文将探索微软开源的Agent框架&#xff1a;Autogen…

幻兽帕鲁服务器搭建教程分享,小白有福了

如何自建幻兽帕鲁服务器&#xff1f;基于阿里云服务器搭建幻兽帕鲁palworld服务器教程来了&#xff0c;一看就懂系列。本文是利用OOS中幻兽帕鲁扩展程序来一键部署幻兽帕鲁服务器&#xff0c;阿里云百科aliyunbaike.com分享官方基于阿里云服务器快速创建幻兽帕鲁服务器教程&…

vue 样式隔离原理

日常写单文件组件时&#xff0c;会在style添加scoped属性&#xff0c;如<style scoped>&#xff0c;目的是为了隔离组件与组件之间的样式&#xff0c;如下面的例子&#xff1a; <template><p class"foo">这是foo</p><p class"bar&q…

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…