zoukankan      html  css  js  c++  java
  • 《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核心编程答案 非官方 博客园

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/balian/p/1979641.html
Copyright © 2011-2022 走看看