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中os.path用法分析
Jan 15 Python
Python学习pygal绘制线图代码分享
Dec 09 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
基于DataFrame改变列类型的方法
Jul 25 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
python argparser的具体使用
Nov 10 Python
python元组的概念知识点
Nov 19 Python
Pycharm安装并配置jupyter notebook的实现
May 18 Python
Python参数传递对象的引用原理解析
May 22 Python
python如何编写win程序
Jun 08 Python
python PIL模块的基本使用
Sep 29 Python
python ConfigParser库的使用及遇到的坑
Feb 12 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进行MySQL删除记录操作代码
2008/06/07 PHP
php过滤危险html代码
2008/08/18 PHP
php数组函数序列之prev() - 移动数组内部指针到上一个元素的位置,并返回该元素值
2011/10/31 PHP
jQuery的Ajax时无响应数据的解决方法
2010/05/25 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
JS实现Enter键跳转及控件获得焦点
2013/08/12 Javascript
struts2+jquery组合验证注册用户是否存在
2014/04/30 Javascript
javascript中Object使用详解
2015/01/26 Javascript
JS往数组中添加项性能分析
2015/02/25 Javascript
JavaScript多线程详解
2015/08/12 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
2020/11/06 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python六大开源框架对比
2015/10/19 Python
Python文本相似性计算之编辑距离详解
2016/11/28 Python
python数据结构之链表详解
2017/09/12 Python
Python3 处理JSON的实例详解
2017/10/29 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
2018/02/24 Python
Python实现查找二叉搜索树第k大的节点功能示例
2019/01/24 Python
python实现整数的二进制循环移位
2019/03/08 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Django实现跨域请求过程详解
2019/07/25 Python
Python函数参数定义及传递方式解析
2020/06/10 Python
Python根据指定文件生成XML的方法
2020/06/29 Python
如何用python写个模板引擎
2021/01/14 Python
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
销售辞职信范文
2015/03/02 职场文书
胡桃夹子观后感
2015/06/11 职场文书
给校长的建议书作文500字
2015/09/14 职场文书
javaScript Array api梳理
2021/03/31 Javascript
golang中字符串MD5生成方式总结
2021/07/04 Golang
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL