005 Python的数值类型

005 Python的数值类型

BIF    指的是内置函数,一般不作为变量命名。如 input,while,if,else,float,等等。
整型:整数。(python3.0版本把整型和长整型结合在一起,长度不受限制)
浮点型:小数点。如3.1415
python 区分整型和浮点型数值最直观的方式是看有无小数点。
e记法,科学计数法。 如
 >>> a =0.0000000000000000000000000000000000054
>>> a
5.4e-36
>>> 
 >>> 150000000000
150000000000
>>> 1.5e11#e表示10,后面的11表示10的11次方
150000000000.0
>>> 

 >>> 1.5e4
15000.0
>>> 
布尔类型(true/false)
true=1
false=0
是可以用于计算的

>>> True +True
2
>>> True + False
1
>>> False + False
0
>>> 
注意,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
>>> c = int(a)
>>> c
5#注意,如果是浮点数转化为整数,python为了效率高会采取截断处理,直接把小数点后面的数字砍掉。
>>> 

浮点数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'            #注意这里有引号,表示字符串
>>>
>>> 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('')
#guesssecret
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):#4004
        print(''+ a + '')
        print('good job')
        break#
    else:
        print(a +'')
        i = i - 1
        if i > 0:
            print('try again')
        else:
            print('no chance,bye')
运行效果如下: 
>>> 
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):#4004
        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()的含义
posted @ 2014-02-28 10:11  小丑戌  阅读(1717)  评论(0编辑  收藏  举报