python中input()与raw_input()的区别分析


Posted in Python onFebruary 27, 2016

使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的
纯数字输入

当输入为纯数字时

input返回的是数值类型,如int,float
raw_inpout返回的是字符串类型,string类型

输入字符串为表达式

input会计算在字符串中的数字表达式,而raw_input不会。

如输入 “57 + 3”:

input会得到整数60
raw_input会得到字符串”57 + 3”

python input的实现

看python input的文档,可以看到input其实是通过raw_input来实现的,原理很简单,就下面一行代码:

def input(prompt):
return (eval(raw_input(prompt)))

Python raw_input 读取输入值

下面介绍了python raw_input的用法,
使用raw_input 能够很方便的从控制台读入数据。

1.输入字符串

#!/usr/bin/env python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
  # 13222319810101****
  nID = ''
  while 1:
    nID = raw_input("Input your id :")
    if len(nID) != len("13222319810101****"):
      print 'wring length of id,input again'
    else:
      break

  print 'your id is %s' % (nID)

结果:

python中input()与raw_input()的区别分析

2.输入整数

#!/usr/bin/env python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
  nAge = int(raw_input("input your age :\n"))
  if nAge > 0 and nAge < 120:
    print 'thanks!'
  else:
    print 'bad age'
  print 'your age is %d\n' % nAge

结果:

python中input()与raw_input()的区别分析

3.输入浮点型

#!/usr/bin/env python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
  fWeight = 0.0
  fWeight = float(raw_input("input your weight\n"))
  print 'your weight is %f' % fWeight

结果:

python中input()与raw_input()的区别分析

4.输入16进制数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
  nHex = int(raw_input('input hex value(like 0x20):\n'), 16)
  print 'nHex = %x,nOct = %d\n' % (nHex, nHex)

结果:

python中input()与raw_input()的区别分析

5.输入8进制数据

#!/usr/bin/env python
# -*- coding:utf-8 -*-

if __name__ == '__main__':
  nOct = int(raw_input('input oct value(like 020):\n'), 8)
  print 'nOct = %o,nDec = %d\n' % (nOct, nOct)

结果:

python中input()与raw_input()的区别分析

以下是其他网友的补充

我们来看input的源码

def input(prompt):
return eval(raw_input(prompt)) 

其实input也是调用了raw_input,只是做了eval处理

而eval有什么作用呢?

input:会根据用户的输入来做类型的转换
raw_input:则会把用户的输入都作为一个字符串来处理

下面是详细的补充:

首先,我们知道input()和raw_input()都是用来获取控制台的输入,当然输入的时候可以加上输入提示信息:

        a = raw_input("Please input a:")

        b = input("Please input b:")

那么这两者有什么区别呢?

input()支持用户输入数字或者表达式,不支持输入字符串,返回的是数字类型的数值。而raw_input()捕获的是最原始的输入,也就是说返回的是一个字符串,所以如果输入的是数字,那么我们必须要进行强制转换。例如:

        a = int(raw_input("Please input the number a:"))

其实input()本质上还是使用raw_input()来实现的,只是调用完raw_input()之后再调用eval()函数,所以,除非对input()有特别需要,否则一般情况下我们都是推荐使用raw_input()来与用户交互。
 
map接收一个函数和一个可迭代对象(如列表)作为参数,用函数处理每个元素,然后返回新的列表。

ACM有时需要要a b c这样的一行格式输入,这时就用map函数来处理,这里假设a,b,c都是整数。
a,b,c = map(int, raw_input().split()),raw_input函数输入的是字符串,字符串的split方法用来将字符串分割成序列。

Python 相关文章推荐
编写简单的Python程序来判断文本的语种
Apr 07 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
解读python logging模块的使用方法
Apr 17 Python
在Python 中实现图片加框和加字的方法
Jan 26 Python
Python 获取ftp服务器文件时间的方法
Jul 02 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Python搭建代理IP池实现存储IP的方法
Oct 27 Python
python验证码图片处理(二值化)
Nov 01 Python
python 获取当前目录下的文件目录和文件名实例代码详解
Mar 10 Python
Python 实现网课实时监控自动签到、打卡功能
Mar 12 Python
带你学习Python如何实现回归树模型
Jul 16 Python
python PIL模块与随机生成中文验证码
Feb 27 #Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 #Python
python 网络爬虫初级实现代码
Feb 27 #Python
Python数据库的连接实现方法与注意事项
Feb 27 #Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 #Python
学习python之编写简单乘法口诀表实现代码
Feb 27 #Python
学习python 之编写简单乘法运算题
Feb 27 #Python
You might like
mysql+php分页类(已测)
2008/03/31 PHP
PHP 危险函数全解析
2009/09/09 PHP
php的日期处理函数及uchome的function_coomon中日期处理函数的研究
2011/01/12 PHP
php中批量替换文件名的实现代码
2011/07/20 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
php多进程应用场景实例详解
2019/07/22 PHP
Laravel使用模型实现like模糊查询的例子
2019/10/24 PHP
使用JS+plupload直接批量上传图片到又拍云
2014/12/01 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
javascript跨域请求包装函数与用法示例
2016/11/03 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
jquery做个日期选择适用于手机端示例
2017/01/10 Javascript
常用jQuery选择器汇总
2017/02/02 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
深入剖析JavaScript instanceof 运算符
2019/06/14 Javascript
python插入排序算法的实现代码
2013/11/21 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
Python多图片合并PDF的方法
2019/01/03 Python
python框架django项目部署相关知识详解
2019/11/04 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python3中configparser模块读写ini文件并解析配置的用法详解
2020/02/18 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
python 基于opencv实现图像增强
2020/12/23 Python
基于HTML5 的人脸识别活体认证的实现方法
2016/06/22 HTML / CSS
工程班组长岗位职责
2013/12/30 职场文书
教学器材管理制度
2014/01/26 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
环境日宣传活动总结
2014/07/09 职场文书
注册资产评估专业求职信
2014/07/16 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
小学教师节活动总结
2015/03/20 职场文书
Apache压力测试工具的安装使用
2021/03/31 Servers