Python学习笔记(5)——类型

在看完本文后,请看后面的更新。

接上次(应该是上上次……),这次抛开“不正经”,继续给大家介绍小知识。

上一弹详见:Python学习笔记(4)——Asyncio


1.我们以前写的都是甚么鬼

大家是不是都很好奇之前我们在学习Python的时候,为什么有时候print不带引号,有时候带:

示例1

示例2

红色代表没带,绿色代表带了。

那么没带和带有什么区别吗?

当然有啦。

在示例1中,红色箭头指向的是整数(Int,在SQLite中叫Integer),可以用运算符四法宝(+-*/)计算。而绿色指向的是字符串(Str,在其它编程语言中叫String),可以用+和*计算。

更多运算符将在Python学习笔记(6)中找到,尽请期待。

在示例2中,红色箭头指向的是变量(Value)。变量就不用我多说了吧,你在Python学习笔记(2)——你不得不知道的小常识里就能找到。

那么,我们今天就开始认识他们,以及其他小玩意儿。


2.正式开始认识

值得一提的是,在交互式python中输入各种类型的数据,都能得到回应。而巧妙运用运算符四法宝,还能更酷。

img

2.1.整数(下文简称Int)

正如前面所说,运算符四法宝可以计算Int。

print(1+1,1-1,1*1,1/1,sep=',')
'''
2,0,1,1
'''

Int一般用在输出数字的时候(虽然用Str也能达到,但使用Int可以更灵活),和计算数字的时候,有时在人机交互时,还可以把Int当做选项。如:

print(1)
'''
1
'''
print(1-1+1)
'''
1
'''
print(input('>'))
'''
>(输入:1)
1
'''

2.2.字符串

+和*也可以运算字符串,嘿嘿嘿。

print('c'+'c')
'''
cc
'''
print('c'*2)
'''
cc
'''

在这里有必要说说字符串怎么表示。

下面3个都是字符串的表示方法:

'我是字符串,只能转义:\''
"我也是字符串,我可以输入:''"
'''
我还是字符串,
可以换行,
还可以输入:'',""
'''
'不过,\n我也能换行呀'
# 输出:
'''
我是字符串,只能转义:'
我也是字符串,我可以输入:''
我还是字符串,
可以换行,
还可以输入:'',""
不过,
我也能换行呀
'''

以上含有转义字符。我附上一张表,欢迎自查。

img

也就是'str'(单引号),"str"(双引号)和'''str'''(三引号)。

值得一提的是,Python好像是唯一支持单引号的编程语言了。

Str是最常用的数据类型。input()返回的就是Str。如:

print(type('u'))
'''
<class 'str'>
'''

值得一提的是,type()可以检测类型。

2.3.布尔(Boolean,简称Bool)

布尔只有两种表现形式:

True # 真
False # 假

布尔语句在判断中最常见了。

if True:
    print(1)
else:
    print(2)
'''
1
'''

2.3(番外)

在这里有必要提一下判断。

判断可是所有编程语言里都会带的玩意儿。在这里有必要学学。

判断的表现形式:

if ONE_EXPRESSION:
    # 如果这个运算等于布尔值True,运行我。
elif ANOTHER_EXPRESSION: # elif可以省去。
    # 如果这个运算等于布尔值True,运行我。
else: # else可以省去。
    # 如果两个运算等于布尔值False,才运行我。

如:

if 1>9: # 1大于9是绝对不可能的,所以不会运行下面已缩进的代码。
    print(1)
elif 1<0: # 1小于0也是绝对不可能的,所以不会运行下面已缩进的代码。
    print(2)
else: # 上面两个都没有运行,所以要运行下面已缩进的代码。
    print(3)
'''
3
'''

以上代码中,1大于9和1小于0都不可能,所以会运行else下的代码。

值得一提的是,像1+1,3*3等,如果=后面的数字与运算结果一样,也会返回布尔值。

if 1+1=2:
    print(1)
'''
1
'''

需要注意的是,在有elif的情况下,不能舍去else。

9.8更新:这段中=应该是==!!具体情况详见:Python学习笔记(6)——运算符

2.4.字典与列表

字典也算是很重要的知识点。

字典的表示方式如下:

我是一个字典 = {'一个名字':'一个值','另一个名字':'另一个值'}

名字是很重要的哦,一定要记清!

接下来,再取值时要用“我是一个字典[我是一个名字]”。

如:

我是一个字典 = {'一个名字':'一个值','另一个名字':'另一个值'}
print(我是一个字典['一个名字'])
'''
一个值
'''

字典一般用来取值。如:

name = {1:'小明',2:'小亮',3:'小红'}
print(name[1])
'''
小明
'''

还有一个,那就是列表。

列表的表示方式如下:

我是一个列表 = [一个值,另一个值]

接下来,再取值时要用“我是一个列表[我是索引]”。

如:

我是一个列表 = [一个值,另一个值]
print(我是一个列表[0])
'''
一个值
'''

在这里说一下,Python的索引是从0开始的。比如:

img

2.5.更酷的:类

类是自定义的类型。Python就是面向对象/类的编程。

类中可以有多种变量,在实例化后即可使用。

类的定义为:

class ImClass:
    # 一堆东西......

ImClass就是一个类了。

前面说类中可以有多种变量。如:

class Animal:# 定义动物类。
    type = '一只动物' # 定义变量type。

值得一提的是,类的名字必须严格遵守骆驼命名法。请大家自行百度。

在实例化后(实例化方法:我是变量 = 我是类()),即可调用与赋值。拿前面的Animal(动物类)举例:

一只动物 = Animal()
一只动物.type = '动物'
print(一只动物.type)
'''
动物
'''

好啦,这就是本期的内容!

散会~

img

---------------- 下方文章为2021.8.29追加,上方为2021.8.28完成撰写 ----------------

2.6.浮点数(Float)

浮点数就是像2.6,9.4,3.7这样的数。

虽然它也能用运算符四法宝,但总会有误差。如:

>>> 0.1+0.2
0.30000000000000004
>>> 0.1+0.1-0.2
0.0
>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17
>>> 0.1+0.1+0.1-0.2
0.10000000000000003

以上代码来自C语言中文网,原文链接:Python浮点数精度问题(包含解决方案)

那么只需要用Decimal就可完美解决。

在代码开头加上:

from decimal import Decimal

就可以用"Decimal('浮点数')"转换后解决。如:

a = Decimal('1.1')
b = Decimal('2.8')
c = Decimal('2.7')
>>> float(a+b-c)
''' # 准确的
1.2
'''
>>> 1.1+2.8-2.7
''' # 不准确的
1.1999999999999997
'''

值得一提的是,float('浮点数')可以把字符串变成浮点数。其他也是这样:int()转为整数,str()转为字符串。

---------------------------------------- 已经追加完毕 ----------------------------------------

results matching ""

    No results matching ""