如何使用Python获取用户的输入

The best way to learn a programming language is to write a lot of code and read a lot of code.

到现在为止,希望程序“处理一些数”时,都必须把这些数值直接放在代码中。例如,如果编写了第3章中的温度转换程序,你可能会把要转换的温度直接放在代码中。如果想要转换一个不同的温度,就必须修改代码。

如果你希望用户在程序运行时输入他想转换的温度呢?

之前我们说过,一个程序有3大部分:输入、处理和输出。我们的第一个程序只有输出。温度转换程序有处理(转换温度)和输出,但是没有输入。现在该向程序增加第三个部分了:输入。输入就是指在程序运行时向其提供某样东西,也就是某种信息。

这样一来,我们就能写出与用户交互的程序,这就有趣多了。

Python有一个内置函数,名为raw_input(),可以用这个函数从用户那里得到输入。在这一篇中,我们将学习如何在程序中使用raw_input()。

raw_input()函数

raw_input()函数会把用户的输入做为一个字符串处理。正常情况下会从键盘得到这个输入,也就是说,用户要键入输入。

raw_input()也是一个Python内置函数,就像str()、int()、float()和type()一样。后面还会学习更多有关函数的内容。不过,对现在来说,只需要记住使用raw_input()时要加上小括号(())。可以这样来使用:

someName = raw_input()

这会让用户键入一个字符串,并把它赋给名字someName。

现在我们来看看它的例子。在IDLE中创建一个新文件,键入代码清单5-1中的代码。如下:

保存这个程序,并在IDLE中运行,看看它如何工作。应该可以看到类似下面的结果:

我键入了我的名字,程序把它赋给了somebody。

print命令和逗号

刚刚5-1的代码是怎么运行的呢?

通常情况下,希望从用户得到输入时,必须告诉Ta你想要什么,应当提供类似这样的消息:

print "Enter your name: "

然后raw_input()函数得到用户的响应:

somebody = raw_input()

如果运行这些代码行,并键入你的名字,会得到:

如果希望用户在消息的同一行上键入他的答案,也就是这样的效果:

你只需要在print语句的末尾放上一个逗号(,),就像这样:

注意逗号的位置,是放在结束引号的外面。

逗号可以用来把多个print语句合并在同一行上。逗号只是表示“打印完这个内容后不要跳到下一行”。代码清单5-1的最后一行就是这么做的。

下面我们再IDLE编辑器中键入代码清单5-2中的代码,并运行这个程序。

运行这个程序时应该会得到这样的结果:

注意到了吗?引号中的每个词末尾都没有空格,但是运行这个程序时每个单词之间却出现了空格。使用逗号将多个print语句合并到同一行时,Python会增加一个空格。

打印raw_input()提示语的另一种方法

其实,raw_input()函数可以直接打印提示消息("Enter your name: "),也就是说,你根本不必使用print语句,也就是下面这句:

你可以把打印消息("Enter your name: ")放置在raw_input()函数的小括号(())内,就像下面这样:

我们看看更改后的代码,只需要两行:

运行后如下:

这就像raw_input()函数内置了print一样。从现在起我们都将使用这个简便方法。

用raw_input()输入数字怎么办

我们来看看以下代码:

由上面可以看出,无论用户输入的是他认为的整数12,又或是认为的浮点数12.23,raw_input()函数都会把用户的输入做为一个字符串处理,表示类型是字符串。

但是如果希望得到用户输入的是一个数该怎么办呢?

如果你读过第4章,应该已经知道答案了。

我们可以从raw_input()给我们的字符串使用int()和float()函数创建一个数,也就是转换类型,可以像这样:

先使用raw_input()得到用户的输入(一个字符串)。

然后使用float()进行字符串转换浮点数,将字符串创建一个浮点数。

最后得到的fahrenheit(温度)作为浮点数。

不过以上的两行代码,我们还可以简写成一行,如下:

fahrenheit = float(raw_input())

所做的工作是一样的。它由用户得到字符串,然后从这个字符串创建一个数,赋给fahrenheit。

另外,你可以用这种方法在我们的温度转换程序测试一下,看看会得到什么。

同理,如果你希望用户输入的数总是整数(而不是小数),可以用int()来转换,例如:

来自互联网的输入

通常,程序的输入都来自用户。不过还有其他一些方法得到输入。可以从计算机硬盘上的文件中得到输入(这个内容会在后面的章节介绍),或者也可以从互联网获取输入。

如果你能连接互联网,可以试试以下代码程序:

就这么简单,只需要区区4行代码,你的计算机就可以通过互联网得到一个.txt文件,并显示这个文件。如果还知道其他.txt文件的网络地址,替换上面代码中绿色标识的网址,你都可以显示这个文件。当然前提是你的互联网连接是正常的。

END

回顾

用raw_input()输入文本。

向raw_input()增加一个提示消息。

结合int()和float()使用raw_input()输入数字。

使用逗号将多行打印到一行上。

测试题

对于下面这行代码:

answer = raw_input()

如果用户键入12,answer的数据类型是什么?是字符串还是一个数?

怎么让raw_input()打印一个提示消息?

怎么使用raw_input()得到一个整数?

怎么使用raw_input()得到一个浮点数(小数)?

动手试一试

在交互模式中建立两个变量,分别表示你的姓和名。然后使用一条print语句,把姓和名打印在一起。

编写一个程序,先问你的姓,再问名,然后打印一条消息,在消息中包含你的姓和名。

编写一个程序询问一间长方形房间的尺寸(单位是米),然后计算覆盖整个房间总共需要多少地毯,并显示出来。

编写一个程序先完成第3题的要求,不过还要询问每平方尺地毯的价格。然后主程序显示下面3个内容:

(1)总共需要多少地毯,单位是平方米。

(2)总共需要多少地毯,单位是平方尺(1平方米=9平方尺)

(3)地毯总价格。

编写一个程序帮助用户统计她的零钱。程序要问下面的问题:

(1)“有多少个五分币?”

(2)“有多少个二分币?”

(3)“有多少个一分币?”

让程序给出这些零钱的总面值。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180211G0FKW500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券