005 Python的数值类型
BIF 指的是内置函数,一般不作为变量命名。如
input,while,if,else,float,等等。
整型:整数。(python3.0版本把整型和长整型结合在一起,长度不受限制)
浮点型:小数点。如3.1415
python 区分整型和浮点型数值最直观的方式是看有无小数点。
e记法,科学计数法。 如
>>> a =0.0000000000000000000000000000000000054
整型:整数。(python3.0版本把整型和长整型结合在一起,长度不受限制)
浮点型:小数点。如3.1415
python 区分整型和浮点型数值最直观的方式是看有无小数点。
e记法,科学计数法。 如
>>> a =0.0000000000000000000000000000000000054
>>> a
5.4e-36
>>>
>>> 150000000000
>>> 150000000000
150000000000
>>> 1.5e11#e表示10,后面的11表示10的11次方
150000000000.0
>>>
如
>>> 1.5e4
如
>>> 1.5e4
15000.0
>>>
布尔类型(true/false)
true=1
false=0
是可以用于计算的
如
>>> b = int(‘飞鱼‘)#飞鱼 属于文本,不是数值,因此会报错。
布尔类型(true/false)
true=1
false=0
是可以用于计算的
如
>>> True +True
2
>>> True + False
1
>>> False + False
>>>
注意,True和False的首字母必须得大写。不然python不识别为布尔类型
PS: 把布尔类型当成是1和0用来计算的这种做法是不妥的。仅作了解,实际应用中不能这样做。
整数与浮点数和字符串数值间的转换:
整数 int() 将一个字符串、浮点数转化为一个整数。
例如:注意,True和False的首字母必须得大写。不然python不识别为布尔类型
PS: 把布尔类型当成是1和0用来计算的这种做法是不妥的。仅作了解,实际应用中不能这样做。
整数与浮点数和字符串数值间的转换:
整数 int() 将一个字符串、浮点数转化为一个整数。
>>> a = ‘520‘
>>> b = int(a)
>>> b
520
>>> >>> b = int(‘飞鱼‘)#飞鱼 属于文本,不是数值,因此会报错。
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
b = int(‘飞鱼‘)
ValueError: invalid literal for int() with base 10: ‘飞鱼‘
>>>
>>> a = 5.99
>>> a = 5.99
>>> c = int(a)
>>> c
5#注意,如果是浮点数转化为整数,python为了效率高会采取截断处理,直接把小数点后面的数字砍掉。
>>>
浮点数float() 将字符串或者整数转化为浮点数。
如:
字符串str() 将一个数值或者任何其他类型转化为字符串
如:
>>> a = 5.99
浮点数float() 将字符串或者整数转化为浮点数。
如:
>>> a = ‘520‘
>>> b = float(a)
>>> b
520.0
>>> >>> a = 520
>>> b = float(a)
>>> b
520.0
>>> 字符串str() 将一个数值或者任何其他类型转化为字符串
如:
>>> a = 5.99
>>> b = str(a)
>>> b
‘5.99‘
#注意这里有引号,表示字符串
>>>
获得关于类型的信息
在上节课的作业中,如果我们输入的不是数字,会出现什么情况?如下图
直接报错崩溃。那么应该如何改进这个源代码?
获得关于类型的信息有两种函数:
type()
用法:
isinstance() #python建议我们使用这个函数来确定数据类型。
如:
拓展:
课后测试>>> c = str(5e19) #
注意,这里的5e19是上面所提到的e记法,就是科学计算法,19是正19,因此转化为字符串的时候有个+号
>>> c
‘5e+19‘
>>> 获得关于类型的信息
在上节课的作业中,如果我们输入的不是数字,会出现什么情况?如下图
直接报错崩溃。那么应该如何改进这个源代码?
获得关于类型的信息有两种函数:
type()
用法:
>>> a = ‘520‘
>>> type(a)
<class ‘str‘>
>>> type(5.2)
<class ‘float‘>
>>> type(True)
<class ‘bool‘>
>>> type(5e19)
<class ‘float‘>
>>> type(52)
<class
‘int‘>
>>> isinstance() #python建议我们使用这个函数来确定数据类型。
如:
>>> isinstance (a,str)
True
>>> isinstance (a,int)
False
>>> isinstance (320,int)
True
>>> isinstance (320.25,float)
True
>>> isinstance (320.25,bool)
False
>>>
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
0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
答:bool布尔类型,float浮点型,str字符串
1. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
答:直接去掉小数点后面的数字向下取整。
3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
int() 固然没那么“聪明”,但机器是死的,鱼油是活的!
5.4 “四舍五入”结果为:5,int(5.4+0.5) == 5
5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6
4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
答:无所谓,但既然python帮助文档建议我们使用isinstance(),那就这个吧。
5. Python3 可以给变量命名中文名,知道为什么吗?
答:难道是无所不能的兼容性?反正我是不会用中文命名的。
Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的:
>>> 小甲鱼 = ‘我爱你‘
>>> print(小甲鱼)
>>> 我爱你
6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?
答:10分满分的话,难度系数大概在6左右吧。可以接受。但得好好消化。
操作题:
0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。
import random
secret = random.randint (1,10)
print(‘猜字谜‘)
temp = input (‘猜猜我心里想的是什么数字?‘)
guess = 0
while guess != secret:
while not temp.isdigit():
temp = input(‘输入错误,请再次输入:‘)
temp = input (‘错了错了错了!!‘)
guess = int (temp)
if guess == secret:
print(‘wtf,你是我心里的蛔虫吗?‘)
else:
if guess > secret:
print(‘大了大了!!‘)
else:
print(‘小了小了!!‘)
print(‘游戏结束,又被坑了吧!!‘)
注意红色部分,guess =
0表示必须先赋值给guess这个变量,while not temp.isdigit():表示
当temp.isdigit()返回值为False的时候(not temp.isdigit()表示为not
True)
改进部分:
改进部分:
import random
times = 3
secret = random.randint (1,10)#随机函数
print(‘猜字谜‘)
#先给出guess赋值(赋一个绝对不等于secret的值)
guess = 0
#print()默认是打印完字符串会自动添加一个换行符,end=" "参数告诉print()用空格代替换行
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(‘wtf,你是我心里的蛔虫吗?‘)
else:
if guess > secret:
print(‘大了大了!!‘)
else:
print(‘小了小了!!‘)
if times > 0:
print (‘再试一次吧:‘, end = ‘ ‘)
else:
print(‘机会用完了,退下吧。‘)
print(‘游戏结束,又被坑了吧!!‘)
ps:该部分需重点消化!!!
1. 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。
a = input(‘请输入一个年份:‘)
while not a.isdigit():#判断temp.isdigit()是否为真
a = input(‘这是年份吗?再输入一次!‘)
year = int(a)#给变量year赋值:整型
if year/400 == int(year/400):
print(a + ‘是闰年!‘)
else:
print(a +‘不是闰年!‘)
加入输入次数限制,并在说出闰年的同时终止循环:
课时小结:
i = 5
while i > 0:
a = input(‘请输入一个闰年年份:‘)
while not a.isdigit():#判断temp.isdigit()是否为真
a = input(‘这是年份吗?再输入一次!‘)
year = int(a)#给变量year赋值:整型
if year/400 == int(year/400):#闰年计算方法,能够被400或者4整除
print(‘恭喜你答对了‘+ a + ‘是闰年!‘)
print(‘good job‘)
break#当条件成熟时终止循环
else:
print(a +‘不是闰年!‘)
i = i - 1
if i > 0:
print(‘try again‘)
else:
print(‘no chance,bye‘)
运行效果如下:
while循环
年份判断
真:是闰年
假:不是闰年
循环结束
在循环语句的编写方面,由于我是0基础,只能参考上节课的作业和内容,当运行成功时那种成就感是油然而生!!其中看到红字部分的break这个bif我是通过百度查找出来的。目前教程还没讲到。
>>>
请输入一个闰年年份:65
65不是闰年!
try again
请输入一个闰年年份:65
65不是闰年!
try again
请输入一个闰年年份:800
恭喜你答对了800是闰年!
good job
>>>
思路如下:
i = 5
while i > 0:#添加循环
a = input(‘请输入一个闰年年份:‘)
while not a.isdigit():#判断temp.isdigit()是否为真
a = input(‘这是年份吗?再输入一次!‘)
year = int(a)#给变量year赋值:整型
if year/400 == int(year/400):#闰年计算方法,能够被400或者4整除
print(‘恭喜你答对了‘+ a + ‘是闰年!‘)
print(‘good job‘)
break#当条件成熟时终止循环
else:
print(a +‘不是闰年!‘)
i = i - 1
if i > 0:
print(‘try again‘)
else:
print(‘no chance,bye‘)
在代码中红字部分是添加循环部分,这点参考了上节课的内容,尝试了很多遍,后来灵机一动,我们要循环的语句是年份的判断
,那么我直接把年份判断的代码放到while框架里,结构如下:while循环
年份判断
真:是闰年
假:不是闰年
循环结束
在循环语句的编写方面,由于我是0基础,只能参考上节课的作业和内容,当运行成功时那种成就感是油然而生!!其中看到红字部分的break这个bif我是通过百度查找出来的。目前教程还没讲到。
课时小结:
1、python的数值类型及其转换:整型(整数)int();浮点型(小数点)float();布尔型(bool)True or
False;字串符str()
2、
while循环语句的加深理解。
3、 .isdigit()的含义
3、 .isdigit()的含义