让Python帮你算术:常用函数及运算符

文章目录

思维导图

前言

一、三大最最最基本函数

1、Python len()函数

2、Python input()函数

3、Python print()函数

二、格式化字符串与类型变换

1、格式化字符串

1.1. %占位符方法

1.2 format函数方法

2、数据类型转换

三、Python中的运算符

1、算术运算符

2、赋值运算符

2.1 基本赋值运算符

2.2 更多赋值运算符

3、位运算符

4、比较运算符

5、逻辑运算符

6、三目操作符

7、运算符优先级

总结


思维导图

让Python帮你算术:常用函数及运算符_第1张图片


前言

上一篇文章为大家讲解了变量和简单的数据类型,我们先回顾一下上一节内容吧!

变量主要讲了变量的概念、变量的命名规则、变量的赋值规则。

字符串主要讲了字符串的概念以及字符串的几种操作方法。

数值类型主要讲了三大类型:整型、浮点型、复数以及它们进行相互转换时的误差来源。

注释主要讲了三种注释方法:单行注释、单引号注释以及双引号多行注释。

还没有学习的铁子们可以点击此链接简单回顾一下:http://t.csdnimg.cn/PmHWL

当大伙儿学习完上一篇内容,你是否有这样的疑问:计算题好难,什么时候才可以让计算机帮我算术呀?

大家先别急,今天的内容我就带大家学习一些超级频繁使用的函数及运算符!学完本章内容,Python就可以成为你身边的算术高手,让你不再为复杂的计算烦恼!本章内容有点长,大家注意慢慢理解消化!


一、三大最最最基本函数

1、Python len()函数

学过C语言的铁子们都知道,C语言中我们使用strlen()来获取字符串长度,还要包含头文件#include .那么,在Python中是否会这么复杂呢?Of course not! 我们都知道Python是出了名的简洁。所以在Python中,要想知道一个字符串有多少个字符(获得字符串长度),或者一个字符串占用多少个字节,可以使用 len 函数。

len()函数的格式如下:

len(string)

举个栗子:

string = "handsome boy"
print(len(string))
#输出结果为12

但是当我们用指头一个个数的时候会惊奇地发现只有11个字母,这是因为在字符串中空格也被算作一个字符。如果你不想将空格算入,可以使用上一篇讲到过的replace函数去除空格。

然而在实际应用中,仅仅知道字符串长度是远远不够的,我们还需要获取字节数。

回顾尘封已久的大学计算机知识,我们知道:不同的字符所占的字节数不同,数字、英文字母、小数点、下划线以及空格,各占一个字节,而一个汉字可能占 2~4 个字节,这取决于采用的编码方 式。

我们可以使用使用encode()方法将字符串编码为字节字符串,然后使用leng()函数获取字节字符串的字节数

text = "点赞收藏"
byte_text = text.encode()  # 将字符串编码为字节字符串
byte_count = len(byte_text)  # 获取字节字符串的字节数
print(byte_count)

2、Python input()函数

C语言中我们使用scanf函数来进行输入,在Python中我们则使用input()函数来获取用户输入的字符串。

举个栗子:

msg = input("请输入你的年龄:")
print(type(msg))#输出结果总是
print(msg)

type可以获取数据类型,我们会发现无论是输入何种数据类型,输出结果总说是字符串。这是因为input()返回的是字符串类型,因此读取数字时需要进行类型转换(本篇会讲解)

age = int(input("请输入你的年龄:"))
print(type(age))#只要输入整数,输出结果总为
print(age)

3、Python print()函数

用 print() 函数只输出了一个变量想必大家不再陌生,但实际上 print() 函数其实可以同时输出多个变量,而且它还具有更多功能。

将其与刚才讲过的input()函数结合起来,我们可以这样写:

name = input("你的名字:")#Hunter乔乔
age = int(input("你的年龄:"))#18
print("我的名字是:", name, "我的年龄是:", age)
#输出结果:我的名字是: Hunter乔乔 我的年龄是: 18

由于print()函数末尾自动会提行(有一个隐藏的end = "\n")如果我们不想提行,可以在末尾添加一个, end = ""

然有的铁子们可能会问:如果我想将数值添加到字符串中间呢?这就会用到格式化字符串的方法,我们立马安排!

二、格式化字符串与类型变换

1、格式化字符串

在C语言中我们使用占位符进行格式化输出,应对多个数据填入的情况。那么在Python中,我们有两种方法进行格式化输出:%占位符方法format函数方法

1.1. %占位符方法

Python 提供了“%”对各种类型的数据进行格式化输出。

%占位符使用方法如下

第一部分:字符串+占位符:“我的年龄是%d”,将占位符包含在字符串中

第二部分:用%分隔开,前面是第一部分,后面是变量或表达式的值

第三部分:变量或表达式的值,age

age = 18
print("我的年龄是%d岁"%age)
#输出结果为:我的年龄是18岁

类似于“%d”这样的“格式化操作符”在字符串中相当于一 个占位符,它会被后面的变量或表达式的值代替。

name = "Hunter乔乔"
age = 18
print("我的名字是%s,我的年龄是%d岁" % (name, age))
#输出结果为:我的名字是Hunter乔乔,我的年龄是18岁

如果格式化字符串中包含多个占位符,第三部分也应该对应地提供多个变量,并且使用()将这些变量括起来。

那么除了%d这样的占位符,还有哪些占位符呢?

%s(常用)

字符串
%d(常用) 整数
%f(常用) 浮点数

%o

八进制整数
%x 十六进制整数
%% 字面上的%符号
%g 智能选择使用 %f 或 %e 格式
%c 格式化字符及其 ASCII 码
%r 使用 repr() 将变量或表达式转换为字符串

当使用上面的占位符时,可指定转换后的最小宽度

在默认情况下,转换出来的字符串总是右对齐的,不够宽度时左边补充空格。Python 也允许在最小宽度之前添加一个标志来改变这种行为,Python 支持如下标志:

 -:指定左对齐。

+:表示数值总要带着符号(正数带“+”,负数带“-”)

0:表示不补充空格,而是补充 0

这三个符号是可以同时存在的!

在最小宽度之后可以使用一个整数指定浮点数小数点后的数字位数

如果转换的是字符串转换后的字符串的最大字符数

这个整数被称为精度值,放在最小宽度之后,中间用"."隔开。

age = 18
print("我的年龄是%5d" % age)
print("我的年龄是%05d" % age)
print("我的年龄是%+05d" % age)
print("我的年龄是%-+05d" % age)
print("我的年龄是%-+05.3f" % age)
#输出结果为:我的年龄是   18(原因是右对齐,前面补充3个字符的空格)
#输出结果为:我的年龄是00018(原因是"0"要求空格被0所替换)
#输出结果为:我的年龄是+0018(原因是"+"要求带上符号,符号算作一个字符)
#输出结果为:我的年龄是+18(原因是"-"要求左对齐,无需添加空格)
#输出结果为:我的年龄是+18.000(原因是".3"要求精确到小数点后三位)

1.2 format函数方法

使用大括号 {} 作为占位符,在字符串中指定位置插入变量。用法结构与使用占位符相似,但是不用在意数据类型。

name = "Hunter乔乔"
age = 18
print("我的名字是{},我的年龄是{}".format(name, age))
#输出结果为:我的名字是Hunter乔乔,我的年龄是18岁

当然还可以通过索引的方式去匹配参数,但务必注意索引从0开始计算,这就允许我们打乱参数顺序。

name = "Hunter乔乔"
gender = "男"
age = 18
print("我的名字是{2},我的年龄是{0}岁".format(age, gender, name))
#输出结果为:我的名字是Hunter乔乔,我的年龄是18岁

甚至我们还可以通过参数名来匹配参数。

print("我的名字是{name},我的年龄是{age}岁".format(age=18, name="Hunter乔乔"))
#我的名字是Hunter乔乔,我的年龄是18岁

不仅如此,我们还可以将两者混合使用

age = 18
name = "Hunter乔乔"
print("我的名字是{1},我的年龄是{0}岁,我是一名{gender}生".format(age, name, gender="男"))
#我的名字是Hunter乔乔,我的年龄是18岁,我是一名男生

不过,如果我们把sex="男"放在age和name中间就会报错

age = 18
name = "Hunter乔乔"
print("我的名字是{2},我的年龄是{0}岁,我是一名{gender}生".format(age, gender="男",name))
#报错信息:位置实参位于关键字实参后面

所以这里一定要小心,我们通过参数名来匹配的参数一定要放在通过索引匹配的参数后面!

2、数据类型转换

我们在前面“Python input()函数”一节中说到过,读取input()函数传来的数值时要用到类型转换。

再举一个栗子:

height = 180
print("作者身长" + height)
#警告信息:意外类型:(int)可能的类型:(LiternalString)(str)

这种报错表明:计算机识别到“作者身长”和height不是同一种数据类型,不能直接相加,那我们该怎么办呢?这就需要将两者转换为同一种数据类型

但是转换哪一个变量或值又是一个问题!如果我们将非数字字符串强制转换为整型也会疯狂报错。这是因为在使用类型转换函数时,提供给它的数据必须是有意义的。那么我们就可以选择将数值转换为字符串。

height = 180
print("作者身长" + str(height))
#运行结果:作者身长180

这样的说法就完全正确。

那么还有哪些类型转换呢?请看下表:

数据类型转换函数
int(x) 将 x 转换成整数类型
float(x) 将 x 转换成浮点数类型
complex(real,[,imag]) 创建一个复数
str(x) 将 x 转换为字符串
repr(x) 将 x 转换为表达式字符串
eval(str) 计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x) 将整数 x 转换为一个字符
ord(x) 将一个字符 x 转换为它对应的整数值
hex(x) 将一个整数 x 转换为一个十六进制字符串
oct(x) 将一个整数 x 转换为一个八进制的字符串

三、Python中的运算符

看过Hunter乔乔的“分别与轮回:C语言的分支循环语句(一)”的铁子们都知道,他C语言的运算符这一章讲得相当好。今天我们在Python中也来讲讲这运算符到底是怎么个事儿?

1、算术运算符

在数学世界里,我们常用的有“+,-,×,÷,^”等等。但在Python的世界里,我们需要处理更多的数据,意味着我们的算术运算符就更多。

算术运算符是处理四则运算的符号,常用的有如下几种:

常用算术运算符
+ x加y
- x减y
* x乘y
/ x除y
% 取余,返回x除以y余数
// 整除,返回x除以y商的整数部分
** 乘方,返回x的y次方

举几个简单的栗子:

print(15 % 4)#3
print(17 // 4)#4
print(2 ** 8)#64

2、赋值运算符

赋值运算符在所有计算机语言中的用法几乎都相同,所以学会一节总比六节强!

赋值运算符可以用于将某些值赋值给变量,在运用中,我们可以直接将"="右边的值直接赋值,也可以将其进行某些运算后赋值。

2.1 基本赋值运算符

当我们进行最简单的赋值时,即仅仅将值赋值给变量时,我们会用到赋值运算符“=”

但它还有一种用法,就是将变量赋值给变量,前提是赋值的变量有具体的值,这样就可以实现值的传递。我们也还可以将变量和数进行一些运算后再进行赋值

a = 3
b = a
c = a + 1
print(a, b)
#输出结果:3 3 4

2.2 更多赋值运算符

在实际运用中,我们需要将变量加上某个数再赋值给它本身,例如常用于计数的变量cnt

cnt = 5
cnt += 1
print(cnt)
#输出结果为6

我们通常将算术运算符与=结合形成功能更强大的赋值运算符

运算符 功能 示例 展开式
= 最基本赋值 x=y x = y
+= 加赋值 x+=y x=x+y
-= 减赋值 x-=y x=x-y
*= 乘赋值 x*=y x=x*y
/= 除赋值 x/=y x=x/y
%= 取余数赋值 x%=y x=x%y
**= 幂赋值 x**=y x=x**y
//= 取整数赋值 x//=y x=x//y
|= 按位或赋值 x|=y x=x|y
^= 按位与赋值 x^=y x^=y
<<= 左移赋值 x<<=y x = x << y,这里的 y 指的是左移的位数
>>= 右移赋值 x >>= y x = x >> y,这里的 y 指的是右移的位数

有关位运算符的概念大家是不是还很疑惑呢?请看下一节

3、位运算符

位运算符通常在图形、图像处理和创建设备驱动等底层开发中使用。使用位运算符可以直接 操作数值的原始 bit 位。

在使用自定义的协议进行通信时,使用位运算符对原始数据进行编码和解码非常有效。

由于位运算符的概念对于初学者有些许难度,这里作者就不瞎讲了。

这里推荐CSDN博主「已注销」的博文《Python位运算符详解》(原文链接:http://t.csdnimg.cn/xuyUF)

4、比较运算符

在Python中,我们时常需要比较不等式的大小关系,并获取返回值。真为True,假为False

比较运算符 功能
> 大于,如果运算符前面的值大于后面的值,则返回 True
>= 大于或等于,如果运算符前面的值大于或等于后面的值,则返回True
< 小于,如果运算符前面的值小于后面的值,则返回 True
<= 小于或等于,如果运算符前面的值小于或等于后面的值,则返回 True
== 等于,如果运算符前面的值等于后面的值,则返回 True
!= 不等于,如果运算符前面的值不等于后面的值,则返回 True
is 判断两个变量所引用的对象是否相同,如果相同则返回 True
is not 判断两个变量所引用的对象是否不相同,如果不相同则返回 True

请务必注意==与is的区别!!!

== 用来比较两个变量的值是否相等,而 is 则用来比对两个变量引用的是否是同一个对象,是否为同一对象就要判断两对象引用的地址是否相同。

arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arr1 == arr2)#True
print(arr1 is arr2)#False
print(arr1 is arr1)#True

另外,我们还可以通过id()函数来取地址,判断是否为同一对象

arr1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
arr2 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(arr1 == arr2)#True
print(arr1 is arr2)#False
print(arr1 is arr1)#True
print(id(arr1))#1807936508288
print(id(arr2))#1807936510144

由输出结果可知两者地址不同,固然不是同一对象

5、逻辑运算符

逻辑运算符是对真和假两种布尔值进行运算,返回值为布瓦类型

逻辑运算符 含义 基本格式
and a and b
or a or b
not not a

这与C语言中的逻辑运算符虽然符号不同,但是含义却完全相同。如果还不明白的铁子们可以去看作者独家独立撰写的《分别与轮回:C语言的分支循环语句(一)》(原文链接:http://t.csdnimg.cn/CkA3k)

6、三目操作符

尽管逻辑运算符功能相似,但Python中三目操作符的功能和C语言中三目操作符的功能不相同

对比 符号 功能
Python exp1 if exp2 else exp3 判断exp2真假,真执行exp1,假执行exp3
C exp1 ? exp2 : exp3 判断exp1真假,真执行exp2,假执行exp3

Python中的三目操作符可以进行嵌套

a = input("请输入a的值:")#5
b = input("请输入b的值:")#6
print("a大于b"if a > b else ("a小于b"if a < b else "a等于b"))#a小于b

7、运算符优先级

Python 中运算符的运算规则是,优先级高的运算符先执行,优先级低的运算符后执行,同 一优先级的运算符按照从左到右的顺序进行。

运算符优先级:

逻辑运算符(或<与<非)


总结

本篇内容较长,我们简单梳理一下:

首先我们讲了len(), input(), print()三大基本函数,这一块内容虽然简单但是很重要,大家务必要掌握。接着我们讲了格式化字符串,让我们能够将数据格式化地填入字符串。然而,当数据不能和字符串直接合并时,我们讲了类型转换。最后,我们讲了超多运算符,别看这些运算符在算式中只是一个个小小的符号,但是它们却却举足轻重,请大家务必复习回顾。

本篇内容作者真的花了超多时间翻阅书籍、查找资料和撰写文稿,因为这篇文章的内容实在太重要了!它的地位就如同数学中的四则运算,非常基础但是会伴随你的整个生涯。

所以拜托看到这里的各位务必熟练掌握,如果可以就给作者一个赞,感谢大家的支持!

由于作者时间有限,每篇内容也需花费较多时间撰写,后续内容将不定期更新,但频率应该会在两天一更或日更,记得关注哦~

如果发现文章中表述存在错误或有疑问,欢迎私信作者或者在评论区留言~

预祝大家新年快乐!

你可能感兴趣的:(Python人工智能,python,开发语言)