• 《Python核心编程》第二版第160页第六章练习 续三 Python核心编程答案自己做的



    6-7.
    调试。看一下在例6.5中给出的代码(buggy.py)
    (a)研究这段代码并描述这段代码想做什么。在所有的(#)处填写你的注释。
    (b)这个程序有一个很大的问题,比如输入6、12、20、30等它会死掉,实际上它不能处理任何的偶数,找出原因。
    (c)修正(b)中提出的问题。
    例6.5 有bug的程序(buggy.py)
    这是一个用于练习6-7的程序,判断这个程序是干什么的,在“#”处添加你的注释,找出其中的错误,并修改之。
    num_str = raw_input('Enter a number: ')
    num_num = int(num_str)
    fac_list = range(1, num_num+1)
    print "BEFORE:", 'fac_list'
    i = 0

    while i < len(fac_list):
        if num_num % fac_list[i] == 0:
            del fac_list[i]
        i = i + 1

    print "AFTER":, 'fac_list'
    【答案】
    这段代码,目的是:输入一个自然数,按照这个数创建一个增序的列表,逐个检查该自然数是否能被列表中元素整除。如果能,就从列表中删除该列表元素。
    修改后的代码如下:
    num_str = raw_input('Enter a number: ')
    num_num = int(num_str)
    fac_list = range(1, num_num+1)
    print "BEFORE:", fac_list

    i = 0

    while i < len(fac_list):
        if num_num % fac_list[i] == 0: #看输入的数是否能被列表中某个元素整除。
            del fac_list[i]
        i = i + 1

    print "AFTER:", fac_list
    【执行结果】
    Enter a number: 12
    BEFORE: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    AFTER: [2, 4, 5, 7, 8, 9, 10, 11]


    6-8.
    列表。给出一个整型值,返回代表该值得英文,比如输入89会返回“eight-nine”。附加题:能够返回符合英文语法规律的新式,比如输入89会返回“eighty-nine”。本练习中的值假定在0~1000。
    【答案】
    代码如下:
    number = int(raw_input('Please input a number between 1 to 1000: ... '))

    units = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    tens_units = ['ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen']
    tens = ['twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety']

    print 'The number you input is: '

    if 0 <= number <= 9: print units[number]
    elif 10 <= number <= 19: print tens_units[number - 10]
    elif 20 <= number <= 99:
        if number % 10 == 0: print tens[number / 10 - 2]
        else: print '%s-%s' % (tens[number / 10 - 2], units[number % 10])
    elif 100 <= number <= 999:
        if number % 100 == 0: print '%s hundred' % (units[number / 100])
        elif number % 10 == 0 and (number - 100 * (number / 100)) != 10: print '%s hundred and %s' % (units[number / 100], tens[(number - 100 * (number / 100))/10 - 2])
        elif number % 10 == 0 and (number - 100 * (number / 100)) == 10: print '%s hundred and ten' % (units[number / 100])
        elif number % 10 != 0 and 20 < (number - 100 * (number / 100))<= 99: print '%s hundred and %s-%s' % (units[number / 100], tens[(number - 100 * (number / 100)) / 10 - 2], units[number - 10 * (number / 10)])
        elif number % 10 != 0 and 10 < (number - 100 * (number / 100))< 20: print '%s hundred and %s' % (units[number / 100], tens_units[number - 100 * (number / 100) - 10])
        elif number % 10 != 0 and 0 < (number - 10 * (number / 10)) < 10: print '%s hundred and %s' % (units[number / 100], units[number - 10 * (number / 10)])
    else: print 'ten hundred'
    【执行结果】
    Please input a number between 1 to 1000: ... 309
    The number you input is:
    three hundred and nine

    Please input a number between 1 to 1000: ... 721
    The number you input is:
    seven hundred and twenty-one

    6-9.
    转换。为练习5-13写一个姊妹函数,接受分钟数,返回小时数和分钟数。总时间不变,并且要求小时尽可能大。
    【答案】
    代码如下:
    minutes = int(raw_input('Please input the minutes: ...'))
    hours = minutes / 60
    mins = minutes - hours * 60
    print "%i:%i" % (hours, mins)

    6-10.
    字符串。写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转,比如,输入“Mr.Ed”,应该返回“mR.eD”作为输出。
    【答案】
    代码如下:
    input = raw_input('Please input a string: ...')
    output = ''
    for i in input:
        if i == i.upper():
            output = output + i.lower()
        else:
            output = output + i.upper()
    print output   

    关键词:python核心编程答案 非官方 博客园

  • 相关阅读:
    linux rename命令批量修改文件名
    深度学习在推断阶段(inference)的硬件实现方法概述
    pkg-config原理及用法
    可测性分析
    CMD常用命令
    CMD命令:不是内部或者外部命令也不是可运行的程序或批处理文件
    main函数的参数argc和argv
    Eclipse中的特殊注释:TODO、XXX、FIXME
    whl文件(python)安装方法
    linux软链接和硬链接
  • 原文地址:https://www.cnblogs.com/balian/p/1979641.html
Copyright © 2020-2023  润新知