目录:

一、引言

二、数据类型

  >整型

  >浮点型

  >布尔类型

三、类型转换

四、获得关于类型的信息

五、课时05课后习题及答案

***********

一、引言

***********

大家还记得‘520’和520的区别吗?

没错,带了引号的,无论是单引号还是双引号或者是三引号,都是字符串;但不带引号的,就是数字。字符串相加叫作拼接。

>>> ""+''
''
>>> 520+1314
1834

今天来介绍一些Python的数据类型,包括整型、浮点型、布尔类型、复数类型等。

****************

二、数据类型

****************

1、整型

整型说白了,就是平时所见的整数,Python3的整数已经与长整型进行了无缝的结合,现在的Python3的整型类似于Java的BigInteger类型,它的长度不受限制。                                                        如果说非要有个限制,那只限于计算机的虚拟内存总数。所以用Python3很容易进行大数的计算。

2、浮点型

浮点型就是平时所说的小数。Python区分整型和浮点型的唯一方式,就是看有没有小数点。

谈到浮点型,不得不提E记法,E记法就是平常所说的科学记数法,用于表示特别大和特别小的数。

>>> a=0.000000000000000000025
>>> a
2.5e-20
>>> 150000000000
150000000000
>>> 1.5e11
150000000000.0

这个E的意思是指数,指底数为10,E后边的数字是10的多少次幂。

3、布尔类型

布尔类型事实上是特殊的整型,True相当于整数值1,False相当于整数值0.

>>> True + False
1
>>> True + True
2
>>> True/False
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
True/False
ZeroDivisionError: division by zero

当然把True和False当成1和0来参与这种运算的这种做法是不妥的。

***************

三、类型转换

***************

接下来介绍几个跟数据类型紧密相关的函数:int()、float()、str().

1、int()的作用就是将一个字符串或浮点数转换为一个整数

>>> a = ''
>>> b = int(a)
>>> a,b
('', 520)
>>> c = 5.99
>>> d = int(c)
>>> c,d
(5.99, 5)

注意了,如果是浮点数转换为整数,那么Python会采取”截断“处理,就是把小数点后的数据直接砍掉,注意不是四舍五入哦。

补充:

>>> a = int("小甲鱼")
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
a = int("小甲鱼")
ValueError: invalid literal for int() with base 10: '小甲鱼'

”小甲鱼“是一个字符串,但不是一个表示数字的字符串,它是一个编码,编码跟数字没有关系。所以会报错。

2、float()的作用是将一个字符串或整型转换成一个浮点数(就是小数)

>>> a = ""
>>> b = float(a)
>>> a,b
('', 520.0)
>>> c = 520
>>> d = float(c)
>>> c,d
(520, 520.0)

3、str()的作用是将一个数或任意其他类型转换成一个字符串

>>> a = 5.99
>>> b = str(a)
>>> a,b
(5.99, '5.99')
>>> c = str(5e15)
>>> c
'5000000000000000.0'
>>> d = str(15)
>>> d
''
>>> c = str(5e19)
>>> c
'5e+19'

****************************

四、获得关于类型的信息

****************************

Python提供了一个函数,可以明确的告诉我们变量的类型,这就是type函数:

>>> type("")
<class 'str'>
>>> type(5.20)
<class 'float'>
>>> type(520)
<class 'int'>
>>> type(true)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
type(true)
NameError: name 'true' is not defined
>>> type(True)
<class 'bool'>

我们更建议使用isinstance()这个BIF来确定变量的类型。这个BIF有两个参数:第一个是待确定类型的数据;第二个是指定一个数据类型。

>>> type(True)
<class 'bool'>
>>> a = "小甲鱼"
>>> isinstance(a,str)
True
>>> isinstance(520,float)
False
>>> isinstance(520,int)
True

*******************************

五、课时05课后习题及答案

*******************************

测试题:

0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
1. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
4. 取得一个变量的类型,视频中介绍可以使用 type() 和
isinstance(),你更倾向于使用哪个?
5. Python3 可以给变量命名中文名,知道为什么吗?

动动手:

0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。
如果你尝试过以下做法,请举下小手:
temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
# 这种想法是因为type(1)会返回<class 'int'>,如果type(temp)返回结果一致说明输入是整数。
while type(temp) != type(1):
  print("抱歉,输入不合法,", end='')
temp = input("请输入一个整数:")

或者可能这样:

temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")
# not操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase
while not isinstance(temp, int):
print("抱歉,输入不合法,", end='')
temp = input("请输入一个整数:")

以上方法的思路是正确的,不过似乎忽略了一点儿:就是input()的返回值始终是字符串,所以type(temp)永远是<class 'str'>!  
其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。
所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!

s为字符串

s.isalnum()  所有字符都是数字或者字母,为真返回 Ture,否则返回 False。

s.isalpha()  所有字符都是字母,为真返回 Ture,否则返回 False。

s.isdigit()  所有字符都是数字,为真返回 Ture,否则返回 False。

s.islower()  所有字符都是小写,为真返回 Ture,否则返回 False。

s.isupper()  所有字符都是大写,为真返回 Ture,否则返回 False。

s.istitle()  所有单词都是首字母大写,为真返回 Ture,否则返回 False。

s.isspace()  所有字符都是空白字符,为真返回 Ture,否则返回 False。

例如:

>>> s = 'I LOVE FISHC'
>>> s.isupper()
>>> True

好了,文字教程就到这里,大家赶紧趁热打铁,改造我们的小游戏吧!

1. 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。

答案:

测试题答案:

0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?

bool 表示布尔类型
float 表示浮点型
str 表示字符串

1. 你知道为什么布尔类型(bool)的
True 和 False 分别用 1 和 0 来代替吗?

你可能听说过计算机是很“笨”的,究其根本是因为它只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给CPU按照一定的规则解析。
由于二进制只有两个数:0 和 1,因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上!

2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?

我们可爱的小甲鱼说了,小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)

3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?

int() 固然没那么“聪明”,但机器是死的,鱼油是活的!
5.4 “四舍五入”结果为:5,int(5.4+0.5) == 5
5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6
大家看明白了吗?

4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?

建议使用 isinstance(),因为它的返回结果比较直接,另外 type() 其实并没有你想象的那么简单,我们后边会讲到。

5. Python3 可以给变量命名中文名,知道为什么吗?

Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的: 
>>> 小甲鱼 = '我爱你'  
>>> print(小甲鱼)
>>> 我爱你

动动手答案:

0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。
需要注意的地方在代码中已经注释!

 import random
times = 3
secret = random.randint(1,10)
print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")
while (guess != secret) and (times > 0):
temp = input()
while not temp.isdigit():
temp = input("抱歉,您的输入有误,请输入一个整数:")
guess = int(temp)
times = times - 1 # 用户每输入一次,可用机会就-1
if guess == secret:
print("我草,你是小甲鱼心里的蛔虫吗?!")
print("哼,猜中了也没有奖励!")
else:
if guess > secret:
print("哥,大了大了~~~")
else:
print("嘿,小了,小了~~~")
if times > 0:
print("再试一次吧:", end=" ")
else:
print("机会用光咯T_T")
print("游戏结束,不玩啦^_^")

1. 写一个程序,判断给定年份是否为闰年。

 temp = input('请输入一个年份:')
while not temp.isdigit():
temp = input("抱歉,您的输入有误,请输入一个整数:") year = int(temp)
if year/400 == int(year/400):
print(temp + ' 是闰年!')
else:
if (year/4 == int(year/4)) and (year/100 != int(year/100)):
print(temp + ' 是闰年!')
else:
print(temp + ' 不是闰年!')

课时5:闲聊之Python的数据类型的更多相关文章

  1. 闲聊之Python的数据类型 - 零基础入门学习Python005

    闲聊之Python的数据类型 让编程改变世界 Change the world by program Python的数据类型 闲聊之Python的数据类型所谓闲聊,goosip,就是屁大点事可以咱聊上 ...

  2. 零基础入门学习Python(5)--闲聊之Python的数据类型

    前言 本次主要闲聊一下python的一些数值类型,整型(int),浮点型(float),布尔类型(bool),还有e记法(科学计数法),也是属于浮点型. 数值类型介绍 整型 整型就是我们平时所说的整数 ...

  3. python 基本数据类型分析

    在python中,一切都是对象!对象由类创建而来,对象所拥有的功能都来自于类.在本节中,我们了解一下python基本数据类型对象具有哪些功能,我们平常是怎么使用的. 对于python,一切事物都是对象 ...

  4. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  5. python自学笔记(二)python基本数据类型之字符串处理

    一.数据类型的组成分3部分:身份.类型.值 身份:id方法来看它的唯一标识符,内存地址靠这个查看 类型:type方法查看 值:数据项 二.常用基本数据类型 int 整型 boolean 布尔型 str ...

  6. Python入门-数据类型

    一.变量 1)变量定义 name = 100(name是变量名 = 号是赋值号100是变量的值) 2)变量赋值 直接赋值 a=1 链式赋值  a=b=c=1 序列解包赋值  a,b,c = 1,2,3 ...

  7. Python基础:八、python基本数据类型

    一.什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能,计算机虽然很强大,但从某种角度上来看又很傻,除非你明确告诉它,"1"是数字,"壹&quo ...

  8. python之数据类型详解

    python之数据类型详解 二.列表list  (可以存储多个值)(列表内数字不需要加引号) sort s1=[','!'] # s1.sort() # print(s1) -->['!', ' ...

  9. Python特色数据类型(列表)(上)

    Python从零开始系列连载(9)——Python特色数据类型(列表)(上) 原创 2017-10-07 王大伟 Python爱好者社区 列表 列表,可以是这样的: 分享了一波我的网易云音乐列表 今天 ...

随机推荐

  1. 2017.11.6 JavaWeb-----第七章 JavaWeb常用开发模式与案例

    JavaWeb-----第七章 JavaWeb常用开发模式与案例 (1)单纯的JSP页面开发模式 通过在JSP中的脚本标记,直接在JSP页面中实现各种功能.称为"单纯的JSP页面编程模式&q ...

  2. 中期ppt制作

    陀螺仪的使用解释:https://zhuanlan.zhihu.com/p/29244429 手机坐标轴的图片:http://jcjs.siat.ac.cn/ch/reader/create_pdf. ...

  3. override与重载的区别

    override与重载的区别override 与重载的区别,重载是方法的名称相同.参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写.

  4. java自定义泛型 面试题:接收任意数组进行反转 泛型通配符

    不用泛型只能操作某种类型进行反转 代码如下: package com.swift.fanxing; import org.junit.Test; public class RenyiReverse { ...

  5. ssm整合-错误2

    1 警告: No mapping found for HTTP request with URI [/management] in DispatcherServlet with name 'dispa ...

  6. spring boot+log4j2快速使用(一)

    log4j是Apache的一个开源项目,log4j2和log4j是一个作者,只不过log4j2是重新架构的一款日志组件,他抛弃了之前log4j的不足,以及吸取了优秀的logback的设计重新推出的一款 ...

  7. C#基础-面向对象-封装

    封装 命名空间 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApp6 { c ...

  8. 给树莓派Raspbian stretch版本修改软件源

    树莓派最新的系统版本是stretch,试了阿里和网易的软件源都不行,最后试了清华的可以 deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbia ...

  9. Nginx 配置继承模型

    要了解nginx的继承模型,首先需要知道nginx使用多个配置块进行操作.在nginx中,这样的块被称为上下文,例如,放置在服务器上下文中的配置指令驻留在server { }块中,就像放置在http上 ...

  10. linux 共享内存

    共享内存是最高效的IPC机制,因为它不涉及进程之间的任何数据传输.这种高效带来的问题是,我们必须用其他手段来同步进程对共享内存的访问,否则会产生竞态条件.所以,共享内存通常和其他进程间通信方式一起使用 ...