一、测试题
0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
1. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
5. Python3 可以给变量命名中文名,知道为什么吗?
6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?
二、动动手
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 进行灵活运用)
2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
我的答案:
一、
0. bool--布尔型,float--浮点型,str--字符串型。
1. 计算机只认识二进制数,所有的编程语言最终都会转换成简单的二进制,而且二进制只有两个数:0 和 1。因此用 0 和 1 来表示 False 和 True 再适合不过了,因为不用浪费资源在转换的过程上!
2. int()取整是向下取整的。
3.
>>> int(3.4+0.5)
3
>>> int(6.9+0.5)
7
>>>
4. Python在定义变量的时候不用指明具体的的类型,解释器会在运行的时候会自动检查变量的类型,并根据需要进行隐式的类型转化。在实际的开发中,为了提高代码健壮性,仍需要进行数据类型的检查。我们首先想到的就是用type(),比如使用type判断一个int类型。
import types
if type(1) is types.Integer:
print('1是int类型')
else:
print('1不是int类型')
#上面程序输出:1是int类型
# 示例来源:http://www.xinxingzhao.com/blog/2016/05/23/python-type-vs-isinstance.html
我们在types中可以找到一些常用的类型,以python3为例:
types.BuiltinFunctionType # 内建函数,比如int()
types.BuiltinMethodType # 内建方法,指的是类中方法
types.CodeType # 代码块类型
types.DynamicClassAttribute
types.FrameType
types.FunctionType # 函数类型
types.GeneratorType
types.GetSetDescriptorType
types.LambdaType # lambda类型
types.MappingProxyType
types.MemberDescriptorType
types.MethodType # 方法类型
types.ModuleType # module类型
types.SimpleNamespace
types.TracebackType
types.new_class
types.prepare_class
import types
class UserInt(int):
def __init__(self, val=0):
self.val = int(val)
i = 1
n = UserInt(2)
print(type(i) is type(n))
# 输出结果:Faulse
#说明 i 和 n 的类型是不一样的,而实际上UserInt是继承自int的,
#所以这个判断是存在问题的,当我们对Python内建类型进行扩展的时候,
#type返回的结果就不够准确了。
对于内建的基本类型来说,使用tpye来检查是没有问题的,可是当应用到其他场合的时候,type就显得不可靠了。这个时候我们就需要使用isinstance来进行类型检查。
#格式:isinstance(object, classinfo)
>>> type(4)
<class 'int'>
>>> isinstance(4,int)
True
>>> class
5. python3支持中文命名变量名,因为其源码文件默认使用utf-8编码(支持中文)。科普:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
>>> 矩形长 = 3
>>> 矩形宽 = 2
>>> 矩形面积 = 矩形长*矩形宽
>>> 矩形面积
6
二、
0.程序如下:
print('----------文字小游戏3.0版----------')
import random
secret = random.randint(1,10)
chance = 3
guess = 0
print('玩个游戏吧~给你'+str(chance)+'次机会,猜一个1~10范围的整数')
print('请猜一下小甲鱼心里想的数字:',end='嘿,我猜')
while (guess!=secret) and (chance>0):
temp = input()
while not temp.isdigit():
print('抱歉 _||,输入不合法!',end=' ')
temp = input('请输入一个整数:')
guess = int(temp)
chance -= 1
if guess == secret:
print('卧槽,你是小甲鱼肚子里的蛔虫吗!?')
print('哼,猜对了也没有奖励╭╯^╰╮')
else:
if guess > secret:
print('哥,大了!大了!')
else:
print('嘿~小了!小了!')
if chance>0:
print('哎呀!猜错了!请重新输入吧~',end=' ')
else:
print('机会用完了哦⊙o⊙…')
print('游戏结束,不玩了^_^')
1.程序如下:
print('---------------------今年是平年还是闰年呢?--------------------')
temp = input('请输入一个年份的数字:')
while not temp.isdigit():
print('非法输入!')
temp = input('请重新输入数字:')
year = int(temp)
remainder = year%4
if remainder == 0:
print(str(year)+'是闰年')
else:
print(str(year)+'不是闰年')
# 输入2019。输出:>>>2019不是闰年
2. 课堂重点:
- python的数据类型
字符串的相加->>拼接
数字的相加->>数字
类型分类:
1.整型:整型和长整型已结合,长度不受限制
2.浮点型:俗称小数
3.e记法:不属于数据类型。属于一种科学计数法,表示位数很大(小)的数。1.2e11 12E10 e表示10
4.布尔类型:特殊的整型。用Ture或Faulse表示。Ture等于1,Faulse等于0。 - 数据类型的转换:
int()--整型转换。字符串转整(必须是数字形式的字符串,文字形式不行),浮点转整(截断小数点后面的所有数字)
float()--浮点型转换
str()--字符串转换。把整型或浮点型或e记法的数值数字变换成'文本' - 用str(BIF)当做变量时的风险:
使得其BIF的身份被代替,丧失其功能。恢复原来BIF身份的方法:del str -
type()函数用于判断单个变量的类型,比如type(5.3),得出的是<class 'float'>
isinstance()也可以用于判断变量是否属于指定的变量,如isinstance(5.2 int),返回的就是Faulse,说明5.2不是int类型。
参考答案:https://www.jianshu.com/p/e7226241eed0
作者:无罪的坏人
链接:https://www.jianshu.com/p/e7226241eed0
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。