虽然现在用Python2的人比较少,但是为了对比Python2与Python3的区别,这里就把两者都写上吧,写直接看一个大纲吧。
Python2中有两个输入函数——raw_input()、input(),那么两个的具体区别是什么呢?raw_input()会把用户输入的任何内容都当做字符串处理,而input()会把用户输入的内容都当做“代码”来处理,可能单纯解释还是不太理解,没关系,我们用下面的代码示例来说明:
content = raw_input('请输入内容')
print(type(content))
print(content)
可以看到虽然输入1+1,但是raw_input()会把它转换为字符串,再看看input(),如下:
content = input('请输入内容')
print(type(content))
print(content)
同样输入的是1+1,input会把它当做“代码”来处理,直接计算1+1的结果了。
Python3中只有一个输入函数——input(),Python3中的input()函数其实相当于Python2中的raw_input()函数即也是把用户输入的内容当做字符串来处理,如下:
content = input('请输入内容:')
print(type(content))
print(content)
输入1+1,同样是当做字符串来处理,就如Python2中的raw_input()效果一样。那么问题就来了,有没有什么办法能实现Python2中的input()函数的效果呢?答案是肯定的,那就是eval()函数,如下示例:
content = eval(input('请输入内容:'))
print(type(content))
print(content)
由图可知,在input函数外面套上一个eval()函数即可把输入的内容当做“代码”来处理。
Python2与Python3的输出差不多,区别就是有无(),即在Python2中直接print 要输出的内容,而在Python3中则是print(要输出的值),如下:
print 值 # Python2输出格式
print(值) # Python3输出格式
那么我们就以Python3的为例来说明,Python2就是在Python3的基础上去括号。
输出的基本格式如下:
print(值) # 输出一个值
print(变量名) # 输出一个变量的值
print(变量名1, 变量名2) # 输出多个变量的值,中间用逗号隔开
格式化输出:
先看两个示例,再来具体说说格式化输出的样式。两个简单示例如下:
name = 'bbcy'
age = 22
# 我的名字是xxx,年龄是xxx
print('我的名字是%s,年龄是%d' % (name, age))
print('我的名字是{},年龄是{}'.format(name, age)) # 这只是format的最简单的用法,其他以后说
print(f'我的名字是{name},年龄是{age}') # Python3.6过后才能用
# %[(name)][flags][width][.precision]typecode,各个表示的含义如下:
# []:可以省略
# (name)
# 表示根据制定的名称(key),查找对应的值,格式化到字符串中
# example
mathscore = 59
englishscore = 58
# 输出结果均为我的数学分数是59, 英文的分数是:58
print('我的数学分数是%d, 英文的分数是:%d' % (mathscore, englishscore))
print('我的数学分数是%(ms)d, 英文的分数是:%(es)d' % ({'es': englishscore, 'ms': mathscore}))
# width,表示占用的宽度
print("%10d" % mathscore)
# 输出结果为: 59 59左边有8个空格
# flags,表示对齐方式 空表示右对齐,-表示左对齐,空格表示在正数的左侧填一个空格从而与负数对齐,0表
# 示0填充
print('%-10d' % mathscore)
print('% d' % mathscore)
print('%010d' % mathscore) # 输出结果:0000000059
# .precision 表示要保留的小数位数
score = 59.9
print('%.2f' % score) # 保留两位小数,结果为:59.90
typecode的种类比较多,看下面的图片,这里不一一说明。
最后再来说说print函数里面各个参数的作用吧。
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
# 输出的各个数据,使用分隔符分割
print('1', '2', '3', sep="=")
# 结果:1=2=3
# 输出不自动换行
print('abc', end='*')
# end作用就是输出完内容后是以什么结尾
# 结果:abc*
# 输出到文件中
f = open('test.txt', 'w') # 以只写的方式打开文件,后面再讲
print('Hello World', file=f) # 把‘Hello World’输出到test.txt文件中
f.close() # 打开的文件必须关闭,到后面文件管理再讲
flush参数有点复杂,我这里只是简单说明一下,了解就行。