写点什么

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

发布于: 2021 年 02 月 07 日
2. 无门槛学会数据类型与输入、输出函数,滚雪球学 Python

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

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


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


2.1 基本数据类型


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


  1. 数值数据类型,常见的是整数和浮点数

  2. 布尔值数据类型,就是常说的真和假

  3. 字符串数据类型


这里要注意,提及到数据类型,特指的是变量的数据类型,在具体学习前,先学会如何看 Python 中的数据类型,才好下手学习。

这个看数据类型是啥的函数,叫做 type,见名之意,所以咱们变量起名字的时候,也要学习一下官方命名技巧。


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


x = 10print(type(x))
复制代码


运行结果为


<class 'int'>
复制代码


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


x = 10.1print(type(x))
复制代码


运行结果显示为:


<class 'float'>
复制代码


没错,这个是浮点数。


2.1.1 数值数据类型


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


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


x = 10.1y = 10z = x + yprint(type(z))
复制代码


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


2.1.2 整数的不同形式表示


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


将整数显示成二进制格式

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


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


x = 10print(bin(x))
复制代码


输出结果为:


0b1010
复制代码


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


将整数显示成八进制格式

将整数转换成八进制用到的内置函数是 oct,具体代码可自行尝试,八进制显示的数字以 0o 开头。

将整数显示成十六进制格式

0x 开头的数字为十六进制格式展示,转换用函数为 hex

截止到这里,你已经对整数与整数的不同形式展示有了初步的认知,并且这些都不重要,重要的是你学习之后,看到 Python 代码中出现以这些符号开头的内容,你知道它就是一个普通的整数就好了。


2.1.3 数据类型强制转换


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


x = 10.5print(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 = -1print(abs(a))# pow() 次方运算x = 2c = 3print(pow(x,c))# round() 四舍五入
d = 34.6print(round(d))# max() 取最大值print(max(1,2,3))# min() 去最小值print(max(9,10,6))
复制代码


2.1.5 布尔值数据类型


布尔来自英文 boolean 的音译,在 Python 中布尔值有两种,一个是真(True),另外一个就是假(False),使用 type 函数测试数据类型布尔值得到的是 bool。

注意 bool 在有的地方也会归为整数,是因为真(True)被强制转换之后等于 1,假(False)被前置转换之后等于 0。

代码如下:


x = Trueprint(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+bprint(c)
复制代码


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


a = 123b = "name"# str(a) 将整数变量a转换成字符串c = str(a) + bprint(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 = 18score = 100
# 格式化一个变量输出print("我是 %s" % name)# 格式化多个变量输出print("我是 %s 今年 %d岁了,我考试得了%d分" % (name,age,score))
复制代码


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

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


name = "橡皮擦"age = 18score = 100
print("我是 %s" % name)print("我是 %s 今年 %d岁了,我考试得了%d分" % (name,"nnn",score))
复制代码


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


name = "橡皮擦"age = 18score = 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 哈哈~**


发布于: 2021 年 02 月 07 日阅读数: 15
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

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