练习小程序之 ----------" 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. VC,VB程序button、图标样式美化

    此处的"美化"指的不是通过代码进行美化你的程序.关于想进一步优化自己的程序界面的,最好还是去了解下SkinSharp吧.本文提及的是利用第三方资源编辑软件在不更改程序不论什么框架和 ...

  2. mysql改动默认的环境的字符集为utf-8

    mysql改动环境的默认字符集为utf-8(当然你也能够设置成别的,国际点还是utf-8好) 假设不把mysql字符集统一下.后面还是有点麻烦的 首先得在服务里关掉mysql的服务(一定要先关掉mys ...

  3. Cracking the Coding Interview 150题(一)

    1.数组与字符串 1.1 实现一个算法,确定一个字符串的所有字符是否全都不同.假设不允许使用额外的数据结构,又该如何处理? 1.2 用C或C++实现void reverse(char* str)函数, ...

  4. WPF中的常用布局 栈的实现 一个关于素数的神奇性质 C# defualt关键字默认值用法 接口通俗理解 C# Json序列化和反序列化 ASP.NET CORE系列【五】webapi整理以及RESTful风格化

    WPF中的常用布局   一 写在开头1.1 写在开头微软是一家伟大的公司.评价一门技术的好坏得看具体的需求,没有哪门技术是面面俱到地好,应该抛弃对微软和微软的技术的偏见. 1.2 本文内容本文主要内容 ...

  5. 改动ScrollView的滑动速度和解决ScrollView与ViewPager的冲突

    话不多说,非常easy,能够从凝视中知道做法,直接上代码: 1.改动ScrollView的滑动速度: public class MyHorizontalScrollView extends Horiz ...

  6. JspSmartUpload 实现上传

    2.save  作用:将所有上传文件保存到指定文件夹下,并返回保存的文件个数. 原型:public int save(String destPathName)  和public int save(St ...

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

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

  8. Paypal支付(一)MPL真正的快捷支付

    一.前导 前面讲到了MEC支付,是在Web端集成好的,在手机端仅仅需通过WebView进行载入就可以,不须要不论什么Paypal第三方架包.以下将的是MPL支付.须要架包. 这样的支付的形式能够參考以 ...

  9. 函数计算 触发式计算 日志 MP3 图片 合成视频

    函数计算 触发式计算   日志  MP3 图片 合成视频 [start_time]:20120511 06:59:11 [20120511 06:59:11_0.4950568322522534]: ...

  10. 下载的php_yal.dll文件添加到php的ext

    下载的php_yal.dll文件添加到php的ext http://pecl.php.net/package/yaf/3.0.6/windows yaf. use_namespace=1 ;;exte ...