zoukankan      html  css  js  c++  java
  • python学习笔记(2)——练习小程序之 " input " 隐藏陷阱

    练习小程序之 ----------" input " 隐藏陷阱

    1 age=input('please enter your age:')
    2 if age>=18:  
    3   print('adult') 
    4 else:
    5     print('teeager')

    报错如下 ↓↓↓↓↓↓

     最后提示 —— 类型错误:非规则 类型:字符串>=整型,也就是说 由于程序将“字符串”与“整型数字”去做 比较运算了,这二者非同一类不能计算,所以报错。

    可我刚才明明给age输入的20啊,20>=18有错吗?难道20,18不是同一类?

    于是用print(type(age))命令查验age被赋值后的类型,果然

     

    此时age的class类是str !!  看来江湖传言是真的,凡是被input过的数据全部被转换成str字符串! 也就是说,其实此时age内存放的是  '20' 而不是20。

    那么,要正确实现结果,需要

    1 age=input('please enter your age:')
    2 age=int(age) //加入强制转换age为int类型的语句
    3 if age>=18:
    4     print('adult')
    5 else:
    6     print('teeager')

    结果运行成功,就不贴图了;虽然是个小知识点,但发现问题,解决问题的感觉是最棒的。

    ----------------------

    我KAO,刚发现还有这种操作

    1 age=input('please enter your age:')
    2 if age>='18':
    3     print('adult')
    4 else:
    5     print('teeager')


    不用int转换age类型,直接把18写成 '18'  ,结果一样可以实现。

    为什么呢?理由有点深... '18'是str,age中输入的数值(假设是 20)也会被input处理成 '20'  ,两个str可以比较大小吗?答案是肯定的,str之间用 Unicode 编码进行大小比较。

    '20'>'18'是肯定的,  'a'>'18' 可以实现吗?答案是 True,因为 'a' 在 Unicode 中的排名是97。在  'a'>'18' 比较中,String 通过 内置函数 ord() 获得每个字符的 Unicode 编码进行大小比较,此处python命令是:

    ord()

    例:

    >>> ord('a')
    97

    其实,str比较的是 “顺序值”,各字符串在 Unicode 编码中所处的顺序值,后序>前序。

    遇到什么写什么,有点乱。。。但真感觉学无止境,一个小点可以扩展出如此大范围,OMG

    PS:关于ord/chr命令的几点扩展

    1、ord()函数主要用来返回对应字符的ascii码(整数码,我更喜欢称其为序列码)

     1 >>> ord('!')
     2 33
     3 >>> ord('$')
     4 36
     5 >>> ord('A')
     6 65
     7 >>> ord('a')
     8 97
     9 >>> ord('0') #此处'0'为ASCII中打印出的0字符,不是整数值
    10 48
    11 >>> ord('1')
    12 49
    13 >>> ord('9')
    14 57

    2、与之相反,chr()主要用来表示ascii码中序列值对应的字符码,可以用十进制,也可以用十六进制。

    1 >>> chr(65)
    2 'A'
    3 >>> chr(97)
    4 'a'
    >>> chr(0x41)
    'A'
    >>> chr(0x40)
    '@'
  • 相关阅读:
    13.线性回归
    12.scikit-learn中的Scaler
    11.数据归一化
    oracle之二表的几种类型
    oracle之二表和表空间的关系
    oracle之二数据字典表和动态性能视图
    oracle之二检查点
    oracle之二管理undo
    oracle之二归档日志
    oracle之二日志挖掘log miner
  • 原文地址:https://www.cnblogs.com/deepblue775737449/p/7546706.html
Copyright © 2011-2022 走看看