专栏首页闷骚的程序员Python 核心编程中文第二版课后练习 3.8 答案

Python 核心编程中文第二版课后练习 3.8 答案

3-1 变量在第一次被赋值时自动声明。在赋值时解释器会根据语法和右侧的操作数来决定新对象的类型。

3-2 函数总是返回一个值,显式 return 的值或者 None。返回的值的类型也是动态确定。

3-3 因为变量名 xxx 对 Python 来说有特殊含义,对于普通的变量应当避免这种命名风格。

3-4 可以,使用 “;”

3-5 可以,使用 “" 或者括号

3-6

(a)x = 1, y = 2, z = 3

(b)z = 2, x = 3, y = 1

3-7 40XL, aving, 0x40L, thisIsn’tAVar, big-daddy, 2hot2touch, counter-1 不合法。不是以字母或者下划线开头,或者有非字母下划线数字的字符。print, if 是关键字。

3-10

用异常处理取代对 os.path.exists() 的调用:

import os

ls = os.linesep

while True:
    fname = raw_input('input a filename:')
#    if os.path.exists(fname):
#        print "Error: '%s' already exists" % fname
#    else:
#        break
    try:
        fobj = open(fname, 'r')
    except IOError, e:
        break;
    else:
        print "Error: '%s' already exists" % fname
        fobj.close()

all = []
print "\nEnter lines ('.' by itself to quit).\n"

while True:
    entry = raw_input('>')
    if entry == '.':
        break
    else:
        all.append(entry)

fobj = open(fname, 'w')
fobj.writelines(['%s%s' % (x, ls) for x in all])
fobj.close()
print 'Done!'

用 os.path.exists() 取代异常处理方法:

import os

fname = raw_input('Enter filename:')
print

#try:
#    fobj = open(fname, 'r')
#except IOError, e:
#    print '*** file open error:', e
#else:
#    for eachLine in fobj:
#        print eachLine,
#    fobj.close()
if os.path.exists(fname):
    fobj = open(fname, 'r')
    for eachLine in fobj:
        print eachLine,
    fobj.close()
else:
    print 'this file not exists'

3-11

import os

fname = raw_input('Enter filename:')
print

#try:
#    fobj = open(fname, 'r')
#except IOError, e:
#    print '*** file open error:', e
#else:
#    for eachLine in fobj:
#        print eachLine,
#    fobj.close()
if os.path.exists(fname):
    fobj = open(fname, 'r')
    for eachLine in fobj:
        print eachLine.strip()
    fobj.close()
else:
    print 'this file not exists'

3-12

"""to read or make a file"""
import os

def makeTextFile():
    '''make a file'''
    ls = os.linesep
    while True:
        fname = raw_input('input a filename:')
    #    if os.path.exists(fname):
    #        print "Error: '%s' already exists" % fname
    #    else:
    #        break
        try:
            fobj = open(fname, 'r')
        except IOError, e:
            break;
        else:
            print "Error: '%s' already exists" % fname
            fobj.close()

    all = []
    print "\nEnter lines ('.' by itself to quit).\n"

    while True:
        entry = raw_input('>')
        if entry == '.':
            break
        else:
            all.append(entry)

    fobj = open(fname, 'w')
    fobj.writelines(['%s%s' % (x, ls) for x in all])
    fobj.close()
    print 'Done!'

def readTextFile():
    '''read a file'''
    fname = raw_input('Enter filename:')
    print

    #try:
    #    fobj = open(fname, 'r')
    #except IOError, e:
    #    print '*** file open error:', e
    #else:
    #    for eachLine in fobj:
    #        print eachLine,
    #    fobj.close()
    if os.path.exists(fname):
        fobj = open(fname, 'r')
        for eachLine in fobj:
            print eachLine.strip()
        fobj.close()
    else:
        print 'this file not exists'

def main():
    '''main menu'''
    while True:
        print '1.Read a file'
        print '2.Make a file'
        print 'x.exit'
        myStr = raw_input('input your choice:')
        if myStr == '1':
            readTextFile()
        elif myStr == '2':
            makeTextFile()
        elif myStr == 'x':
            break

if __name__ == '__main__':
    main()

3-13

Windows 下 curses 模块貌似无法正常使用……

迂回的实现思路是将文件内容按行读取到一个列表里,

然后让用户修改每一行,

最后让用户选择是否保存,

保存则重写文件,

不保存则退出。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 核心编程中文第二版课后练习 2.21 答案

    mzlogin
  • 一道在知乎很火的 Java 题——如何输出 ab

    虽然我不是大神,但我也点进去看了一下,思考了一会之后有了一些思路,然后去看其它人的答案的时候果然全都已经被各路大神们先想到并贴出来了,所以我就不去凑热闹写重复答...

    mzlogin
  • Android UI 开发里的尺寸单位理解

    在学习 Android UI 开发的初期,经常被一些常用概念如 dp、sp 和它们与 px 的换算等虐,要避免被虐,最好的方法当然是知其所以然,再见到它们就胸中...

    mzlogin
  • Go 语言 Web 编程系列(十四)—— 获取用户请求数据(下)

    默认情况下,POST 表单编码类型属性 enctype 值是 application/x-www-form-urlencoded,其含义是将表单请求数据编码为 ...

    学院君
  • 小程序竟然也能成为装修行业的新宠?

    用户1745481
  • python3-列表与字符串

    print(x) x3=tuple(x) print(x3) [1, 2, 5, 4, 3, 10, 20, [1, 2]] (1, 2, 5, 4, 3, 1...

    py3study
  • 【AI 引擎】专访美消费技术协会主席夏皮罗 | 亚马逊挑战英特尔

    1.中国企业须“从伟大生产者向伟大品牌转型”——访美国消费技术协会主席夏皮罗 ? 曾有美国媒体评价说,虽然许多美国人在使用中国产品,却很少有美国人知道中国品牌。...

    新智元
  • Python工匠:解析容器类型的门道

    花下猫语:年关已近,我本周忙得天昏地暗,忙中出了不少错,喵了个去。无论如何,希望大伙是买票顺顺利利的,回家安安全全的,过年是开开心心的。今天,给大家分享的是一篇...

    Python猫
  • 157亿美元挑战微软!全球最大客户关系服务商Salesforce收购Tableau

    美国时间周一,客户关系管理(CRM) 软件服务提供商Salesforce.com同意斥资157亿美元收购大数据公司Tableau Software,望为其客户提...

    大数据文摘
  • CES 2017 前瞻:深吻前沿,你准备好了吗?

    VRPinea

扫码关注云+社区

领取腾讯云代金券