2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python

举报
梦想橡皮擦 发表于 2021/07/19 14:11:17 2021/07/19
【摘要】 学习一门语言应该是一件充满乐趣的事情,为什么要把它变难呢?本系列文章将在2021年春节前完成,欢迎关注,点赞,评论 --- 梦想橡皮擦 二、Python 基本数据类型与输入、输出函数 2.1 基本数据类型对于任何一门语言都存在一些基本类型,Python 也不例外,只不过数据类型在 Python 中要远远比其他语言简单,基本分为以下几种。数值数据类型,常见的是整数和浮点数布尔值数据类型,就是常...

学习一门语言应该是一件充满乐趣的事情,为什么要把它变难呢?

本系列文章将在2021年春节前完成,欢迎关注,点赞,评论 --- 梦想橡皮擦

二、Python 基本数据类型与输入、输出函数

2.1 基本数据类型

对于任何一门语言都存在一些基本类型,Python 也不例外,只不过数据类型在 Python 中要远远比其他语言简单,基本分为以下几种。

  1. 数值数据类型,常见的是整数和浮点数
  2. 布尔值数据类型,就是常说的真和假
  3. 字符串数据类型

这里要注意,提及到数据类型,特指的是变量的数据类型,在具体学习前,先学会如何看 Python 中的数据类型,才好下手学习。
这个看数据类型是啥的函数,叫做 type,见名之意,所以咱们变量起名字的时候,也要学习一下官方命名技巧。

例如,看一下一个值为 10 的变量 x 的数据类型,代码如下:

x = 10
print(type(x))

运行结果为

<class 'int'>

该输出结果就表示变量 x 的数据类型是整数,你可以用同样的办法测试一个小数。

x = 10.1
print(type(x))

运行结果显示为:

<class 'float'>

没错,这个是浮点数。

2.1.1 数值数据类型

上文你已经接触到了 Python 中的两种数值数据类型,一个叫做整数,一个叫做浮点数,对应到数学上的区别就是一个带小数点,一个不带,其实这就是最根本的区别。

如果整数和浮点数相加,最终的结果是浮点数,Python 会自动给转换过去,代码如下:

x = 10.1
y = 10
z = x + y
print(type(z))

运行代码,可以核对下 z 的数据类型是否是 float 即浮点数。

2.1.2 整数的不同形式表示

对于编程语言学习者来说,你一定听说过计算机处理的都是二进制,所以编程语言学起来特别难?What?学习编程语言跟二进制是有关系,但是跟你学会一门赚钱的手艺确没啥关系。或者我说的在直接一些,你在北京拿个 1W 块钱的薪水,各种进制的转换可能你都用不到。

将整数显示成二进制格式
注意一会还会将整数显示成八进制与十六进制,这里处理的都是整数,也就是 1,2,3,4 这种不带小数点的,浮点先不要考虑。

又一次需要用到一个后续才会明确的知识点,叫做 Python 内置函数,将整数转换成二进制格式显示用到的函数叫做 bin,代码如下:

x = 10
print(bin(x))

输出结果为:

0b1010

二进制以 0b 开头,后面都是 1,0 排列,如果你看到 Python 代码中出现了这样的整数,要认识这就是一个普通的数字,只是展示方式不同。

将整数显示成八进制格式
将整数转换成八进制用到的内置函数是 oct,具体代码可自行尝试,八进制显示的数字以 0o 开头。
将整数显示成十六进制格式
0x 开头的数字为十六进制格式展示,转换用函数为 hex
截止到这里,你已经对整数与整数的不同形式展示有了初步的认知,并且这些都不重要,重要的是你学习之后,看到 Python 代码中出现以这些符号开头的内容,你知道它就是一个普通的整数就好了。

2.1.3 数据类型强制转换

这个地方只是类型强制转换的冰山一角,为何学习也是因为你已经掌握了整数和浮点数,大概也对它们之前的区别有了那么一丝认识。其实它们之前还可以进行互相的转换,只不过转换你要承担一些风险,为啥呢,往下看。

x = 10.5
print(int(x))

上述代码,我将浮点数进行了类型强制转换,注意在 x 前面套了一个 int 函数的壳,函数后面咱才会学习,现在你能模仿代码编写,能看懂我说的是啥就行。

在变量 x 外面套了一个 int()函数,然后运行,输出的结果是 10,风险出现了,浮点数转换成整数,小数丢掉了…是真正的丢掉了,这种场景在后续编程中你会经常碰到。

int 其实也是 Python 的一个内置函数,它会尝试将任何数据类型的变量转换成整数,注意是任何数据类型的变量。

同理,你如果能猜到将任何数据类型的变量转换成浮点数的函数名为 float,证明你已经开始慢慢摸到 python 的精髓了。

好,到现在,又学习到了两个内置函数,一个 int,一个 float,请一定要实际的打一下代码,眼睛会,手不一定会。

2.1.4 扩展几个数值数据类型常用的函数

虽然学的不多,你现在应该注意到一个词 – 函数出现的频率在 Python 中极高,这也是为什么很多其他语言的使用者,会把 Python 藐视成一堆函数凑成的语言了,哼~浅薄者。

数值数据类型常用的函数,这里简单举几个例子,后面还会详细学习。

  • abs() 计算绝对值
  • pow() 次方运算
  • round() 四舍五入
  • max() 取最大值
  • min() 去最小值

参考代码如下,临摹 2 遍知道是在干啥就行,下面的代码涉及了函数中参数的概念,不做过多的解释。

# abs() 计算绝对值
a = -1
print(abs(a))
# pow() 次方运算
x = 2
c = 3
print(pow(x,c))
# round() 四舍五入

d = 34.6
print(round(d))
# max()  取最大值
print(max(1,2,3))
# min() 去最小值
print(min(9,10,6))

2.1.5 布尔值数据类型

布尔来自英文 boolean 的音译,在 Python 中布尔值有两种,一个是真(True),另外一个就是假(False),使用 type 函数测试数据类型布尔值得到的是 bool。
注意 bool 在有的地方也会归为整数,是因为真(True)被强制转换之后等于 1,假(False)被前置转换之后等于 0。
代码如下:

x = True
print(int(x))
print(int(False))

布尔值以后会经常用在条件判断上,属于必须掌握的知识点,后续咱还会碰到它。

2.1.6 字符串数据类型

字符串是 Python 中使用场景最多的数据类型了,也是知识点最多的数据类型,一般情况下,两个双引号(")或者两个单引号(')中间的部分就是字符串,在使用的时候一定要注意嵌套问题。例如下述代码:

my_name = "梦想橡皮擦"
print(my_name)

my_name = '梦想橡皮擦'
print(my_name)

my_name = '梦想"橡皮擦'
print(my_name)
print(type(my_name))

下面这句话要记住,单双引号都是成对出现的,双引号里面要嵌套单引号,例如上述第三段代码,单引号里面要嵌套双引号。

字符串的连接
两个字符串通过 + 可以进行连接,这里的加号就不是数字之间加法的含义了,测试如下:

a = "my"
b = "name"

c = a+b
print(c)

数字与字符串相加,会提示错误,如果不想报错,可以通过 str 函数将数字转换成字符串,例如:

a = 123
b = "name"
# str(a) 将整数变量a转换成字符串
c = str(a) + b
print(c)

多行字符串
在前文已经学习了三引号可用于注释,其实三引号真正的用途依旧是字符串场景,表示多行字符串。

my_str = """
我是字符串的第一行
我是字符串的第二行
我是梦想橡皮擦
我还是曾经那个少年
"""
print(my_str)

转义(逸出)字符
在字符串中有一些特殊的字符,需要特别处理,例如,就想在单引号中使用单引号,那需要如下格式编写:

a = 'I\'m a girl '
print(a)

注意,使用\' 之后就可以在单引号字符串中使用单引号了,\' 就是转义字符。常见的转义字符如下:

转义字符 含义
单引号
" 双引号
\t 制表符
\n 换行
\ 反斜杠

还有其他转义字符,初学阶段不做展开,以上几个在代码中尝试两遍,还是知道是干啥的即可。
当然有些时候,你需要避免转移字符进行转义,那需要在整体字符串前增加一个特殊的字母 r,字符串前面增加特殊字符有很多,今天只学习这一个。例如下述代码。

a = r"I\nm a girl"
print(a)

此时的\n不会转义成换行符,输出内容就是字符串原有的样子:

I\nm a girl

使用pycharm这款工具,你能很清楚的认出转义字符来,它存在颜色区分:

字符串快速复制
Python 中有一个独特的小技巧,可以快速复制字符串,使用的是数学符号 *,例如下述代码,将快速复制一堆 # 号。

print("#"*100)

2.2 输入与输出

本小节核心学习的两个函数,一个是 print,另一个是 input,在学习它们两个之前,在补充一个内置函数 help 该函数可以查看其它函数的使用文档。比如使用 print 测试:

help(print)

输出内容如下图所示:

这其中就包含了 print 函数的完整说明,最重要的部分如下:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

其中:

  • value 表示要输出的数据,可以多个,用逗号 , 分隔
  • sep 输出多个数据时,分隔符号,默认是空格
  • end 输出一行末尾输出的符号
  • file 输出位置,默认输出控制台,就是黑窗口中,可以设置到具体文件
  • flush 是否清除数据流缓冲区,默认为 False(该内容先不做涉及)

以上这些其实准确的说法是函数参数

编写测试代码,可临摹运行:

# 输出多个数据
print("hello","dream")

# 多个数据输出的分隔符
print("i","love",sep="#")

运行结果和其它参数自行测试,上述内容重点为多个数据输出,即 print(a,b,d,d) 必须掌握。

2.2.1 格式化 print 输出

在很多教材中本部分内容会占用比较多的时间,其实大可不必,因为东西太杂,学过反而忘记了,不如简单学习在大脑留下一个“恩,有这个东西”的痕迹即可。

格式化输出就是这样一个碎的知识点,格式化输出 print 的意思就是按照你的意思输出东西到任何载体上。

首先要学习的就是 格式化字符,常见的有下面这几个。

  • %d 整数输出
  • %f 浮点数输出
  • %x 十六进制输出
  • %o 八进制
  • %s 字符串输出,其实会这一个就行了

例如下述代码就是一个案例:

name = "橡皮擦"
age = 18
score = 100

# 格式化一个变量输出
print("我是 %s" % name)
# 格式化多个变量输出
print("我是 %s 今年 %d岁了,我考试得了%d分" % (name,age,score))

注意格式化的时候,前面是一个待格式的字符串,把格式化字符作为一个特殊的符号放在一个字符串里面,相当于占了一个坑位,字符串后面跟着一个 %,该符号固定为 %,在后面是替换的内容,可以是变量名,也可以直接是值,如果前面的占位的是 %d,后面就是数字,如果是 %s,后面就是字符串。一般这里会配上下图进行说明:

如果占位的格式化字符和后面给的实际变量的值匹配不上,例如前面是 %d,后面 age 给了一个字符串,就会报错:

name = "橡皮擦"
age = 18
score = 100

print("我是 %s" % name)
print("我是 %s 今年 %d岁了,我考试得了%d分" % (name,"nnn",score))

但是如果前面是 %s,后面给字符串,就会自动转换过去。

name = "橡皮擦"
age = 18
score = 100

print("我是 %s" % name)
print("我是 %s 今年 %s岁了,我考试得了%d分" % (name,18,score))

所以一般不严格的时候,前面的占位符通通用 %s 就可以了。不严谨,但是好用啊~

精准控制格式化的输出
精准化输出主要用于浮点数,因为浮点数存在小数点,控制小数点显示的位数就显得重要了,本文不做过多的涉及,经验告诉我,很多同学学过去也就忘记了,你只需要记住 Python 也可以精准控制浮点数的显示就可以了。

2.2.2 format 函数

上述 % 在学习阶段使用一下还可以,在实际的格式化输出中,更多的还是使用 format 进行操作,format 在使用的时候,通过 {} 符号进行占位,例如:

print("我是{},今年{},考试得了{}".format(name,age,score))

所有需要占位的地方都使用 {} 解决,不用去记住各种类型,也不会出现 % 这个莫名奇妙的符号。

2.2.3 input 数据输入

input 执行的和 print 恰好想法,通过 help 查看一下:

参数比较简单只有一个输入提示语。测试代码:

name = input("请输入你的姓名:")
print("输入的姓名为{}".format(name))

代码运行会要求你输入自己的姓名,回车之后会格式化输出。默认情况下 input 获取的输入数据会存储到一个变量中,本例为 name,该变量类型为字符串类型,如果你需要获取用户输入数字,记得通过 int 进行一下转换。

input 比较简单,本文先介绍这些。

2.3 这篇博客的总结

以上内容核心介绍了整数、浮点数、布尔与字符串数据类型,重点要掌握的是类型之间的转换与字符串的初步认识,对于格式化输出部分掌握 format 即可应付接下来的大多数场景,其余内容酌情遗忘吧,毕竟学编程还是蛮费脑力的。

最后一碗毒鸡汤

好好学下去 每天都有新打击O(∩_∩)O 哈哈~

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。