Python3输入和输出实例讲解
Python3输入和输出
1、输出格式美化
Python两种输出值得方式:表达式语句和print()hanshu
第三种方式是使用文件对象的write()方法,标准输出文件可以用sys.stdout引用
如果希望输出的形式更加多样,可以使用str.format()函数来格式化输出值
如果希望将输出的值转成字符串,可以使用pepr()或str()函数来实现。
str() :函数返回一个用户易读的表达形式
repr():产生一个解释器易读的表达形式
'''
import math
s = 'Hello , python'
print (str(s));
print(repr(s));
print(str(1/7));
x = 10 * 3.25
y = 200 * 200
s = 'x 的值为:' + repr(x) +', y的值为:' + repr(y) + '...'
print(s)
#repr()函数可以转义字符串中的特殊字符
hello = 'hello, python\n'
print(hello)
hellos = repr(hello)
print(hellos)
#repr() 的参数可以是Python的任何对象
print(repr((x,y,('Google','Runoob'))))
#输出平方与立方的表:
for x in range(1,11):
print(repr(x).rjust(2),repr(x*y).rjust(3),end=' ')
print(repr(x*x*x).rjust(4))
'''
1 40000 1
2 80000 8
3 120000 27
4 160000 64
5 200000 125
6 240000 216
7 280000 343
8 320000 512
9 360000 729
10 400000 1000
'''
for x in range(1,11):
print('{0:2d}{1:3d}{2:4d}'.format(x,x*x,x*x*x))
'''
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
101001000
'''
'''
在第一个例子中,每列间的空格由print()添加
这个例子展示了字符串对象的rjust()方法,他可以将字符串靠右,并在左边填充空格
还有类似地方法,如ljust()和center()。这些方法并不会写任何东西,他们仅仅返回新的字符串
另一个方法zfill(),它会在数字的左边填充0,如下
'''
print('12'.zfill(5))
print('-3.14'.zfill(7))
print('3.14159265359'.zfill(15))
#str.format()的基本使用如下:
print('{}网址:"{}!"'.format('菜鸟教程','www.runoob.com'))
#括号及其里面的字符(称作格式化字段)将会被format()中的参数替换
#在括号中的数字用于指向传入对象在format()中的位置,如下所示:
print('{0}和{1}'.format('Google','Runoob'))
print('{1}和{0}'.format('Google','Runoob'))
#如果在format()中使用了关键字参数,那么他们的值会指向使用该名字的参数
print('{name}网址:{site}'.format(name='菜鸟教程',site='www.runoob.com'))
#位置及关键字参数可以任意的结合:
print('站点列表{0},{1},和{other}。'.format('Google','Runoob',other='Taobao'))
#'!a'(使用ascii()),'!s(使用str())和'!r'(使用repr())可以用于在格式化某个值之前对其进行转化;
print('常量PI的值近似为:{}。'.format(math.pi))
print('常量PI的值近似为:{}。'.format(math.pi))
#可选项':'和格式标识符可以跟着字段名。这就允许对值进行更好的格式化。下面的例子将pi保留到小数点后三位:
print('常量PI的值近似为{0:.2f}'.format(math.pi))
#在':'后传入一个整数,可以保证该域至少有这么多的宽度。用于美化表格时很有用。
table = {'Google':1,'Runoob':2,'Taobao':3}
for name,number in table.items():
print('{0:10} ==> {1:10d}'.format(name,number))
#如果你有很长的格式化字符串,而你不想将他们分开,那么在格式化时通过变量名而非位置会是很好的事情
#最简单的就是传入一个字典,然后使用方括号'[]'来访问键值:
table = {'Google':1,'Runoob':2,'Taobao':3}
print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table))
#也可以通过在table变量前使用'*'来是想相同的功能:
table = {'Google':1,'Runoob':2,'Taobao':3}
print('Runoob: {Runoob:d}; Google: {Google:d}; Taobao: {Taobao:d}'.format(**table))
#旧式字符串格式化
#%操作符也可以实现字符串格式化。他将左边的参数作为类似sprintf()式的格式化字符串,而将右边的代入,然后返回格式化后的字符串
print('常量PI的值近似为:%5.3f。' % math.pi)
#因为str.format()比较新的函数,大多数的Python代码任然使用%操作符。但是应为这种旧式的格式化最终会从该语句中移除,应该跟多的使用str.format()
#读取键盘输入
#Python提供了input()内置函数从标准输入读入一行文本,默认的标准输入是键盘
#input可以接收一个Python表达式作为输入,并将运算结果返回。
#str = input("请输入:")
#print("你的输入内容是:",str)
#读和写文件:open()将会返回一个file对象
'''
open(filename,mode)
filename:变量是一个包含了你要访问的文件名称的字符串值
mode:决定了打开文件模式:只读,写入,追加等。所有可取值见如下的完全李彪。这个参数是非必须的,默认文件访问模式为只读(r);
'''
#打开一个文件
f = open("./tmp/foo.txt",'w')
#向文件里写入
f.write("Python 是一个非常好的语言。\n是的,的确非常好!!\n")
#关闭打开的文件
f.close()
'''
第一个参数为要打开的文件名
第二个参数描述文件如何使用的字符。mode可以是'r'如果文件只读,'w'只用于写(如果存在同名文件则被删除),和'a'用于追加文件内容;所有的任何数据都会被自动增加到末尾。'r+'同时
用于读写,mode参数是可选的;'r'将是默认值
'''
#文件对象的方法
'''
f.read()
为了读取一个文件的内容,调用f.read(size),这将读取一定数目的数据,然后作为字符串或字节对象返回。
size是一个可选的数字类型的参数。当size被忽略了或者为负,那么该文件的所有内容都将被读取并且返回。
'''
f = open("./tmp/foo.txt","r")
str = f.read()
print(str)
f.close()
#f.readline()会从文件中读取单独的一行。换行符为'\n'。f.readline()如果返回一个空字符串,说明已经读取到最后一行
f = open("./tmp/foo.txt","r")
str = f.readline()
print(str)
f.close()
#f.readlines()将返回该文件中包含的所有行
#如果设置可选参数sizehint,则读取指定长度的字节,并且将这些字节按行分割。
f = open("./tmp/foo.txt","r")
str = f.readlines()
print(str)
f.close()
f = open("./tmp/foo.txt","r")
for line in f:
print(line,end='')
f.close()
#f.write() 将string写入到文件中,然后返回写入的字符数
f = open("./tmp/foo.txt","w")
num = f.write("Python 是一个非常好的语言。\n是的,的确非常好!!\n")
print(num)
f.close()
#如果要写入一些不是字符串的东西,那么将需要先进行转换:
f = open("./tmp/foo.txt","w")
value = 'www.runoob.com'
f.write(value)
f.close()
#f.tell()返回文件对象当前所处的位置,它是从文件开头开始算起的字节数。
#f.seek()如果要改变文件当前的位置,可以使用f.seek(offset,from_what)函数
'''
from_what的值,如果是0表示开头,如果是1表示当前位置,2表示文件的结尾
seek(x,0):从起始位置即文件首航首字符开始移动x个字符
seek(x,1):表示从当前文职往后移动x个字符
see(-x,2):表示从文件的结尾往前移动x个字符
'''
f = open("./tmp/foo.txt","rb+")
num = f.write(b'0123456789abcdef')
print(num)
se = f.seek(5)
print(se)
r = f.read(1)
print(r)
se = f.seek(-3,2)
print(se)
r = f.read(1)
print(r)
#f.close() 在文本文件中(那些打开文件的模式面没有b的),只会相对于文件其实文职进行定位
#当你处理完一个文件后,调用f.close()来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常 <