005 Python的数值类型

005 Python的数值类型

BIF    指的是内置函数,一般不作为变量命名。如 input,while,if,else,float,等等。
整型:整数。(python3.0版本把整型和长整型结合在一起,长度不受限制)
浮点型:小数点。如3.1415
python 区分整型和浮点型数值最直观的方式是看有无小数点。
e记法,科学计数法。 如
  >>> a =0.0000000000000000000000000000000000054
>>> a
5.4 e-36
>>> 
  >>> 150000000000
150000000000
>>> 1.5 e11#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'
>>>   
获得关于类型的信息
在上节课的作业中,如果我们输入的不是数字,会出现什么情况?如下图
005 Python的数值类型_第1张图片
直接报错崩溃。那么应该如何改进这个源代码?
获得关于类型的信息有两种函数:
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):# 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 ( )的含义

你可能感兴趣的:(python)