第四章 Python基本输入与输出

第四章 Python基本输入与输出

注:本博客为 《python 王者归来》学习笔记,如有版权问题请通知删除

4-1 python 的辅助说明 help()

  • help() 函数可以列出某一个 python 的指令或函数的使用说明。

    help(print)
    #输出结果
    Help on built-in function print in module builtins:
    
    print(...)
        print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
        
        Prints the values to a stream, or to sys.stdout by default.
        Optional keyword arguments:
        file:  a file-like object (stream); defaults to the current sys.stdout.
        sep:   string inserted between values, default a space.
        end:   string appended after the last value, default a newline.
        flush: whether to forcibly flush the stream.
    

    注意:此函数输出的使用说明是英文版的,可以不懂英以配合翻译软件

4-2 格式化输出数据使用 print()

4-2-1 函数 print() 的基本语法

  • 它的基本语法如下:

  • print(value , … , sep=" " , end="\n" , file=sys.stdout , flush =False) )

    • value:表示想要输出的数据,可以一次输出多个数据,条数据间以逗号隔开。
    • sep:前数据输出结束时,可以插入各个数据的分隔字符,默认是一个空格字符。
    • end:当数据输出结束时所插入的字符,默认是插入换行字符,所以下一次 print() 函数的输出会在下一行输出。
    • file:数据输出位置,默认是 sys.stdout,也就是屏幕。
    • flush:是否清除数据流的缓冲区,预设是不清除。
    num1 = 222
    num2 = 333
    num3 = num1 + num2
    print("这是数值相加",num3)
    str1 = str(num1) + str(num2)
    print("强制转换为字符串相加",str1,sep="$$$")
    #输出结果
    这是数值相加 555
    强制转换为字符串相加$$$222333
    

4-2-2 格式化 print() 输出

  • 在使用格式化输出时,基本使用格式如下

  • print(" … 输出格式区 …" % ( 变量系列区, … ))

  • 在上述输出格式区中,可以放置变量系列区对应的格式化字会,基本意义如下:

    • %d:格式化整数输出。
    • %f:格式化浮点数输出。
    • %x:格式化 16 进位整数输出。
    • %o:格式化 8 进位整数输出。
    • %s:格式化字符串输出。
    score = 90
    str1 = "洪锦魁"
    count = 1
    print("%s 你的第 %d 次物理考试成绩是 %d" % (str1,count,score))
    #输出结果
    洪锦魁 你的第 1 次物理考试成绩是 90
    
  • 设计程序时, print() 函数内的输出格式区也可以用一个字符串变量取代。

    • 例1:
    score = 90
    str1 = "洪锦魁"
    count = 1
    formatstr = "%s 你的第 %d 次物理考试成绩是 %d"
    print(formatstr % (str1,count,score))
    #输出结果
    洪锦魁 你的第 1 次物理考试成绩是 90
    
    • 例2:
    x = 100
    print("100的16进位 = %x \n100的8进位 = %o" % (x,x))
    #输出结果
    10016进位 = 64 
    1008进位 = 144
    
    • 例3:
    x = 10
    print("整数%d \n浮点数%f \n字符串%s" % (x,x,x))
    y = 9.9
    print("整数%d \n浮点数%f \n字符串%s" % (y,y,y))
    #输出结果
    整数10 
    浮点数10.000000 
    字符串10
    整数9 
    浮点数9.900000 
    字符串9.9
    

4-2-3 精准的控制格式化输出

  • 上面例子最大的制点是无法精确控制浮点数的输出位置,print() 函数在格式化过程中,有提供功能可以让我们设定保留多少格的空间让资料做输出

    • %(+|-)nd:格式化整数输出
    • %(+|-)m.nf:格式化浮点数输出
    • %(+|-)nx:格式化16进位整数输出
    • %(+|-)no:格式化8进位整数输出
    • %(+|-)ns:格式化字符串输出
  • 上述对浮点数而言,m 代表保留多少格数供输出(包含小数点),n 则是小数数据保留格数。至于其他的数据格式 n 则是保留多少格数空间,如果保留格数空间不足将完整输出数据,如果保留格数空间太多则数据靠右对齐。

  • 如果格式化数值数据有加上负号(-),表示保留格数空间有多时,数据将靠左输出。如果格式化数据有加上正号(+),青示输出数据是正值时,将在左边加上正值符号

    • 例1:格式化输出的应用

      x = 100
      print("x=/%6d" % x)
      y = 10.5
      print("y=/%6.2f/" %y)
      s = "Deep"
      print("s=/%6s/" % s)
      print("以下是保留空间不足的实例")
      print("x=/%3d/" % x)
      print("y=/%3.2f/"%y)
      print("s=/%3s/" % s)
      #输出结果
      x=/   100
      y=/ 10.50/
      s=/  Deep/
      以下是保留空间不足的实例
      x=/100/
      y=/10.50/
      s=/Deep/
      
    • 例2:格式化输出,靠左对齐的实例

      x = 100
      print("x=/%-6d/ "% x)
      y = 10.5
      print("y=/%-6.2f/"% y)
      s = "Deep"
      print("s=/%-6s/"% s)
      #输出结果
      x=/100   / 
      y=/10.50 /
      s=/Deep  /
      
    • 例3:格式化输出,正值数据将出现正号

      x = 10
      print("x=/%+6d/"% x)
      y = 10.5
      print("y=/%+6.2f"% y)
      #输出结果
      x=/   +10/
      y=/+10.50
      
    • 例4:格式化输出的应用

      print(" 姓名    国文  英文  总分")
      print("%3s  %4d  %4d  %4d" %("洪水儒",98,90,188))
      print("%3s  %4d  %4d  %4d" %("洪水星",96,95,191))
      print("%3s  %4d  %4d  %4d" %("洪冰雨",92,88,100))
      print("%3s  %4d  %4d  %4d" %("洪星宇",93,97,190))
      #输出结果
       姓名    国文  英文  总分
      洪水儒    98    90   188
      洪水星    96    95   191
      洪冰雨    92    88   100
      洪星宇    93    97   190
      
      

4-2-4 format() 函数

  • 这是 python 增强版的格式化输出功能,字符串使用 format 方法做格式化的动作,它的基本使用格式如下:

  • print(" …输出格式区… " .format( 变量系列区 , …))。注意 format 前面有一点

  • 在输出格式区内的字符串变量例用 ” {} “ 表示。

    • 例1:使用 format() 函数重新设计前面例子
    score= 90
    str1 = "洪锦魁"
    count = 1
    print("{}你的第{}次物理考试成绩是{}".format(str1,count,score))
    #输出结果
    洪锦魁你的第1次物理考试成绩是90
    
    • 例2:以字符串代表输出格式区,重新设计前面例子
    score= 90
    str1 = "洪锦魁"
    count = 1
    str2 = "{}你的第{}次物理考试成绩是{}"
    print(str2.format(str1,count,score))
    #输出结果
    洪锦魁你的第1次物理考试成绩是90
    

4-2-5 字符串输出与基本排版的应用

  • 其实适度利用输出格式,也可以产生一封排版的信件,以下程序的前3行会先利用 sp 字符串变量建立一个含 40 格的空白格数,然后产生对齐效果。

    sp = " " * 40
    print("%s    1231 Delta Rd" % sp)
    print("%s    Oxford,Mississippi" % sp)
    print("%s    USA\n\n\n" % sp)
    print("Dear Ivan")
    print("-------AAA---------")
    print("-------BBB---------")
    print("office.\n\n")
    print("Best Regards")
    print("Peter Malong")
    #输出结果
     1231 Delta Rd
                                                Oxford,Mississippi
                                                USA
    
    
    
    Dear Ivan
    -------AAA---------
    -------BBB---------
    office.
    
    
    Best Regards
    Peter Malong
    
    
    

4-2-6 一个无聊的操作

  • 利用空格乘以 40 产生 40 个空格,功能是用于排版,如果将某个字会串乘以 50 ,然后用 print() 输出,可以在屏幕上建立一个无聊的画面。

    x = "Boring Time" * 50
    print(x)
    #输出结果
    Boring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring TimeBoring Time
    

4-3 输出数据到文件

  • 上面在 print() 函数中,默认输出是屏幕 sys.stdout,其实我们可以利用这个特性将输出导向一个文件

4-3-1 打开一个文件 open()

  • open() 函数可以打开一个文件供读取或写入, 如果这个函数执行成功,会传回文件对象,这个函数的基本使用格式如下:
  • file_Obj = open(file,mode=“r”) #左边列出最常用的2个参数
    • file 用字符串列出令人欲打开的文件。
    • mode 打开模式,如果省略代表是 mode=“r”,使用时如果 mode=“w”,或其它,也可以省略 mode=,直接写 “w”。也可以同时具有多项模式,例如,“wb” 代表以二进制文件打开供写入,可以是下列基本模。
      • “r”:这是预设,打开文件供读取(read)。
      • “w”:打开文件写入,如果原先文件有内容将被覆盖
      • “a”:打开文件写入,如果原先文件有内容,新写入数据将附加在后面。
      • “x”:打开一个新的文件供写入,如果所打开的文件已经存在会产生错误。
      • “b”:打开二进制文件模式。
      • “t”:打开文本(txt)文件模式,这是默认。
      • “+”:打开文件供更新用。
    • file_Obj 这是文件对象,读者可以自行给予名称,末来 print() 函数可以将输出导向些对象,不使用时要关闭 “file_Obj.close()”,才可以返回操作系统的文件管理器观察执行结果。

4-3-2 使用 print() 函数输出数据到文件

  • 将数据输出到 out1.txt 采用 “w” 模式;输出到 out2.txt 采用 “a” 模式。
fstream1 = open("e:\python\out1.txt",mode="w") #取代模式
print("Testing for output",file=fstream1)
fstream1.close()
fstream2 = open("e:\python\out2.txt",mode="a") #附加模式
print("Testing for output",file = fstream2)
fstream2.close()

如果执行程序一次,可以得到内容相同的 out1.txt 和 out2.txt 。但是如果持续执行, out2.txt 内容会持续增加, out1.txt 内容则保持不变,下面是执行程序 2 次的结果

第四章 Python基本输入与输出_第1张图片

4-4 数据输入

  • 这个 input() 函数功能与 print() 函数功能相反,这个函数会从屏幕读取用户从键盘输入的数据,它的使用格式如下

  • value = input(“prompt :”)

    • ualue:所输入的数据会存储在此变量内,特别需注意的是所输入的数据不论是字符串或是数值数据返回到 value 时一律是字符串数据,如果要执行数学运算需要用 int() 函数转换成整数。
    • 例1:
    name = input("请输入姓名:")
    engh = input("请输入成绩:")
    print("name数据类型是:",type(name))
    print("engh数据类型是:",type(engh))
    #输出结果
    请输入姓名:洪锦魁
    请输入成绩:99
    name数据类型是: <class 'str'>
    engh数据类型是: <class 'str'>
    
    • 例2:
    print("欢迎使用成绩输入和系统")
    name = input("请输入姓名:")
    engh = input("请输入英语成绩:")
    math = input("请输入数学成绩:")
    total = int(engh) + int(math)
    print("%s 你的总分是 %d" % (name,total))
    #输入结果
    欢迎使用成绩输入和系统
    请输入姓名:洪锦魁
    请输入英语成绩:80
    请输入数学成绩:95
    洪锦魁 你的总分是 175
    
    • 例3
    clastname = input("请输入中文姓氏:")
    cfirstname = input("请输入中文名字:")
    cfullname = clastname = clastname + cfirstname
    print("%s 欢迎使用本系统" % cfullname)
    lastname = input("请输入英文Last Name:")
    firstname = input("请输入英文First Name:")
    fullname = firstname + "" + lastname
    print("%s Welcome to SSE System" % fullname)
    #输出结果
    请输入中文姓氏:洪
    请输入中文名字:锦魁
    洪锦魁 欢迎使用本系统
    请输入英文Last Name:HON
    请输入英文First Name:JINKUI
    JINKUIHON Welcome to SSE System
    
    

4-5 列出所有内置函数 dir()

  • 阅读至此,相信读者已经使用了许多 python 内置的函数了,如 help()、print()、input() 等,读者可能想了解到底 python 有提供哪些内置函数可供我们在设计时使用,可以使用下列方式列出 python 所提供的内置函数
  • 列出 python 内置函数格式:dir(_builtins_)
dir(__builtins__) #参数前面和后面都是双下横线
#输出结果
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 #...略...

列出 python 内置函数格式:dir(_builtins_)

dir(__builtins__) #参数前面和后面都是双下横线
#输出结果
['ArithmeticError',
 'AssertionError',
 'AttributeError',
 'BaseException',
 'BlockingIOError',
 'BrokenPipeError',
 'BufferError',
 'BytesWarning',
 'ChildProcessError',
 'ConnectionAbortedError',
 'ConnectionError',
 'ConnectionRefusedError',
 'ConnectionResetError',
 'DeprecationWarning',
 #...略...

你可能感兴趣的:(python)