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常用小技巧总结
Jun 01 Python
Python测试人员需要掌握的知识
Feb 08 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
基于numpy中数组元素的切片复制方法
Nov 15 Python
python爬取指定微信公众号文章
Dec 20 Python
通过pykafka接收Kafka消息队列的方法
Dec 27 Python
浅谈python编译pyc工程--导包问题解决
Mar 20 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
python 一个figure上显示多个图像的实例
Jul 08 Python
python数据归一化及三种方法详解
Aug 06 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
python集合能干吗
Jul 19 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加密解密函数分享
2014/06/05 PHP
php获取远程文件内容的函数
2015/11/02 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
Jquery提交表单 Form.js官方插件介绍
2012/03/01 Javascript
JQuery 使用attr方法实现下拉列表选中
2014/10/13 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
浅析jQuery Ajax请求参数和返回数据的处理
2016/02/24 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
NodeJS测试框架mocha入门教程
2017/03/28 NodeJs
Vue2.5 结合 Element UI 之 Table 和 Pagination 组件实现分页功能
2018/01/26 Javascript
Vue 中的compile操作方法
2018/02/26 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
[36:52]DOTA2真视界:基辅特锦赛总决赛
2017/05/21 DOTA
Python爬取读者并制作成PDF
2015/03/10 Python
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
图文详解Django使用Pycharm连接MySQL数据库
2019/08/09 Python
详解如何减少python内存的消耗
2019/08/09 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
简单了解python列表和元组的区别
2020/05/14 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
python实现一个简单RPC框架的示例
2020/10/28 Python
奇怪的鱼:Weird Fish
2018/03/18 全球购物
英国性能汽车零件和发动机配件在线:Maxpeedingrods
2019/11/05 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
青年创业培训欢迎词
2014/01/08 职场文书
观看建国大业观后感
2015/06/01 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
linux下导入、导出mysql数据库命令的实现方法
2021/05/26 MySQL