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

 age=input('please enter your age:')
if age>=18:
  print('adult')
else:
   print('teeager')

报错如下 ↓↓↓↓↓↓

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

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

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

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

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

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

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

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

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

 age=input('please enter your age:')
if age>='18':
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码(整数码,我更喜欢称其为序列码)

 >>> ord('!')
33
>>> ord('$')
36
>>> ord('A')
65
>>> ord('a')
97
>>> ord('') #此处'0'为ASCII中打印出的0字符,不是整数值
48
>>> ord('')
49
>>> ord('')
57

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

 >>> chr(65)
'A'
>>> chr(97)
'a'
>>> chr(0x41)
'A'
>>> chr(0x40)
'@'

python学习笔记(2)——练习小程序之 " input " 隐藏陷阱的更多相关文章

  1. Python学习笔记2_一些小程序

    counts = [98,12,3,4,1,4,9,3821] minNum = min(counts) #print minNum minNum_index = counts.index(minNu ...

  2. 微信小程序开发:学习笔记[7]——理解小程序的宿主环境

    微信小程序开发:学习笔记[7]——理解小程序的宿主环境 渲染层与逻辑层 小程序的运行环境分成渲染层和逻辑层. 程序构造器

  3. mpvue学习笔记-之微信小程序数据请求封装

    简介 美团出品的mpvue已经开源出来很久了,一直说要进行一次实践,这不最近一次个人小程序开发就用上了它. 看了微信官方的数据请求模块--request,对比了下get和post请求的代码,发现如果在 ...

  4. python学习笔记(六)——程序调试

    在我们平时编写程序时,常常会遇到各种错误,俗称BUG.而我们程序猿的工作常常需要对程序进行调试,也就是所谓的debug. 程序调试是将编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法 ...

  5. python学习day4--python基础--购物小程序

    '''购物小程序:用户启动时先输入工资用户启动程序后打印商品列表允许用户选择购买商品允许用户不断购买各种商品购买时检测余额是否够,如果够直接扣款,否则打印余额不足允许用户主动退出程序,退出时打印已购商 ...

  6. c++学习笔记---03---从一个小程序说起2

    从一个小程序说起2 要求:编写一个程序,要求用户输入一串整数和任意数目的空格,这些整数必须位于同一行中,但允许出现在该行中的任何位置.当用户按下键盘上的"Enter"键时,数据输入 ...

  7. c++学习笔记---02---从一个小程序说起

    从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...

  8. python学习笔记(12)--程序设计方法学

    计算思维: 逻辑思维:推演和演绎 实证思维:实验和验证,引力波->实验 计算思维:设计和构造,计算机为代表,汉诺塔递归. 计算思维特征 抽象和自动化,抽象问题的计算过程,利用计算机自动化求解. ...

  9. [python学习笔记] pyinstaller打包pyqt5程序无法运行

    问题 pyinstaller打包的pyqt5程序在部分电脑上会失败.用户截图提示下边错误日志 无法定位程序输入点 ucrtbase.terminate 于动态链接库 api-ms-win-crt-ru ...

随机推荐

  1. NA交换①

    常用的交换设备:     交换机(ASIC)和网桥(Brigde):     交换机的三种转发方式:     直通式(Cut-Through):一旦检测到MAC即转发,速度快但是无法保证准确性:    ...

  2. oracle导入命令,记录一下 数据库日志太大,清理日志文件

    oracle导入命令,记录一下 工作中用到了,这个命令,记录一下,前提要安装imp.exe imp PECARD_HN/PECARD_HN@127.0.0.1:1521/orcl file=E:\wo ...

  3. ubuntu14.04 的ibus不能卸载(安装fcitx输入法框架时可能有这个需求)。出现无system setting有用程序

    每年的ubuntu新版本号公布,都会吸引一大批热血青年. 关注越多也让ubuntu越来越好了. 使用ubuntu的人都会在安装系统之后马上安装顺手的输入法,也可能不会.看人. 安装输入法,对于中文输入 ...

  4. 第一天,Robert和Sue大师培训给的启示

    程序猿的零点从他睡觉那一刻开始计时. 今天是周六,听到了Robert关于销售技巧的培训还有Sue关于微信零售业O2O电商的分析,一并加上昨天晚上直到11点的Leadership培训,这个周末真的是收获 ...

  5. hdu, KMP algorithm, linear string search algorithm, a nice reference provided

    reference: Rabin-Karp and Knuth-Morris-Pratt Algorithms By TheLlama– TopCoder Member https://www.top ...

  6. 关于mysql建立索引 复合索引 索引类型

    这两天有个非常强烈的感觉就是自己在一些特别的情况下还是hold不住,脑子easy放空或者说一下子不知道怎么去分析问题了,比方,问"hash和btree索引的差别",这非常难吗.仅仅 ...

  7. SparkSQL与Hive on Spark

    SparkSQL与Hive on Spark的比较 简要介绍了SparkSQL与Hive on Spark的区别与联系  一.关于Spark 简介 在Hadoop的整个生态系统中,Spark和MapR ...

  8. [2017SEERC]Divide and Conquer

    https://www.zybuluo.com/ysner/note/1308834 题面 一个有\(n\)个点的图,上面有有两棵不同的生成树.问至少切断几条边,可以使原图不联通.并输出方案数. \( ...

  9. POJ3709 K-Anonymous Sequence 斜率优化DP

    POJ3709 题意很简单 给n个递增整数(n<=500000)和一种操作(选择任意个数 使他们减少整数值) 使得对于所有的整数 在数列中 有k个相等的数 O(n^2)的DP方程很容易得出 如下 ...

  10. window系统 查看端口 被哪个进程占用了

    一.在windows命令行窗口下执行:运行--cmdC:\>netstat -aon|findstr "8080" TCP     127.0.0.1:80       0. ...