第4天 | 12天搞定Python,基础语法(下)

为了方便你的学习,减轻负重,我特意将基础语法分成上下两部分。希望你喜欢这种方式,如果不喜欢,你可以跟我说,反正我是不会改的,哈哈~~。

如果上部分,你还没看的话,先去看《第4天 | 12天搞定Python,基础语法(上)》。

python在处理数据时,不可避免的要进行数据类型之间的转换,诸如整型和字符串之间的转换。

4.5 类型转换

转换有隐式和显式转换,隐式也称自动转换,不用做处理。显示转换,也称为数据类型的强制类型转换,通过内置函数实现。

1. 转为整型

通过内置函数int(x [,base]),可把x值转为整数。其中base是进制,默认是10进制。

# 浮点数转为整型,截断小数点
f = 99.5
to = int(f)
print(to)
# 布尔转为整型
b = True
to = int(b)
print(to)
# 字符串转为整型
s = "520"
to = int(s)
print(to)
# 转为16进制
print(int(s, base=16))

输出结果

99
1
520
1312

转换是不是都会成功?--不一定,像字符串内容,比如“酷”,就没办法转成整数。有时候扮酷,是需要付出代价的。

# 非数字内容
s = "酷"
# 转换为整数,报错
to = int(s)
print(to)

输出结果

  to = int(s)
ValueError: invalid literal for int() with base 10: '酷'

既然有异常,那得处理。可在转换前,通过isdigit()函数判断字符串内容是否全是数字,是才转换,不是的话,做其他处理。这里提前剧透条件语句。

# 非数字内容
s = "酷"
if s.isdigit():
    to = int(s)
    print(to)
else:
    print("做其他处理。")

输出结果

做其他处理。

2. 转为浮点型

通过float(x),把x值转为浮点型。

# 整型转为浮点数
i = 99
to = float(i)
print(to)
# 字符串转为浮点数
s = "520.00"
to = float(s)
print(to)

输出结果

99.0
520.0

字符串转为浮点数的过程中,也存在不成功的情况。可惜Python没有直接的函数,可以判断是否为浮点数。最简单直接的判断方法,就是用捕捉异常的方法进行处理。

# 字符串内容
s = "13.10d"
try:
    f = float(s)
    print("真的是浮点型")
except ValueError:
    print("不是浮点型")

输出结果

不是浮点型

3. 转为布尔型

在Python里,整型、浮点型、字符串都可以转为布尔类型。除了0为False,其他的全为True。其中字符串记得用eval()取得表达式,否则"0"返回的是True。因为“0”不是0。

# 整型转为布尔
i = 0
to = bool(i)
print(to)
# 浮点数转为布尔
f = 99.2
to = bool(f)
print(to)
# 字符串转为布尔
s = "0"
to = bool(eval(s))
print(to)

输出结果

False
True
False

4. 转为字符串

通过str(x)函数把x内容,转为字符串,x是指定对象,包括整型、浮点数、数组等等。

# 整型转为字符串
i = 102
to = str(i)
print(to)
# 浮点数转为字符串
f = 36.6
to = str(f)
print(to)
# 布尔转为字符串
b = 0
to = str(b)
print(to)
# 数组转为字符串
array = ["101", "102", "103", "106"]
to = str(array)
print(to)

好的,类型转换到这就告一个段落了,下面,我们进入运算符。

4.6 运算符

一进入小学,咱们就与算术结下了不解之缘,从手算、心算到口算,越算越聪明,越聪明越算,沉迷在算术的世界。可是自从了计算机以后,连写字都懒了,更别提算术了。

谁叫计算机除了可以进行加减乘除算术运算外,还可以进行左边值与右边值的比较运算,再者还可以通过and、or、not运算符进行的逻辑运算呢。

1. 算术运算

算术运算,就是通过+、-、*、%、//符号进行加减乘除、取余和取模的运算,其中被除数不能为0。

(1) 整数和整数相加减、相乘,结果是整数。除的时候,若出现小数,自动转为浮点数。

a = 12  # 整数
b = 20  # 浮点数
# 加法运算
c = a + b
print(c)
# 减法运算
c = a - b
print(c)
# 乘法运算
c = a * b
print(c)
# 除法运算,结果有小数
c = a / b
print(c)

输出结果

32
-8
240
0.6

(2) 整数和浮点数运算,整数会自动升为浮点数,这就是隐式转换,而用转换函数那些的称作显式转换。

a = 20      # 整数
b = 20.25  # 浮点数
# 加法运算
c = a + b
print(c)
# 减法运算
c = a - b
print(c)
# 乘法运算
print(c)
# 除法运算
c = a / b
print(c)

输出结果

40.25
-0.25
-0.25
0.9876543209876543

(3) 浮点数和浮点数进行运算时,结果会出现偏差。像20.65-16.25正确答案应为:4.4,结果却是:4.399999999999999 。

a = 20.65  # 浮点数
b = 16.25  # 浮点数
# 加法运算
c = a + b
print(c)
# 减法运算
c = a - b
print(c)
# 乘法运算
print(c)
# 除法运算
c = a / b
print(c)

输出结果

36.9
4.399999999999999
4.399999999999999
1.2707692307692307

(4) 浮点数偏差问题,可以通过Decimal函数进行解决。

from decimal import Decimal

a = 20.65  # 浮点数
b = 16.25  # 浮点数
# 减法运算
c = Decimal(str(a)) - Decimal(str(b))
print(float(c))

输出结果

4.4

(5) 取模取余

通过%进行取余运算,结果返回除法的余数。通过//进行取模运算,结果返回商的整数部分。

a = 20
b = 16
# 取余运算
c = a % b
print(c)
# 取模运算
c = a // b
print(c)

输出结果

4
1

(6) 幂运算

通过**进行幂运算,结果返回x的y次幂,跟内置函数pow()相同作用。

x = 2
y = 5
# 冥运算
z = x ** y
print(z)
# 冥函数
z = pow(x, y)
print(z)

输出结果

32
32

(7) 复合赋值

复合运算符是算术运算符和赋值运算符合在一起的一种运算符,主要作用方便改变变量的值,有+=、-= 、*=、/=、%=、//=、**= 这7种。a += b ,表示a = a + b。其他的也类似。

a = 10
b = 20
# 加法赋值运算
a += b
print(a)
# 乘法赋值运算
c = 2
d = 50
d *= c
print(d)

输出结果

30
100

2. 比较运算

比较运算,就是通过比较运算符(<、<=、> 、>=、==、!=),对左右两边的对象进行比较,结果返回布尔值:True或False。

a = 10
b = 20
c = 10
# 小于 < 比较
print(a < b)
# 小于等于 <= 比较
print(a <= c)
# 大于 > 比较
print(a > b)
# 大于等于 >= 比较
print(a >= c)
# 等于 == 比较
print(a == b)
# 不等于 != 比较
print(a != b)

输出结果

True
True
False
True
False
True

3. 比较函数

Python3.7内置了比较函数 operator.lt(a, b) 、operator.le(a, b) 、operator.eq(a, b) 、operator.ne(a, b) 、operator.ge(a, b) 、operator.gt(a, b),对应比较运算符,如operator.lt(a, b)对应小于<。 比较运算符一般跟条件语句搭配使用,而用operator.lt(a, b)这种函数,可以直接得到结果布尔True或False)结果。

import operator
a = 10
b = 20
print(operator.lt(a, b))

输出结果

True

还有另一种表达形式:operator.__lt__(a, b) 、operator.__le__(a, b) 、operator.__eq__(a, b) 、operator.__ne__(a, b) 、operator.__ge__(a, b) ,含义是一样的。

import operator
a = 10
b = 20
print(operator.__lt__(a, b))

输出结果

True

4. 逻辑运算

逻辑运算,就是通过与(and)、或(or)、非(not)运算符进行的运算。and表示它的前后条件都成立时,返回True,否则返回False。or表示它的前后条件有一个为True,便返回True,否则返回False。 Not的意思是取相反值,True的not是False,False的not是True。

a = 10
b = 20
c = 30
d = True
# and组合比较
result = a > b and a > c
print(result)
# or组合比较
result = a < b or a > c
print(result)
# not
result = not d
print(result)

输出结果

False
True
False

好了,基础语法到这就全部介绍完了。能学到这的朋友,为自己鼓鼓掌,对着显示器,说一句:瞧你那个傻样,呵呵~~

一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我将分享Python,前端(小程序)和App方面的编程知识。关注我,没错的。

posted @ 2020-10-16 11:49  伴码  阅读(260)  评论(2编辑  收藏  举报