今天在敲代码的时候发现课本中的“raw_input()”竟然报错了,查阅后发现python3中已经停止了对“raw_input()”函数的使用,之前“raw_input()”的功能合并到了"input()"函数中。
对于还在使用python2的朋友来说,“raw_input()”和“input()”的主要区别在于:对于输入的数据,前者返回的是string(字符串类型),后者返回的是数据类型(如:int、float等)。如输入数据【5+3】,对于“raw_input()”,则会输出【‘5+3’】,而对于“input()”,则会输出【‘8’】。
而在python3中:"input()"接受任意输入, 将所有输入默认为字符串处理,并返回字符串类型。当输入【5+3】时,不再输出为【‘8’】,而是将输入作为字符串处理,直接输出【‘5+3’】,这点要注意。如果想继续像python2一样直接输出计算结果,应该怎么做呢?下面是简单示例:
print("你叫什么名字?"),
name = input()
print("这是你的第几篇博客?"),
num = input()
print("博客的内容是关于哪方面的?"),
aspect = input()
print("大家好,我是 %r ,这是我第 %r 篇关于 %r 的学习博客."%(name,num,aspect))
输入数据依次为:
湖水微澜
5+4
python
运行结果如图:
如果想让input()在输入时,像python2一样对数字做计算,而不是输出字符串,可以在输出( print )中使用eval()函数,详见下面的示例:
print("你叫什么名字?"),
name = input()
print("这是你的第几篇博客?"),
num = input()
print("博客的内容是关于哪方面的?"),
aspect = input()
print("大家好,我是 %r ,这是我第 %r 篇关于 %r 的学习博客."%(name,eval(num),aspect))
在代码最后一行末尾,将原来的【num】,改为了【eval(num)】,运行结果如下:
PS:上面的代码有些臃肿,实际上简化为如下最佳:
name = input("你叫什么名字?")
num = input("这是你的第几篇博客?")
aspect = input("博客的内容是关于哪方面的?")
print("大家好,我是 %r ,这是我第 %r 篇关于 %r 的学习博客."%(name,eval(num),aspect))