zoukankan      html  css  js  c++  java
  • 简明Python3教程 14.输入输出

    简介

    一些情况下你不得不让程序与用户进行交互。例如,你需要从用户处得到输入然后输出计算结果。我们可以分别通过input()print()函数做到这些。

    对于输出,我们还可以使用str(string)类的各种方法。例如rjust方法可以得到一个指定宽度的右对齐字符串。详见help(str)

    另一种常见的输入/输出类型为文件处理。对于很多程序拥有创建,读写文件的能力是必不可少的,我们会在这节探究这些内容。

    得到用户输入

    #!/usr/bin/python

    # user_input.py

    def reverse(text):

        return text[::-1]

    def is_palindrome(text):

        return text == reverse(text)

    something = input('Enter text: ')

    if (is_palindrome(something)):

        print("Yes, it is a palindrome")

    else:

        print("No, it is not a palindrome")

    输出:

        $ python user_input.py

        Enter text: sir

        No, it is not a palindrome

       

        $ python user_input.py

        Enter text: madam

        Yes, it is a palindrome

       

        $ python user_input.py

        Enter text: racecar

        Yes, it is a palindrome

    范例如何工作:

    范例中我们使用切片操作反转文本。之前我们已经学过如何通过seq[a:b](从a开始止于b)对序列切片。

    对于切片操作我们还可以指定第三个参数步长,步长默认为1将返回文本的一个连续部分。而给定一个负步长-1将返回反转后的文本。

    input()函数接收一个字符串实参并将其打印给用户,然后函数等待用户输入一些东西,一但用户按下回车键则输入结束,input函数将返回输入的文本。

    之后我们反转文本,如果反转后的文本与原文本相同,则代表它是一个回文(http://en.wiktionary.org/wiki/palindrome)。

    练习题:

    检测一个文本是否为回文应该忽略标点,空格和大小写。

    例如”Rise to vote, sit.”同样是一个回文,但是我们当前的例子无法识别它。你能改善这个例子让它做都这点吗?

    文件

    通过创建file类对象,使用其read, readlinewrite方法你可以对文件进行读写。

    具体读或写的方式依赖于你打开文件时指定的模式。

    最后当你完成文件操作时调用close关闭文件。

    范例:

    #!/usr/bin/python

    # Filename: using_file.py

    poem = '''/

    Programming is fun

    When the work is done

    if you wanna make your work also fun:

        use Python!

    '''

    f = open('poem.txt', 'w') # 写模式打开

    f.write(poem) # 写文件

    f.close() # 关闭文件

    f = open('poem.txt') # 如果没有提供打开模式, 则默认假设为读模式

    while True:

        line = f.readline()

        if len(line) == 0: # 长度为0代表EOF(注: end of file即文件尾)

            break

        print(line, end='')

    f.close() # close the file

    输出:

        $ python using_file.py

        Programming is fun

        When the work is done

        if you wanna make your work also fun:

                use Python!

    范例如何工作:

    首先,我们通过内建函数open打开一个文件,在函数中我们指定了被打开文件的文件名与希望使用的打开模式。

    其中打开模式可以为读模式(‘r’),写模式(‘w’)或追加模式(‘a’)。另外我们也可以处理文件文件(‘t’)和二进制文件(‘b’)。

    实际上还有很多模式可用,详见help(open)。默认的open将文件对待为文本文件’t’,并以读模式’r’打开。

    在范例中,我们首先以写文本模式打开文件,使用文件对象的write方法写文件,并调用close将其关闭。

    然后我们再次打开相同的文件用于读取。这里我们无需指定打开模式因为’读文本文件’是open的默认模式。

    在循环中我们使用readline方法读取文件的每一行。这个方法返回一整行文本其中包括末尾的换行符。

    当返回一个空字符串时,意味着我们已经来到文件尾,因此使用break跳出循环。

    默认的,print()函数将自动打印一个换行。因为从文件读出的文本行末尾已经包含一个换行,所以我们指定参数end=’’抑制换行。

    最后我们关闭文件。

    现在,检查poem.txt文件内容以确定程序真的写入并读取了文件。

    Pickle

    python提供了一个名为pickle的标准模块用于将任意python对象存入文件或从文件中读出。这被称做永久性存储对象(persistently)。

    范例:

    #!/usr/bin/python

    # Filename: pickling.py

    import pickle

    # the name of the file where we will store the object

    shoplistfile = 'shoplist.data'

    # the list of things to buy

    shoplist = ['apple', 'mango', 'carrot']

    # Write to the file

    f = open(shoplistfile, 'wb')

    pickle.dump(shoplist, f) # 转储对象到文件

    f.close()

    del shoplist # 销毁shoplist变量

    # 从文件找回对象

    f = open(shoplistfile, 'rb')

    storedlist = pickle.load(f) # 从文件加载对象

    print(storedlist)

    输出:

        $ python pickling.py

        ['apple', 'mango', 'carrot']

    范例如何工作:

    为了将对象存储到文件,我们必须首先’wb’写二进制文件模式打开文件然后调用pickle模块的dump函数。这个过程叫做封藏(pickling)对象。

    接下来我们使用pickle的load函数重新找回对象。这个过程叫做解封(unpickling)对象。

    小结

    我们已经讨论了各种形式的输入/输出,和利用pickle模块进行文件处理。

    接下来,我们将会学习异常处理。

    --------------Python书籍推荐-----------------
    Python基础教程-第2版.修订版 
     
     
    PYTHON核心编程
     
     
    零基础学Python
    服务项目 技术咨询 微信图书 微信视频 微信代码 定制开发 其他福利
    服务入口 QQ群有问必答
    查看详情
    一本书解决90%问题
    查看详情
    微信开发视频
    小程序开发视频
    免费代码
    ¥1888阿里云代金券
    查看详情
    营销工具
    微信特异功能
  • 相关阅读:
    涂抹mysql笔记-安装mysql
    使用Oracle DBLink进行数据库之间对象的访问操作
    mysqldump备份与恢复笔记
    linux6下源码安装mysql5.6
    虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法
    linux添加zabbix service并开机自动启动
    理解Linux系统负荷load average
    oracle体系结构理解
    C#中Abstract和Virtual[转载]
    WPF后台写ControlTemplate总结
  • 原文地址:https://www.cnblogs.com/txw1958/p/A_Byte_of_Python3_Input_Output.html
Copyright © 2011-2022 走看看