《Python核心编程》答案 第8章

8-1:

(a):C, E

(b):D, E

(c):B, E

8-2:

#!/usr/bin/env python

print ‘Input three numbers to f, t, i:‘
f = int(raw_input(‘f: ‘))
t = int(raw_input(‘t: ‘))
i = int(raw_input(‘i: ‘))
for item in range(f, t+1, i):
    print item,

8-3:

(a): range(10)

(b): range(3, 19, 3)

(c): range(-20, 861, 220)

8-4:

def isprime(num):
    count = num / 2
    while count > 1:
        if num % count == 0:
            return False
        count -= 1
    if num == 1:
        return False
    return True

8-5:

def getfactors(num):
    ans = []
    for i in range(1, num+1):
        if num % i == 0:
            ans.append(i)
    return ans

8-6:

def isprime(num):
    count = num / 2
    while count > 1:
        if num % count == 0:
            return False
        count -= 1
    if num == 1:
        return False
    return True

def getfactors(num):
    ans = []
    for i in range(1, num+1):
        if num % i == 0:
            ans.append(i)
    return ans

def primeFactorization(num):
    factors = getfactors(num)
    primefactor = [item for item in factors if isprime(item)]
    ans = []
    for i in primefactor:
        while num % i == 0:
            ans.append(i)
            num = num / i
    return ans

8-7:

def getfactors(num):
    ans = []
    for i in range(1, num+1):
        if num % i == 0:
            ans.append(i)
    return ans

def isperfect(num):
    factorsum = sum(getfactors(num)[:-1])
    if factorsum == num:
        return 1
    else:
        return 0

8-8:

def factorial(n):
    ans = 1
    for item in range(1, n+1):
        ans *= item
    return ans

8-9:

def fibonacci(n):    #递归方法
    if n == 1 or n == 2:
        return 1
    return fibonacci(n-2) + fibonacci(n-1)

def fibonacci2(n):    #非递归方法
    a, b = 1, 1
    if n == 1 or n == 2:
        return 1
    for x in range(n-2):
        a, b = b, a + b
    return b

8-10:稍后更新

8-11:

num = int(raw_input(‘Enter total number of names: ‘))
print
names = {}
wrongnum = 0
for item in range(num):
    name = raw_input(‘Please enter name %d: ‘ % item)
    if ‘,‘ not in name:
        wrongnum += 1
        print "Wrong format... should be Last, First"
        print "You have done this %d time(s) already. Fixing input..." % wrongnum
        ln, fn = name.split()
        names[fn] = ln
    else:
        ln, fn = name.split(‘,‘)
        fn = fn.strip()
        names[ln] = fn
print
print "The sorted list (by last name) is:"
for lastname in sorted(names):
    print ‘%s, %s‘ % (lastname, names[lastname])

8-12:

 1 def mybin(num):
 2     ans = ‘‘
 3     while num > 0:
 4         b = str(num % 2)
 5         ans = b + ans
 6         num = num / 2
 7     if len(ans) < 5:
 8         ans = ‘0‘*(5-len(ans)) + ans
 9     return ans
10
11 def myoct(num):
12     ans = ‘‘
13     while num > 0:
14         b = str(num % 8)
15         ans = b + ans
16         num = num / 8
17     return ans
18
19 def myhex(num):
20     ans = ‘‘
21     adict = {0: ‘0‘, 1:‘1‘, 2:‘2‘, 3:‘3‘, 4:‘4‘, 5:‘5‘, 6:‘6‘, 7:‘7‘, 8:‘8‘, 9:‘9‘, 10:‘a‘, 11:‘b‘, 12:‘c‘, 13:‘d‘, 14:‘e‘, 15:‘f‘}
22     while num > 0:
23         b = adict[num % 16]
24         ans = b + ans
25         num = num / 16
26     return ans
27
28 begin = int(raw_input(‘Enter begin value: ‘))
29 end = int(raw_input(‘Enter end value: ‘))
30 if 31 < end < 127:
31     print "%5s\t%5s\t%5s\t%5s\t%5s" % ("DEC", "BIN", "OCT", "HEX", "ACSII")
32     print ‘-‘ * 40
33     for i in range(begin, (end+1)):
34         if i < 32:
35             c = ‘‘
36         else:
37             c = chr(i)
38         print "%5d\t%5s\t%5s\t%5s\t%5s" % (i, mybin(i), myoct(i), myhex(i), c)
39 else:
40     print "%5s\t%5s\t%5s\t%5s" % ("DEC", "BIN", "OCT", "HEX")
41     print ‘-‘ * 32
42     for i in range(begin, (end+1)):
43         print "%5d\t%5s\t%5s\t%5s" % (i, mybin(i), myoct(i), myhex(i))

8-13:稍后更新

时间: 2024-10-11 21:44:40

《Python核心编程》答案 第8章的相关文章

《Python核心编程》 第七章 映射和集合类型 - 习题

课后习题 7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答: dict1 = {'1' :' python' } dict2 = {'2' :"hello" } dict1.update(dict2) dictAll = dict1 print dictAll Result: {'1': ' python', '2': 'hello'} 7–2. 字典的键.我们知道字典的值可以是任意的 Python 对象,那字典的键又如何呢?请试 着将除数字和字符串以外的其他不同类型

【python核心编程】第六章 序列

1.操作符 (1)成员关系操作符:in .not in >>> string ='abcdefg'>>> 'a' in stringTrue>>> 'h' in stringFalse>>> 'h' not in stringTrue *补充知识*:string模块 >>> import string>>> string.uppercase        #大写字母'ABCDEFGHIJKLMNOP

《Python核心编程》 第五章 数字 - 课后习题

课后习题  5-1 整形. 讲讲 Python 普通整型和长整型的区别. 答:普通整型是绝大多数现代系统都能识别的. Python的长整型类型能表达的数值仅仅与你机器支持的(虚拟)内存大小有关. 5-2 运算符 (a) 写一个函数,计算并返回两个数的乘积 (b) 写一段代码调用这个函数,并显示它的结果 答: def pro(a,b): p = a*b return p a = int(raw_input("a=")) b = int(raw_input("b="))

《Python核心编程》第十一章:函数和函数式编程

本章大纲 介绍函数的创建.调用方式,内部函数.函数装饰器.函数参数的定义和传递.函数式编程.变量作用域.闭包. 知识点 11.1 什么是函数? 函数是对程序逻辑进行结构化或过程化的一种编程方法,以实现代码的复用. python 的过程就是函数,因为解释器会隐式地返回默认值 None. python 动态地确定函数返回类型,而不是进行直接的类型关联. 可以使用 type() 函数作为代理,处理有不同参数类型的函数的多重声明,以模拟其他编程语言的函数重载. 11.2 调用函数 11.2.1 关键字参

《Python核心编程》第五章:数字

本章大纲 介绍Python支持的多种数字类型,包括:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数.介绍和数字相关的运算符和函数. 知识点 5.1 布尔型 从Python2.3开始支持bool,取值范围:True.False 5.2 标准整型 在32位机器上,标准整数类型的取值范围:-2的31次方 ~ 2的31次方-1 - Python标准整数类型等价于C语言的(有符号)长整型. - 八进制整数以数字 "0" 开头,十六进制整数以 "0x" 或 "

Python核心编程2第四章课后练习

4-1 Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 身份:对象的唯一标识 类型 :对象的类型决定了该对象可以保存什么类型的值 值:对象表示的数据项 4-2 类型.不可更改(immutable)指的是什么?Python 的哪些类型是可更改的(mutable),哪些不是? 不可更改(immutable)指的是不允许对象的值被更改. 可变类型:列表.字典. 不可变类型:数字.字符串.元组. 可从id()判断是否可更改 4-3 类型.哪些 Python 类型是

《Python核心编程》第六章:序列、字符串、列表和元组

本章大纲 详细介绍字符串.列表.元组的相关操作,常用的序列内建函数,Unicode和编码解码原理,深拷贝和浅拷贝的原理. 知识点 6.1 序列 6.1.1 标准类型操作符 标准类型操作符一般都能适用于所有的序列类型. 6.1.2 序列类型操作符 高效合并: 字符串:''.join(strList) 列表:list1.extend(list2) 实战:遍历一个字符串,每次都把位于最后的一个字符砍掉 for i in [None] + range(-1, -len(strList), -1): pr

Python核心编程笔记——第四章

第四章 Python对象 1.类型也是对象: a = 4;type(a)-><type 'int'>,这里"<type 'int'>"是一个类型对象(可以赋值给一个变量),可以使用 type(type(a)) 来验证 2.Python2.2开始,类和类型统一,类=类型,实例是类型的对象 3.任何对象都天生具有布尔值 4.整数对象,字符串对象,元组对象都是不可变对象,Python会高效的缓存整数和字符串对象,所以 a=3;b=1+2;(a is b)会返回T

python核心编程第二版 第二章练习题解答 未完待续

有人可能会想,连2-1和2-2这样的题目都回答,够无聊的啊.因为现在处于并长期处于成为大师的第一阶段------守的阶段 2-1 >>> a= '123' >>> a '123' >>> print (a) 123 a是字符串123,如果格式化输出有问题报如下错误: >>> print ('a is %d'% a) Traceback (most recent call last): File "<stdin>&

Python核心编程_第五章课后习题

习题5_2.py #!/usr/bin/python def MyMultiple(x, y):         return x * y      for i in range(1, 10):      for j in range(1, i + 1):          print '%d * %d = %2d' % (j, i, MyMultiple(i, j)),                          if j == i:                     print