任何计算机程序都是为了执行一个特定的任务,有了输入,用户才能告诉计算机程序所需的信息,有了输出,程序运行后才能告诉用户任务的结果。输入是Input,输出是Output,因此,我们把输入输出统称为Input/Output,或者简写为IO。
input()和print()是在命令行下面最基本的输入和输出,但是,用户也可以通过其他更高级的图形界面完成输入和输出,比如,在网页上的一个文本框输入自己的名字,点击“确定”后在网页上看到输出信息。
一、输出(print)
- 打印字符串
用print()
在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world'
,用代码实现如下:
1 2 |
>>> print('hello, world') hello, world |
单引号或双引号都可以输出要显示的字符,在Python中没有区别。但是三个引号就不一样了,可以不改变打印结果,一般帮助信息用的最多,如下:
1 2 3 4 5 6 7 |
print(''' Usage: cmd -h: Host -P: Port -u: User -p: Password ''') |
print()
函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:
1 2 |
>>> print('the quick brown fox', 'jumps over', 'the lazy dog') the quick brown fox jumps over the lazy dog |
print()
会依次打印每个字符串,遇到逗号“,”会输出一个空格。
另外,使用print()
可以打印变量,如下:
1 2 |
>>> print('my name is'),(name) my name is eric |
再深入一点就是字符串格式化了,Python字符串格式化使用 “字符 %格式1 %格式2 字符” % (变量1,变量2)格式,%格式表示接受变量的类型,简单的使用例子如下:
1 2 3 4 5 |
>>> print('name: %s') % (name) name: eric >>> print('%s is number %d!') % ('python',10) python is number 10! |
%s表示由一个字符串来替换,而%d表示由一个整型来替换。字符串格式化时百分号后面有不同的格式符号,代表要转换的不同类型,具体的表示符号如下面所示。
%s – 字符串
%d/%i – 十进制整数
%u – 十进制数
%o – 八进制数
%x/%X – 十六进制数
%e/%E – 科学计数法
%f/%F – 浮点数
%% – 输出%
格式符号为数字时前面可以加为数和补缺位如:%[0][总位数][.][小数位数]来设定要转换的样式,具体使用方法如下:
1 2 3 4 5 |
>>> year = 2018 >>> month = 8 >>> day = 20 >>> print("%04d-%02d-%02d") % (year,month,day) 2018-08-20 |
对于进制类的输出,如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 输出十进制; >>> print('%d') % 10 10 # 输出八进制; >>> print('%o') % 10 12 # 输出十六进制; >>> print('%x') % 10 a # 输出2位小写十六进制; >>> print('%02x') % 10 0a # 输出2位大写十六进制; >>> print('%04X') % 10 000A # 输出科学计数法输出浮点型保留2位小数; >>> print('%.02e') % 10 1.00e+01 |
- 打印整数
print()
也可以打印整数,或者计算结果:
1 2 3 4 |
>>> print(300) 300 >>> print(100 + 200) 300 |
也可以做运算:
1 2 |
>>> print('100 + 200 ='),(100 + 200) 100 + 200 = 300 |
- 打印浮点数
如果想保留宽度或小数浮点型,如下:
1 2 3 4 5 |
>>> value = 8.123 >>> print('%0.2f') % (value) 8.12 >>> print('%06.2f') % (value) 008.12 |
- 指定占位符宽度
1 2 |
>>> print("Name:%6s Age:%6d Height:%6.2f" % ("Aviad",25,1.83)) Name: Aviad Age: 25 Height: 1.83 |
指定占位符宽度(左对齐)
1 2 |
>>> print ("Name:%-10s Age:%-8d Height:%-8.2f" % ("Aviad",25,1.83)) Name:Aviad Age:25 Height:1.83 |
我们经常会有些监控报警短信,比如使用Python发送一个Redis报警的信息。
1 2 3 4 5 6 |
>>> Host="127.0.0.1" >>> Port="6379" >>> Warn="80" >>> used_memory="1000" >>> print("Redis instance %s:%s use memory percent > %%%s") %(Host,Port,Warn) + (", Current use memory:%s bytes") % (used_memory) Redis instance 127.0.0.1:6379 use memory percent > %80, Current use memory:1000 bytes |
二、输入(input或raw_input)
现在,你已经可以用print()
输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python提供了一个input()和raw_input()函数,可以让用户输入字符串,并存放到一个变量里。使用input或raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的。
- 纯数字输入
当输入为纯数字时,input返回的是数值类型,如int、float。raw_inpout返回的是字符串类型,string类型。
- 输入字符串为表达式
input会计算在字符串中的数字表达式,而raw_input不会。如输入 “57 + 3”,input会得到整数60,raw_input会得到字符串“57 + 3”。
测试input:
1 2 3 4 5 6 7 8 9 |
#!/usr/bin/python # -*- coding: utf-8 -*- # birth = input('birth: ') print(type(birth)) if birth < 2000: print('00前') else: print('00后') |
测试raw_input:
1 2 3 4 5 6 7 8 |
# -*- coding: utf-8 -*- # birth = raw_input('birth: ') print(type(birth)) if birth < 2000: print('00前') else: print('00后') |
这里可以把输入使用int()
函数转换一下,这是因为input()
返回的数据类型是str
,str
不能直接和整数比较,必须先把str
转换成整数就可以了。