• Python的输入输出


    一: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

    1 result = input("Please input content:: ")
    2 ret = eval(result)
    3 print(type(ret))
    4 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):默认是换行' '
    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="
    ")
    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="
    ")
    3 print("hello world
    ", end="")
    4 
    5 sleep(5)

    或者使用

    1 # flush 就是刷新缓冲区数据,立即输出的作用
    2 print("hello world", end="", flush=True)
    3 sleep(5)

    这三种方式都会是缓冲区里面的内容立马刷新出来

     
  • 相关阅读:
    vagrant在windows下的使用
    eclipse包层级显示和工作空间显示
    myeclipse中解决 java heap space/gc overhead limit exceeded eclipse 的方法
    Java基础1:深入理解Java面向对象三大特性
    Java设计模式学习总结
    初探设计模式5:Spring涉及到的9种设计模式
    初探Java设计模式4:JDK中的设计模式
    初探Java设计模式3:行为型模式(策略,观察者等)
    springmvc之返回json类型的数据给前端
    spring之如何将验证错误信息显示在相应界面
  • 原文地址:https://www.cnblogs.com/cxq0017/p/9277676.html
Copyright © 2020-2023  润新知