练习小程序之 ----------" 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. 使用Charles进行网络抓包

    一.安装Charles 二.使用 1.http抓包 1.1 现在我们默认是在进行iOS开发,首先确保iPhone和Mac是在同一个局域网下(连同一个WiFi).然后查看Mac的IP地址(打开网络偏好设 ...

  2. io口的作用

    I/O接口的作用     主机与外界交换信息称为输入/输出(I/O).主机与外界的信息交换是通过输入/输出设备进行的.一般的输入/输出设备都是机械的或机电相结合的产物,比方常规的外设有键盘.显示器.打 ...

  3. 读书笔记:Information Architecture for the World Wide Web, 3rd Edition 北极熊 简介

    书籍介绍 Information Architecture for the World Wide Web, 3rd Edition<web信息架构:设计大型网站(第三版)> Designi ...

  4. mongodb由于目标计算机积极拒绝无法连接失败

    这不是mongodb无法启动,是你还没有启动mongodb就来连接使用它了,肯定是不成功的.安装完mongodb后先将bin目录在环境变量下写入path然后在bin同级目录下创建一个db文件夹接着运行 ...

  5. ubuntu12.04通过Ganglia利用NVML模块进行GPU监控

    1.安装Ganglia,这里安装的是3.1*版本,因为监控GPU的模块只支持3.1*版本系列的 apt-get install ganglia* 2.下载并安装PyNVML和NVML模块,下载地址ht ...

  6. JSON参数

    JSON(JavaScript Object Notation,JavaScript 对象表示法),多么简单,不就是键值对嘛. 可是每次在前后端之间通过json作为参数传递,我都心烦意乱,甚至吓到面无 ...

  7. C++中UINT32和INT32以及int,BOOL和bool的差别

    在AndroidHAL层开发中,编写C++代码的时候.遇到了数据类型的困扰.经过查找资料,总结例如以下: 1.UNIT32和int以及INT32的差别: (1).int默认是signed int.也就 ...

  8. Application Warm-up Module IIS7.5 也有Warm Up功能,让ASP.NET 第一次Request不变慢

    Application Warm-up Module: 應用程式的暖機代理人 http://www.microsoft.com/taiwan/technet/iis/expand/Applicatio ...

  9. jquery uploadify在谷歌浏和火狐下无法上传的解决方案(.Net版)

    在项目紧张的进行过程中,jquery uploadify上传不兼容的问题一直没有试着去解决,只幻想着用ie的人越来越多,怎么奈何firefox4刚推出,就有4000万的下载.......仰天长叹,记生 ...

  10. [noi.ac_D1T2]sort

    https://www.zybuluo.com/ysner/note/1289967 题面 定义"翻转排序":每次操作均为把区间\([l,r]\)中所有数倒过来,即\(swap(a ...