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中DJANGO简单测试实例
May 11 Python
python 实现登录网页的操作方法
May 11 Python
Flask之请求钩子的实现
Dec 23 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
python3图片文件批量重命名处理
Oct 31 Python
基于TensorFlow中自定义梯度的2种方式
Feb 04 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
Feb 27 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
Mar 03 Python
如何利用Python识别图片中的文字
May 31 Python
浅析Python 序列化与反序列化
Aug 05 Python
使用py-spy解决scrapy卡死的问题方法
Sep 29 Python
Django配置跨域并开发测试接口
Nov 04 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
经典的星际争霸,满是回忆的BGM
2020/04/09 星际争霸
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
JoshChen_php新手进阶高手不可或缺的规范介绍
2013/08/16 PHP
php-fpm中max_children的配置
2019/03/15 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
JSON与XML优缺点对比分析
2015/07/17 Javascript
PHP+MySQL+jQuery随意拖动层并即时保存拖动位置实例讲解
2015/10/09 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
防止重复发送 Ajax 请求
2017/02/15 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
Vue二次封装axios为插件使用详解
2018/05/21 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
vue如何自动化打包测试环境和正式环境的dist/test文件
2019/06/06 Javascript
python计算书页码的统计数字问题实例
2014/09/26 Python
python机器学习案例教程——K最近邻算法的实现
2017/12/28 Python
python实现数据导出到excel的示例--普通格式
2018/05/03 Python
Python2.7环境Flask框架安装简明教程【已测试】
2018/07/13 Python
python制作简单五子棋游戏
2019/06/18 Python
Python新手学习raise用法
2020/06/03 Python
Python 如何测试文件是否存在
2020/07/31 Python
基于DOM+CSS3实现OrgChart组织结构图插件
2016/03/02 HTML / CSS
html5拖曳操作 HTML5实现网页元素的拖放操作
2013/01/02 HTML / CSS
阿拉伯书店:Jamalon
2019/07/24 全球购物
Ray-Ban雷朋太阳眼镜英国官网:Ray-Ban UK
2019/11/23 全球购物
MySQL面试题目集锦
2016/04/14 面试题
课例研修方案
2014/05/31 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
小平小道观后感
2015/06/09 职场文书
幼儿园音乐教学反思
2016/02/18 职场文书
InterProcessMutex实现zookeeper分布式锁原理
2022/03/21 Java/Android