写Python程序时,你可能希望用户与程序有所交互。例如你可能希望用户输入一些信息,这样就可以让程序的扩展性提高。

这一节我们来谈一谈Python的控制台输入。

输入字符串

Python提供一个叫做input()的函数,用来请求用户输入。执行input()函数时,程序将会等待用户在控制台输入信息,当用户输入换行符(即enter)时,返回用户输入的字符串。

例如:

>>> name = input()

这将会等待用户输入一行信息。注意接下来的一行开头处没有>>>命令提示符,因为>>>是指示用户输代码的,这里不是代码。

具体例子(输入的字符串为Charles,你也可以输入别的):

>>> name = input()
Charles
>>> print('You entered:', s)
You entered: Charles

但这里也有一个问题:不了解程序的用户,看见程序等待输入,不知道要输入什么。如果有提示文字不就更好了吗?如果你学过其它编程语言,你可能会这样写:

print('Enter your name:')
name = input()

然而Python提供了更简洁的写法:input()可以接受一个参数,作为提示文字:

>>> name = input('Enter your name: ')

这样,等待输入就变成这个样子了(仍以Charles为例):

Enter your name: Charles

一个完整的例子:

>>> fname = input('Enter your first name: ')
Enter your first name: Charles
>>> lname = input('Enter your last name: ')
Enter your last name: Dong
>>> print('Your name: %s, %s' % (lname, fname))
Your name: Dong, Charles

输入数字

那输入数字呢?你可能会想这么做:

>>> height = input('Enter your height, in centimeters: ')

然后输出:

>>> print('You\'re', height, 'cm tall.')

也没有问题。

但如果这样写:

>>> print('You\'re 1 cm taller than', height - 1, 'cm.')

你会得到:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'

注意最下面一行:

TypeError: unsupported operand type(s) for -: 'str' and 'int'

意思是说,-两边的参数分别是str和int,而-运算符不能用在这两种类型之间!

原来,input()返回的是一个str,返回值被赋给height,因此height也是str类型。height-1就是str和int进行减法了。

那怎么办呢?联系之前说的类型转换知识,把input()的返回值转换成我们所需要的int类型就可以了:

>>> height = int(input('Enter your height, in centimeters: '))

现在再试一下,是不是没有问题了。

输入非str变量的格式:

var = type(input(text))

var为输入变量,type为要输入的类型,text为提示文字。

不过这里还有一个小问题:无法在一行输入多个数字。这个问题将在后面解决。

小结

1. 使用input()进行输入。

2. 对于非字符串类型,需要进行转换,格式为type(input(text))。

练习

1. 要求用户输入身高(cm)和体重(kg),并输出BMI(Body Mass Index)。BMI=体重/(身高**2),体重单位为kg,身高单位为m。下面是一个例子:

Enter your height, in cm: 175
Enter your weight, in kg: 50
Your BMI: 16.3265306122449

注意输入的身高需要转换成以m为单位。

Python教程(2.5)——控制台输入的更多相关文章

  1. Python教程(2.1)——控制台输入

    这一节,我们来学习如何写一个简单的Python程序. 我们知道,很多编程语言一开始就是学习怎么输出"Hello, world",对吧?那么,现在我们来学习怎么用Python输出&q ...

  2. python 教程 第十章、 输入/输出

    第十章. 输入/输出 1)    文件 poem = '''Programming is fun use Python!''' f = file('poem.txt', 'w') # open for ...

  3. 《简明python教程》笔记一

    读<简明Python教程>笔记: 本书的官方网站是www.byteofpython.info  安装就不说了,网上很多,这里就记录下我在安装时的问题,首先到python官网下载,选好安装路 ...

  4. (原+转)简明 Python 教程:总结

     简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容 ...

  5. Python教程(0)——介绍

    What's Python? Python是一种编程语言,由荷兰人Guido van Rossum于1989年,为打发无聊的圣诞节而开发的. Python的优点是语法简洁,代码量比C/C++.Java ...

  6. 笔记|《简明Python教程》:编程小白的第一本python入门书

    <简明Python教程>这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结.适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅. 下面是我根据各个 ...

  7. 简明Python教程自学笔记——命令行通讯录

    [前言]学习Python已经有一段时间了,相关的书籍资料也下载了不少,但是没有一本完整的看完,也没有编出一个完整的程序.今天下午比较清闲就把<简明Python教程>看了一遍,然后根据书里面 ...

  8. 【转】简明 Python 教程

    原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteof ...

  9. python教程(一)·命令行基本操作

    先来了解下 "命令提示符". 等等?!既然本篇文章标题是"命令行基本操作",那怎么又说到"命令提示符"去了呢?客官莫要急,且听我说 命令提示 ...

随机推荐

  1. Java Script 字符串操作

    JS中常用几种字符串操作: big() small() bold() fontcolor() fontsize() italics() strike() link() charAt() charCod ...

  2. hadoop环境搭建之关于NAT模式静态IP的设置 ---VMware12+CentOs7

    很久没有更新了,主要是没有时间,今天挤出时间验证了一下,果然还是有些问题的,不过已经解决了,就发上来吧. PS:小豆腐看仔细了哦~ 关于hadoop环境搭建,从单机模式,到伪分布式,再到完全分布式,我 ...

  3. idea+springmvc+spring+mybatis+maven整合返回json数据webapi

    首先看一张目录结构图: : 创建步骤: 1.创建maven  webapp工程, 创建完后的目录结构为: 2.添加项目依赖(添加jar包) 需要的jar包: spring-webmvc, spring ...

  4. bzoj1798 [Ahoi2009]维护序列

    Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...

  5. 蓝桥杯-放麦子-java

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

  6. DOS(Disk Operation System:磁盘操作系统)常见命令

    学习Java语言的第一节课总是练习DOS命令,用记事本敲出自己的第一个Java语言的HelloWorld程序案例,在此特意总结一下基本的DOS命令以作记录和分享. Windows+R快捷键---> ...

  7. 自定义list排序

    使用扩展方法OrderBy,OrderByDescending,效果优良. 实现代码如下: private static void SortByExtensionMethod() { List< ...

  8. UML总结(对九种图的认识和如何使用Rational Rose 画图)

    UML是一种建模语言,是系统建模的标准.我们之所以建模是因为大规模的系统设计时相当复杂的,当系统比较复杂时就会涉及到以下这几个问题: 开发人员如何与用户进行沟通来了解系统的需求? 开发人员之间如何沟通 ...

  9. JS中对于prototype的理解

    JS中的prototype是JS中比较难理解的一个部分 本文基于下面几个知识点: 1 原型法设计模式 在.Net中可以使用clone()来实现原型法 原型法的主要思想是,现在有1个类A,我想要创建一个 ...

  10. 0基础搭建Hadoop大数据处理-集群安装

    经过一系列的前期环境准备,现在可以开始Hadoop的安装了,在这里去apache官网下载2.7.3的版本 http://www.apache.org/dyn/closer.cgi/hadoop/com ...