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代码混合编程的方法
May 19 Python
python 调用HBase的简单实例
Dec 18 Python
pygame实现弹力球及其变速效果
Jul 03 Python
Python函数参数操作详解
Aug 03 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
Python基于机器学习方法实现的电影推荐系统实例详解
Jun 25 Python
ERLANG和PYTHON互通实现过程详解
Jul 05 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
使用python绘制二维图形示例
Nov 22 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
python反爬虫方法的优缺点分析
Nov 25 Python
python热力图实现的完整实例
Jun 25 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
PHP之APC缓存详细介绍 apc模块安装
2014/01/13 PHP
php中的观察者模式简单实例
2015/01/20 PHP
在laravel框架中使用model层的方法
2019/10/08 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
jquery获得下拉框值的代码
2011/08/13 Javascript
JavaScript获取/更改文本框的值的实例代码
2013/08/02 Javascript
js 窗口抖动示例
2013/09/04 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
js字符串截取函数substr substring slice使用对比
2013/11/27 Javascript
javascript插件开发的一些感想和心得
2016/02/28 Javascript
详解自动生成博客目录案例
2016/12/09 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
从零开始做一个pagination分页组件
2017/03/15 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
vue debug 二种方法
2018/09/16 Javascript
微信小程序入口场景的问题集合与相关解决方法
2019/06/26 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
pyqt5 获取显示器的分辨率的方法
2019/06/18 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
2019/08/02 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
Linux如何为某个操作添加别名
2015/02/05 面试题
企业演讲比赛主持词
2014/03/18 职场文书
县政府领导班子“四风”方面突出问题整改措施
2014/09/23 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
面试通知短信
2015/04/20 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
在职证明格式样本
2015/06/15 职场文书
《自己去吧》教学反思
2016/02/16 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript