Python 输入输出
输出
python3.x : print() 函数
>>> print('hello, world')
使用print()函数或语句可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出。print()函数或语句会依次打印每个字符串,遇到逗号“,”会输出一个空格
>>> print('hello', 'world','!')
hello, world !
>>> print('100 + 200 =', 100 + 200)
100 + 200 = 300
python2.x:print 语句
>>> print 'hello, world'
输入
python3.x : input() 、eval() 函数
python2.x : raw_input()、input() 函数
对应关系
python3.x: input() => python2: raw_input()
python3.x: eval() => python2: input()
注意:python2.x中的input()函数和 python3.x的eval()函数,输入的是什么类型就是什么类型,即根据用户输入变换相应的类型。如果要输入字符和字符串的时候必须要用引号包起来,否则当成变量。
>>> name='test'
>>> eval('name') 注意引号
'test'
# cat test.py
#!/usr/bin/env python
name = input('please enter your name: ') --将输入结果赋值给变量
print('hello,', name)
#python test.py
please enter your name: Michael
hello, Michael
python3.x
input()和print()是在命令行下面最基本的输入和输出
python解释器提供了3种标准文件对象,分别为标准输入、标准输出和标准错误
在sys模块中的提供形式:sys.stdin、sys.stdout、sys.stderr
print 是把一个或多个对象转换为其文本表达形式,然后给标准输出或另一个类似文件的流(在linux中,任何东西都表示成一个文件)
print 接受一个逗号分隔的对象列表,并为行尾自动添加一个换行符,如果不需要,则在最后一个元素后添加逗号(在交互式命令行体现不出来)
注意:input()不管用户输入什么类型的都会转变成字符型,input()返回的数据类型是str, str不能直接和整数比较。
格式化输出
万恶的字符串拼接"+"(c语言没有字符串类型),拼接一次(+)就另外开辟一块内存空间生成一个新的对象,解释器有自己的回收机制
['p','y','t','h','o','n'] + '3'
['p','y','t','h','o','n','3']
而字符串格式化,最多开辟两个空间
如何输出格式化的字符串。我们经常会输出类似'亲爱的xxx你好!你xx月的话费是xx,余额是xx'之类的字符串,而xxx的内容都是根据变量变化的,所以,需要一种简便的格式化字符串的方式。
在Python中,采用的格式化方式和C语言是一致的,用%实现。%运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略,即 "string %format1 %format2 ..." % (variable1,variable2,...)
常见的占位符有:
格式 输出格式
%% 百分号标记
%c 字符及其ASCII码 character
%s 字符串 string
%d 有符号整数(十进制) decimal
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%f 浮点数字(用小数点符号) float
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中
%r 同repr()生成的字符串
%[(name)][flags][width].[precision]typecode
(name) 字典键名
flags +,-,' '或0
+ 表示右对齐
- 表示左对齐
' ' 表示在正数的左侧填充一个空格,从而与负数对齐
0 表示使用0填充
width 表示显示宽度
precision 表示小数点后精度
举例:
>>> print('growth rate: %d %%' %7)
growth rate: 7 %
>>> print ("the num is %f" % 3.14)
the num is 3.140000
>>> print ("the num is %d" % 3.14)
the num is 3
>>> num2 = 4.13
>>> print ("the nums are %f and %d" %(3.14,num2))
the nums are 3.140000 and 4
>>> d1 = {'a':1,'b':2}
>>> print ('%(a)-10d %(b)0.3f' %d1)
1 2.000
小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,并用字符串格式化显示出'xx.x%',只保留小数点后1位 :
#!/usr/bin/env python
s1=72
s2=85
r=(s2-s1)/s1*100
print("小明成绩成绩提高了%.1f%%" % r)