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 相关文章推荐
python3 发送任意文件邮件的实例
Jan 23 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
python判断列表的连续数字范围并分块的方法
Nov 16 Python
Python模块、包(Package)概念与用法分析
May 31 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
使用pytorch完成kaggle猫狗图像识别方式
Jan 10 Python
Python列表list操作相关知识小结
Jan 29 Python
python 在右键菜单中加入复制目标文件的有效存放路径(单斜杠或者双反斜杠)
Apr 08 Python
Python读取excel文件中带公式的值的实现
Apr 17 Python
基于Python3读写INI配置文件过程解析
Jul 23 Python
Python爬虫与反爬虫大战
Jul 30 Python
利用python 读写csv文件
Sep 10 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 allow_url_include的应用和解释
2010/04/22 PHP
PHP学习笔记之二 php入门知识
2011/01/12 PHP
迅速确定php多维数组的深度的方法
2014/01/07 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
javascript 关于# 和 void的区别分析
2009/10/26 Javascript
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
使用javascript实现页面定时跳转总结篇
2013/09/21 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JS常用算法实现代码
2016/11/14 Javascript
深入理解javascript中的 “this”
2017/01/17 Javascript
vue组件开发之用户无限添加自定义填写表单的方法
2018/08/28 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
python使用paramiko模块实现ssh远程登陆上传文件并执行
2014/01/27 Python
Python中Django发送带图片和附件的邮件
2017/03/31 Python
python分布式环境下的限流器的示例
2017/10/26 Python
对pandas中apply函数的用法详解
2018/04/10 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
pandas筛选某列出现编码错误的解决方法
2018/11/07 Python
python如何实现一个刷网页小程序
2018/11/27 Python
Python 一键获取百度网盘提取码的方法
2019/08/01 Python
Python3使用 GitLab API 进行批量合并分支
2020/10/15 Python
详解Django中异步任务之django-celery
2020/11/05 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
《雨点》教学反思
2014/02/12 职场文书
保险经纪人求职信
2014/03/11 职场文书
党校毕业心得体会
2014/09/13 职场文书
工程项目合作意向书
2015/05/08 职场文书
工作调动申请报告
2015/05/18 职场文书
施工安全责任协议书
2016/03/23 职场文书
各类场合主持词开场白范文集锦
2019/08/16 职场文书