学习笔记:Python3菜鸟教程 Part4
12 Python3输入和输出
一、标准输入输出
1.打印到屏幕
产生输出的最简单方法是使用print语句,可以通过用逗号分隔零个或多个表达式。这个函数传递表达式转换为一个字符串。
print ("Python is really a great language,", "isn't it?")
output:
Python is really a great language, isn't it?
2.读取键盘输入
Python2中有两个内置的函数可从标准输入读取数据,它默认来自键盘。这些函数分别是:input() 和 raw_input()。但在Python3中,raw_input()函数已被弃用。此外, input() 函数是从键盘作为字符串读取数据。
x=input("请输入x=")
y=input("请输入y=")
z=x+y
print("x+y="+z)
'''
output:
请输入x=111
请输入y=222
x+y=111222
'''
可以看到input的返回值永远是字符串,当我们需要返回int型时需要使用int(input())的形式,例如:
x=int(input("请输入x="))
y=int(input("请输入y="))
z=x+y
print("x+y=",z)
'''
output:
请输入x=111
请输入y=222
x+y= 333
'''
3.旧式字符串格式化输出
% 操作符可以实现字符串格式化。 它将左边的参数作为类似 sprintf() 式的格式化字符串, 而将右边的代入, 然后返回格式化后的字符串. 例如:
import math
print('常量 PI 的值近似为:%5.3f。' % math.pi)
#output:
#常量 PI 的值近似为:3.142。
因为 str.format() 比较新的函数, 大多数的 Python 代码仍然使用 % 操作符。但是因为这种旧式的格式化最终会从该语言中移除, 应该更多的使用 str.format()。
4.格式化输出
一般来说,我们希望更多的控制输出格式,而不是简单的以空格分割。这里有两种方式:
(1)第一种是由自己控制。使用字符串切片、连接操作以及 string 包含的一些有用的操作。
这些方法并不会写任何东西,它们仅仅返回新的字符串。
string对象的方法 | 语法 | 参数 | 返回值 |
rjust() | str.rjust(width[, fillchar]) | width -- 指定填充指定字符后中字符串的总长度; fillchar -- 填充的字符,默认为空格 |
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。 如果指定的长度小于字符串的长度则返回原字符串 |
ljust() | str.ljust(width[, fillchar]) | width -- 指定填充指定字符后中字符串的总长度; fillchar -- 填充的字符,默认为空格 |
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串。 如果指定的长度小于字符串的长度则返回原字符串 |
center() | str.center(width[, fillchar]) | width -- 字符串的总宽度。 fillchar -- 填充字符 |
返回一个指定的宽度 width 居中的字符串,如果 width 小于字符串宽度直接返回字符串,否则使用 fillchar 去填充。 |
zfill() | str.zfill(width) | width -- 指定字符串的长度。原字符串右对齐,前面填充0 | 返回指定长度的字符串 |
(2)第二种是使用str.format()方法。
通过{}和:来代替传统%方式。
位置参数不受顺序约束,且可以为{},只要format里有相对应的参数值即可,参数索引从0开,传入位置参数列表可用*列表的形式。
- 使用位置参数
li = ['hoho',18]
print('my name is {} ,age {}'.format('hoho',18))
#output:my name is hoho ,age 18
print('my name is {1} ,age {0}'.format(10,'hoho'))
#output:my name is hoho ,age 10
print('my name is {1} ,age {0} {1}'.format(10,'hoho'))
#output:my name is hoho ,age 10 hoho
print('my name is {} ,age {}'.format(*li))
#output:my name is hoho ,age 18
- 使用关键字参数
关键字参数值要对得上,可用字典当关键字参数传入值,字典前加**即可 。
hash = {'name':'hoho','age':18}
print('my name is {name},age is {age}'.format(name='hoho',age=19))
#output:my name is hoho,age is 19
print('my name is {name},age is {age}'.format(**hash))
#output:my name is hoho,age is 18
- 填充与格式化
格式:{0:[填充字符][对齐方式 <^>][宽度]}.format()
print('{0:*>10}'.format(20)) #右对齐
#output:********20
print('{0:*<10}'.format(20)) #左对齐
#output:20********
print('{0:*^10}'.format(20)) #居中对齐
#output:****20****
- 精度与进制
print('{0:.2f}'.format(1/3))
print('{0:b}'.format(10)) #二进制
print('{0:o}'.format(10)) #八进制
print('{0:x}'.format(10)) #16进制
print('{:,}'.format(12369132698)) #千分位格式化
#output:
0.33
1010
12
a
12,369,132,698