zoukankan      html  css  js  c++  java
  • 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()的含义
  • 相关阅读:
    Linux之开源软件移植
    数学问题的解题方法(模板)
    图论相关算法理解和总结
    关于ACM,关于CSU
    hdu 4607(树的直径)
    树的直径
    SGU-181 X-Sequence
    1629 B君的圆锥
    1134 最长递增子序列(暴力写的)
    1483 化学变换(暴力)
  • 原文地址:https://www.cnblogs.com/fishdm/p/3572963.html
Copyright © 2011-2022 走看看