Input and Output Star

1 雷雨 今天 乘坐 Enterprise 来到 Input and Output Star 咦 这是一个怎样的星球呢?

输入于输出么 就是

  • 你输入 python 接受
  • 你要求输出 python 就输出

包括:

  • 输出格式化
  • 读写文件
    • 文件对象方法
    • json

输出格式化 之旅

1 雷雨在这里了解到 目前遇到过三种方法 来写 values

  • expression statements
  • ==print== statement
  • ==write()== 函数

2 雷雨 在这个星球上 了解到 两种方式来 format 自己的 output

  • the first way is to do all the string handling yourself 雷雨不明白这个到底是什么意思 让 string 自己处理自己 原来 是这样
    • using string slicing and concatenation operations you can create any layout you can imagine 使用 string 切片 然后再 连起来 恩 就像 雷雨以前吃的葫芦串 串起来
  • use ==str.format()== 方法 两种 将 values 值 转化为 strings的方法
    • ==repr()== 函数 这个将 alues 转化为 编译器去读的
    • ==str()== 函数 这个 将 values 转化为 雷雨 容易读 和理解的

哦 什么是 values 阿 恩 比如 strings numbers / structures(lists dictionaries)

雷雨看到的例子:

>>> s = 'hello, world.' # string
>>> str(s)
'hello, world.'  # 看到两者的区别了么 雷雨能读的
>>> repr(s)
"'hello, world.'" # 这里输出的 请注意了 编译器能读的

>>> str(5) # number
'5'
>>> repr(5) # 这两个是一样的
'5'

>>> hello = 'hello, Leiyu\n'  # 雷雨在这里输入了 字符串+ \n 
>>> hellos = repr(hello)    # \n 本来代表换行的 但 repr() 这后 
>>> print hellos    # 还是print 原样输出了
'hello, Leiyu\n'
>>> repr(hello)    # 这个 还是让 编译器去读的 雷雨读这个 比较别扭
"'hello, Leiyu\\n'"    # 又是双引号 又是单引号的
>>> 

3 雷雨 接下来学习 制作 平方 立方 的表 or 类似矩阵形式

>>> for x in range(1, 11): # 方式1
...     print repr(x).rjust(2), repr(x*x).rjust(3),
...     print repr(x*x*x).rjust(4)
... 
 1   1    1 # 这里是输出 直接在python中运行的
 2   4    8
 3   9   27
 4  16   64
 5  25  125
 6  36  216
 7  49  343
 8  64  512
 9  81  729
10 100 1000

>>> for x in range(1,10): # 方式 2
...     print '{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x) # 雷雨看到 这里的 str.format() 形式 恩 原来可以这样输出
... 
 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

看 这里 输出的 数字字符 自动 右对齐了 原来

  • ==str.rjust() ==返回 str 自动右对其
  • ==str.ljust()== 自动左对齐
  • ==str.center()== 对中啦

然后看这里: ==str.zfill(n)==

>>> '-3.1415'.zfill(10)
'-0003.1415' # 自动fill 10位 -和 . 也算一位
>>> '3.1415926'.zfill(5)
'3.1415926'

4 之后是 ==str.format()== 雷雨发现 原来 是这样使用的

>>> print 'we are the {} who say "{}!"'.format('Knigths', 'Ni') # {} 来放 .format() 中的 一个 字符串
we are the Knigths who say "Ni!"

>>> print '{0} and {1}'.format('spam', 'eggs') # 注意{0} {1} 代表的 str 是社么
spam and eggs

>>> print '{1} and {0}'.format('spam', 'eggs') # 现在 雷雨晓得了 恩 {0} 是 spam
eggs and spam

>>> print 'this {food} is {adjective}.'.format(
...     food='spam', adjective='absolutely horrble') # 还可以使用关键词
this spam is absolutely horrble.

>>> print 'the story of {0}, {1}, and {other}.'.format(
...     'Bill', 'Leiyu', other='Jeremiah') # 还可以混合着来
the story of Bill, Leiyu, and Jeremiah.

奥 还可以这样 使用 {!s} for str() , {!r} for repr() 和 {0:.5f} :注意 ==:==

>>> import math
>>> print 'the value of PI is approximately {}.'.format(math.pi)
the value of PI is approximately 3.14159265359.

>>> print 'the value of PI is approximately {!r}.'.format(math.pi)
the value of PI is approximately 3.141592653589793.

>>> print 'The value of PI is approximately {0:.5f}.'.format(math.pi)
The value of PI is approximately 3.14159.

恩 还可以这样玩:

>>> dic = {'Sjored': 137, 'Jack':9801, 'Jeremiah': 9366} # 这里是一个 dictionary 
>>> for name, phone in dic.items():
...     print '{0:10} ===> {1:10d}'.format(name, phone) 
... 
Sjored     ===>        137 # 看这里是对其的哦
Jeremiah   ===>       9366
Jack       ===>       9801

>>> print ('Jack: {0[Jack]:d}; Sjored: {0[Sjored]:d};'
...     'Jeremiah: {0[Jeremiah]:d}'.format(dic)) 
Jack: 9801; Sjored: 137;Jeremiah: 9366         # 这理还是少了一个空格 对不对 看下面

>>> print ('Jack: {Jack:d}; Sjored: {Sjored:d};' # 这里最后一个 分号; 后没有空格 看 输出也是没有空格的
...     'Jeremiah: {Jeremiah:d}'.format(**dic))
Jack: 9801; Sjored: 137;Jeremiah: 9366

好了 雷雨今天的旅程就到这里

好啦 雷雨 今天学习了

  • str() 给人看的
  • repr() 给编译器看的
  • str.format() # 主要是这个的使用 输出

星期三, 11. 十一月 2015 11:29下午 1.5h