python2 和python3输入输出的差别:
https://www.runoob.com/python/python-func-input.html
输出:
python2:输出时,可以使用print(123)或者pinrt 123,括号可有可无
python2中可以引入python3用法,
from future import print_function
python3:输出时,只能使用print(123),必须带括号
输入:
python2中存在input()和raw_input()函数
raw_input():所有的输入都以字符串形式输入,并且末尾带\n
input:会对输入的表达式进行计算,如果输入字符串,输入带引号的字符串
python3:只有input函数,和python2中raw_input 用法一致。
推荐在python2中使用raw_input ,在python3中使用input进行交互。
1、标准输入sys.stdin:对应的操作是input
sys.stdin.readline():只输入(获取)一行,sys.stdin.readline()会将标准输入全部获取,包括末尾的'\n',所以一般会在末尾加上.strip()或.strip(“\n”)去掉末尾的换行符
sys.stdin.read() :将输入的内容全部获取,以字符串的形式输出,行与行之间用”\n”分隔
sys.stdin.readlines() :获取所有输入信息,以列表输出,每一行是一个元素,每行末尾带换行符
( sys.stdin.readlines()会等到stdin结束(macOS上的command-D )
2、标准输出sys.stdout,对应的操作是print;只需要定义一个write对象,告诉sys.stdout去哪儿写
sys.stdout.write ():从键盘读取sys.stdout.write ()输入的内容,默认不会换行,所以一般会在末尾加上“\n”,跟print方法类似
3.标准错误输出(sys.stderr)和标准输出类似也是print(打印),可以写入文件中
输出:
注意:
python 2.7 :
方式一:
print语句不以逗号为结尾时,会在输出字符串尾部自动附加一个换行符('\n');
print "123", 无换行,但是末尾有空格
print "456" 有换行
方式二:
from future import print_function
print('123123', end='') 这个是引入python3中的用法
python 3:
print('1234560')默认有换行,是因为默认在结尾加了'\n'
print('1234560',end='') end指定字符串结尾符号,可以设为空,或者任何字符
输入:
https://www.cnblogs.com/pizitai/p/6476362.html
使用input和raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的
纯数字输入
当输入为纯数字时
input返回的是数值类型,如int,float
raw_inpout返回的是字符串类型,string类型
输入字符串为表达式
input会计算在字符串中的数字表达式,而raw_input不会。
如输入 “57 + 3”:
input会得到整数60
raw_input会得到字符串”57 + 3”
python input的实现
看python input的文档,可以看到input其实是通过raw_input来实现的,原理很简单,就下面一行代码:
def input(prompt):
return (eval(raw_input(prompt)))
nID = raw_input("Input your id :")
输入整数:
nAge = int(raw_input("input your age :\n"))
输入浮点数:
fWeight = float(raw_input("input your weight\n"))
输入16进制数:
nHex = int(raw_input('input hex value(like 0x20):\n'), 16)
输入8进制数:
nOct = int(raw_input('input oct value(like 020):\n'), 8)
rjust() 方法, 它可以将字符串靠右, 并在左边填充空格。
还有类似的方法, 如 ljust() 和 center()。 这些方法并不会写任何东西, 它们仅仅返回新的字符串。
>>> for x in range(1, 11):
... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ')
... # 注意前一行 'end' 的使用
... print(repr(x*x*x).rjust(4))
...
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
10 100 1000</pre>
format格式化详细说明:
http://www.runoob.com/python/att-string-format.html
zfill(), 它会在数字的左边填充 0
>>> '12'.zfill(5) '00012'
括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
在括号中的数字用于指向传入对象在 format() 中的位置,
>>> print('{0} 和 {1}'.format('Google', 'Runoob'))
Google 和 Runoob
>>> print('{1} 和 {0}'.format('Google', 'Runoob'))
Runoob 和 Google</pre>
如果在 format() 中使用了关键字参数, 那么它们的值会指向使用该名字的参数。
>>>
print('{name}网址: {site}'.format(name='菜鸟教程', site='www.runoob.com'))
菜鸟教程网址: www.runoob.com</pre>
位置及关键字参数可以任意的结合:
>>> print('站点列表 {0}, {1}, 和 {other}。'.format('Google', 'Runoob', other='Taobao'))
站点列表 Google, Runoob, 和 Taobao。
#通过位置
print '{0},{1}'.format('chuhao',20)
print '{},{}'.format('chuhao',20)
print '{1},{0},{1}'.format('chuhao',20)
#通过关键字参数
print '{name},{age}'.format(age=18,name='chuhao')
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def __str__(self):
return 'This guy is {self.name},is {self.age} old'.format(self=self)
print str(Person('chuhao',18))
#通过映射 list
a_list = ['chuhao',20,'china']
print 'my name is {0[0]},from {0[2]},age is {0[1]}'.format(a_list)
#my name is chuhao,from china,age is 20
#通过映射 dict
b_dict = {'name':'chuhao','age':20,'province':'shanxi'}
print 'my name is {name}, age is {age},from {province}'.format(**b_dict)
#my name is chuhao, age is 20,from shanxi
#填充与对齐
print '{:>8}'.format('189')
# 189
print '{:0>8}'.format('189')
#00000189
print '{:a>8}'.format('189')
#aaaaa189
#精度与类型f
#保留两位小数
print '{:.2f}'.format(321.33345)
#321.33
#用来做金额的千位分隔符
print '{:,}'.format(1234567890)
#1,234,567,890
#其他类型 主要就是进制了,b、d、o、x分别是二进制、十进制、八进制、十六进制。
print '{:b}'.format(18) #二进制 10010
print '{:d}'.format(18) #十进制 18
print '{:o}'.format(18) #八进制 22
print '{:x}'.format(18) #十六进制12</pre>