一:Python2.x版本下的输入输出
Python2.x 下的输入
1)raw_input 格式:result = raw_input("提示信息") 功能:1)会等待用户输入内容,直到用户按下Enter 2)会将用户输入的内容当做"字符串",传递给接收的变量 2)input 格式:result = input("提示信息") 功能: 1):会等待用户输入内容,直到用户按下Enter 2):会将用户输入的内容当做"代码" 进行处理! 可以理解为input = raw_input + eval
1 content = raw_input("Please input content:: ") 2 print(type(content)) 3 print(content)
输出结果:
Please input content:: 1+1
<type 'str'>
1+1
当我们输出abcd时候
Please input content:: abcd
<type 'str'>
abcd
此时可以看出不论我们输入什么内容,raw_input都当做字符串来处理了。但是Python2.x版本下的input却不是如此
1 result = input("Please input content:: ") 2 print(type(result)) 3 4 print(result)
输出结果:
Please input content:: 1+1
<type 'int'>
2
而当我们输出内容为abc的时候会发生什么呢?
Please input content:: abc
Traceback (most recent call last):
File "G:/PythonProject/DemoTest01/css/001/PythonInput.py", line 23, in <module>
result = input("Please input content:: ")
File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
此时报错了,说abc是未定义的。此时可以看出Python2.x版本下的input输入是把用户输入的内容当做"代码一样"来处理
1 # content = "1+1" 2 content = raw_input("Please input content:: ") 3 result = eval(content) 4 print type(result) 5 print(result)
输出结果为:
Please input content:: 1+1
<type 'int'>
2
此时可以看出raw_input + eval()函数可以实现input的效果
Python2.x 下的输出
Python2.x print语句 print xxx
1 # Python2.x版本 2 # 输出一个值 3 print 123 4 5 # 输出一个变量 6 num = 20 7 print num 8 9 # 输出多个变量 10 num1 = 21 11 print num, num1 12 13 # 格式化输出 14 name = "Lucy" 15 age = 17 16 # 例如我想输出 我的名字叫xxx,年龄xxx 17 print "我的名字叫", name, ",年龄", age 18 19 print "我的名字叫%s,年龄%d" % (name, age) 20 21 print "我的名字叫{0},年龄{1}".format(name, age) 22 23 # 输出到文件当中 24 f = open("test.txt", "w") 25 print >> f, "hello word" 26 27 28 # 输出不自动换行 29 print "1" 30 print "2" 31 print "3" 32 # 以上会自动换行,下面的不会自动换行 33 print "1", 34 print "2", 35 print "3" 36 37 # 输出的各个数据,使用分隔符进行分割 38 print "a", "-", "b", "-", "c" 39 print "-".join(["a", "b", "c"])
输出结果为: 123 20 20 21 我的名字叫 Lucy ,年龄 17 我的名字叫Lucy,年龄17 我的名字叫Lucy,年龄17 1 2 3 1 2 3 a - b - c a-b-c
而且test.txt确实写入了数据
Python3.x版本下的输入
Python3.x版本的 input 相当于Python2.x版本中的raw_input 如果想要在Python3.x版本中实现类似于Python2.x中的input功能,可以使用eval()函数实现
1 result = input("Please input content:: ") 2 print(type(result)) 3 print(result)
输出结果为:: Please input content:: 1+1 <class 'str'> 1+1
当我们输入内容为abc的时候
Please input content:: abc
<class 'str'>
abc
result = input("Please input content:: ") ret = eval(result) print(type(ret)) print(ret)
输出结果为:: Please input content:: 1+1 <class 'int'> 2
Python3.x版本下的输出
Python3.x print函数 print(values,sep,end,file,flush) values:需要输出的值 多个值,使用","分割 sep:分割符,多个值被输出以后,值与值之间,会添加指定的分隔符 end: 1):输出完毕以后,以指定的字符结束 2):默认是换行'\n' file:表示输出的目标。默认是标准的输出(控制台) 还可以是一个可以写入的文件句柄 flush:表示立即输出的意思 值为Bool类型
1 # 导入文件 2 import sys 3 from time import sleep 4 5 6 # Python3.x版本下 7 # 输出一个值 8 print(123) 9 10 # 输出一个变量 11 num = 6 12 print(num) 13 14 # 输出多个变量 15 num1 = 8 16 print(num, num1) 17 18 # 格式化输出 19 name = "cxq" 20 age = 27 21 # 输出:我的名字是xxx,年龄xxx 22 print("我的名字是%s,年龄%d"%(name, age)) 23 print("我的名字是{0},年龄{1}".format(name, age)) 24 25 26 # 输出到文件当中 27 f = open("test.txt", "w") 28 print("what are you doing?", file=f) 29 30 # 标准输出 31 print("how are you", file=sys.stdout) 32 33 # 输出不换行 34 print("abc", end="") 35 print("efg", end="\n") 36 37 # 输出各个数据,使用分隔符分割 38 print("1", "2", "3", sep="-")
输出结果为::
123
6
6 8
我的名字是cxq,年龄27
我的名字是cxq,年龄27
how are you
abcefg
1-2-3
关于flush参数的说明::
1 # flush 参数的说明 2 print("hello world", end="") 3 4 # 如果我在这里停留5秒钟,会发现hello world不会立即刷新出来到控制台上面,(其实是在缓冲区里面),而是5秒之后才打印出来 5 sleep(5)
1 # 但是如果我换一种方法以后,hello world就会立马刷新到控制台上面 2 print("hello world", end="\n") 3 print("hello world\n", end="") 4 5 sleep(5)
或者使用
1 # flush 就是刷新缓冲区数据,立即输出的作用 2 print("hello world", end="", flush=True) 3 sleep(5)
这三种方式都会是缓冲区里面的内容立马刷新出来
点击数:123