Python的基本输入和输出
学习目标
- 掌握Python的基本输入和输出
基本内容
- Python的基本输入
- Python的基本输出
数据的输入与输出
(1)标准输入
- input("提示字符串")
- 程序执行到input函数时先在屏幕上显示提示字符串,然后停下来等待用户的键盘输入,函数接收从键盘输入的任意一个字符串,将所有输入默认为字符串处理。
x = input("Please enter your input:")
type(x)
Please enter your input:5
str
- input()函数的返回结果都是字符串,实际使用时需要将其转换为相应的类型再进行处理。
x = int(input("Please enter your input:"))
type(x)
Please enter your input:5
int
(2)标准输出
- print()函数的格式如下:
- print([objects][,sep=' '][,end='\n'][,file=sys.stdout][,flush=False])
- objects是输出的对象,多个对象之间用英文逗号分割;
- sep是对象之间插入的分隔符,默认是空格;
- end是添加在输出文本最后的一个字符,默认是换行符;
- file指定输出内容发送到的文件,默认是显示器;
- flush指定输出的内容是否立即写文件。
- 参数说明:
- [object1, ...]待输出的对象,表示可以一次输出多个对象,输出多个对象时,需要用“,”分隔,会依次打印每个object,遇到逗号“,”会输出一个空格。
a1, a2, a3 = "aaa", "bbb", "ccc"
print(a1, a2, a3)
aaa bbb ccc
- sep=""用来间隔多个对象,默认是一个空格,还可以设置成其它字符。
a1, a2, a3 = "aaa", "bbb", "ccc"
print(a1, a2, a3, sep = "***")
aaa***bbb***ccc
- end="\n"参数用来设定以什么结尾,默认值是换行符,也可以换成其它字符串,用这个选项可以实现不换行输出,如使用end=""。
a1, a2, a3 = "aaa", "bbb", "ccc"
print(a1, end = "@")
print(a2, end = "@")
print(a3)
aaa@bbb@ccc
- 参数file设置把print中的值打印到什么地方,可以是默认的系统输出sys.stdout,即默认输出到终端,可以设置file=文件储存对象,把内容存到该文件中。
# 以写的方式打开文件a.txt
f = open('a.txt', 'w')
print('python is good', file = f)
# 关闭文件
f.close()
x, y = 5, 9
print(x, y, sep = ',', end = '!')
5,9!
out = open("test.txt", "w")
print("Helloworld", file = out)
out.close()
(3)格式化输出
- %格式化运算符
- format()函数
- Raw字符串
- 字符串格式化%输出:字符串格式化表达式用%表示,%之前是需要进行格式化的字符串,%之后是需要填入字符串中的实际参数。语法如下:"%格式控制符"%实际参数
- print()函数可使用一个字符串模版进行格式化输出。
- 模版中有格式符,这些格式符为真实值输出预留位置,并说明真实数值应该呈现的格式。
x = 520
print("sum = %d" % x)
sum = 520
- 格式化输出:字符串格式化%
符号 | 说明 |
---|---|
%s | 字符串 |
%c | 字符 |
%d | (十进制)整数 |
%u | 无符号整数 |
%o | 八进制数 |
%x | 十六进制数 |
%X | 十六进制数(大写) |
%e | 用科学记数法表示浮点数 |
%E | 同%e |
%f | 浮点数,可指定小数点后的精度 |
%g | 采用%f和%e较短者输出 |
%G | 采用%f和%E较短者输出 |
%p | 以十六进制数格式化变量地址 |
%% | 字符“%” |
- Python用一个元组将多个值传递给模版,每个值对应一个格式符。
print('名字:%s,年龄:%d' % ('张三', 20))
名字:张三,年龄:20
- "%s speak plainer than %s."为格式化输出时的字符串模版。
- %s为一个格式符,表示一个字符串。元组('Facts', 'words')的两个元素'Facts'和'words'为分别替换第一个%s和第二个%s的真实值。
- 在模版和元组之间,有一个%号分隔,它代表了格式化操作。
print("%s speak plainer than %s." % ('Facts', 'words'))
Facts speak plainer than words.
- 此外,格式化操作符还有如下辅助命令:
- m.n:m是数字的总宽度,n是小数位数;
- -:用于左对齐;
- +:在正数前面显示加号;
- 0:显示的数字前面填充'0'取代空格。
print('%f' % 3.1415926)
print('%20.2f' % 3.1415926)
3.141593
3.14
-
附加格式说明符:可以用如下的方式,对输出的格式字符进行进一步的控制:
- '%[(name)][flags][width].[precision]type' % x
- name可为空,对格式符进行命名,其为键名。
- flags可以有+、-、''或0。+在正数前面显示加号。-表示左对齐。''为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。0表示使用0填充空位。
- width表示显示的宽度。
- precision表示小数点后精度。
- type表示数据输出的格式类型。
- '%[(name)][flags][width].[precision]type' % x
-
字符串辅助操作符
符号 | 说明 |
---|---|
* | 字符串 |
- | 左对齐 |
+ | 在正数前面显示加号 |
# | 在八进制数前面显示0,在十六进制数前面显示0x(或0X) |
0 | 显示的数字前面填充0而不是默认空格 |
m.n | m是最小总宽度,n是小数点后位数 |
year = 2021
month = 1
day = 15
print('%04d-%02d-%02d' % (year, month, day))
2021-01-15
print('这个商品的价格是 ¥%.2f' % 7.8)
这个商品的价格是 ¥7.80
value = 8.123
print('%06.2f' % value)
print('%02x' % 10)
print('%.2e' % 1.2888)
print('%6.3f%%' % 2.3)
008.12
0a
1.29e+00
2.300%
- 字符串的format方法
-
str.format()函数提供了比%方式更为强大的格式化方式,通过传入的参数进行格式化,并且使用大括号‘{}’作为特殊字符代替‘%’。
-
str.format()格式化输出使用花括号{}来包围替换字段,也就是待替换的字符串。而未被花括号包围的字符会原封不动地出现在输出结果中。
-
<模板字符串>.format(<逗号分隔的参数>)
- <模板字符串>是由一系列的占位符组成,用来控制字符串中嵌入值的出现位置及格式,<逗号分隔的参数>按照序号顺序替换到<模板字符串>的占位符处。占位符如何被替换取决于每个格式说明符,格式说明符以“:”作为其前缀来表示。
- 占位符用大括号{}括起来,如果大括号中没有序号,则按照位置顺序替换。除了通过序号来指定填充的参数外,还可以通过关键字参数、下标、字典的key和对象的属性来填充。
-
字符串的format方法示例:
print('{}:计算机{}的CPU占用率为{}%.'.format('2019-01-30', 'Python', 10))
2019-01-30:计算机Python的CPU占用率为10%.
- ① 使用位置(序号)索引
- 以下两种写法是等价的:
print("Hello, {} and {}!".format("John", "Mary"))
print("Hello, {0} and {1}!".format("John", "Mary"))
Hello, John and Mary!
Hello, John and Mary!
- 花括号内部可以写上待输出的目标字符串的索引,也可以省略。如果省略,则按format后面的括号里的待输出的目标字符串顺序依次替换。
print('{1}{0}{1}'.format('言', '文'))
文言文
- 使用"{序号:格式说明符}"形式的格式说明符:
print("{0:.2f},{1}".format(3.1415926, 100))
3.14,100
- 使用"{序号/键:格式说明符}"形式的格式说明符:
print("{0},pi={x}".format("圆周率", x = 3.14))
圆周率,pi=3.14
- ② 使用关键字索引:
- 除了通过位置来指定待输出的目标字符串的索引,还可以通过关键字来指定待输出的目标字符串的索引。
print("Hello, {boy} and {girl}!".format(boy = "John", girl = "Mary"))
print("{a}{b}".format(b = "3", a = "Python"))
Hello, John and Mary!
Python3
- ③ 使用属性索引:
- 在使用format()来格式化字符串时,通常将目标字符串作为参数传递给format方法,此外还可以在格式化字符串中访问参数的某个属性,即使用属性索引。
c = 3 - 5j
print(('复数{0}的实部为{0.real},虚部为{0.imag}。').format(c))
复数(3-5j)的实部为3.0,虚部为-5.0。
- ④ 使用下标索引:
coord = (3, 5, 7)
print('X:{0[0]}; Y:{0[1]}; Z:{0[2]}'.format(coord))
X:3; Y:5; Z:7