《Python核心编程》 第八章 条件和循环

8–1.条件语句. 请看下边的代码
# statement A
if x > 0:
# statement B
pass
elif x < 0:
# statement C
pass
else:
# statement D
pass
# statement E
(a)如果 x< 0 , 上面哪个语句(A, B, C, D, E)将被执行
(b)如果 x== 0 , 上面哪个居于将被执行?
(c)如果 x> 0 , 上面哪个语句将被执行?

答:

a: A,C,E

b: A,D,E

c: A,B,E



8–2. 循环. 编写一个程序, 让用户输入三个数字: (f)rom, (t)o, 和 (i)ncrement . 以 i

为步长, 从 f 计数到 t , 包括 f 和 t . 例如, 如果输入的是 f == 2, t == 26, i == 4 , 程序
将输出 2, 6, 10, 14, 18, 22, 26.

答:

f = input("From:")
t = input("To:")
i = input("increament:")
for x in range(f,t+1,i):
    print x

if __name__ == "__main__":
    pass

(之前用while写的,死机了,好忧伤)

追上while的写法:

f = input("From:")
t = input("To:")
i = input("increament:")

if __name__ == "__main__":
    pass
while f<=t:
    print f
    f+=i


8–3.range() .如果我们需要生成下面的这些列表, 分别需要在 range()内建函数中提
供那些参数?
(a) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
(b) [3, 6, 9, 12, 15, 18]
(c) [-20, 200, 420, 640, 860]

答:

(a) range(0,10)

(b)range(3,19,3)

(c)range(-20,860+(正整数),220)



8–4. 素数. 我们在本章已经给出了一些代码来确定一个数字的最大约数或者它是否是一个
素数. 请把相关代码转换为一个返回值为布尔值的函数,函数名为 isprime() . 如果输入的是一个
素数, 那么返回 True , 否则返回 False .

 答:

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

if __name__ == "__main__":
    num = int(input("请输入一个数字:"))
    print isprime(num)


8–5.约数. 完成一个名为 getfactors()的函数. 它接受一个整数作为参数, 返回它所有
约数的列表, 包括 1 和它本身

答:(没有用列表展示)

def getfactors(num):
    for i in xrange(1,num+1):
        if num%i==0:
            print i

if __name__ == "__main__":
    num = int(input("PLS input a number:"))
    print getfactors(num)


8–6. 素因子分解. 以刚才练习中的 isprime()和 getfactors()函数为基础编写一个函
数, 它接受一个整数作为参数, 返回该整数所有素数因子的列表. 这个过程叫做求素因子分解, 它
输出的所有因子之积应该是原来的数字. 注意列表里可能有重复的元素. 例如输入 20 , 返回结果
应该是 [2, 2, 5] .



8–7. 全数. 完全数被定义为这样的数字: 它的约数(不包括它自己)之和为它本身. 例如: 6
的约数是 1, 2, 3, 因为 1 + 2 + 3 = 6 , 所以 6 被认为是一个完全数. 编写一个名为 isperfect()
的函数, 它接受一个整数作为参数, 如果这个数字是完全数, 返回 1 ; 否则返回 0 .

答:

def isperfect(num):
    sum = 0
    count = num/2
    while count>0:
        for i in range (1,count+1):
            if num % i == 0:
                sum+=i
            count-=1
    if sum == num:
        return True
    else:
        return False

if __name__ == "__main__":
    num = int (input("number:"))
    print isperfect(num)


8–8. 阶乘. 一个数的阶乘被定义为从 1 到该数字所有数字的乘积. N 的阶乘简写为 N! .
写一个函数, 指定 N, 返回 N! 的值.

 答:

def jiecheng(num):
    sum = 1
    for i in range(1,num+1):
        sum*=i
    return sum

if __name__ == "__main__":
    num = int (input("number:"))
    print jiecheng(num)


8–9. Fibonacci 数列. Fibonacci 数列形如 1, 1, 2, 3, 5, 8, 13, 21, 等等. 也就是说,
下一个值是序列中前两个值之和. 写一个函数, 给定 N , 返回第 N 个 Fibonacci 数字. 例如, 第
1 个 Fibonacci 数字是 1 , 第 6 个是 8 .

 答:

def Fibonacci(num):
    if num ==1:
        return [1]
    if num == 2:
        return [1,1]
    list = [1,1]
    if num >2:
        for i in range(3,num+1):
            list.append((list[-1]+list[-2]))
        return list

if __name__ == "__main__":
    num = int (input("Pls input a number:"))
    print Fibonacci(num)


8–10.文本处理. 统计一句话中的元音, 辅音以及单词(以空格分割)的个数. 忽略元音和
辅音的特殊情况, 如 "h", "y", "qu" 等. 附加题: 编写处理这些特殊情况的代码.

答:暂不处理



8–11. 文本处理. 要求输入一个姓名列表,输入格式是“Last Name, First Name,” 即 姓,
逗号, 名. 编写程序处理输入, 如果用户输入错误, 比如“First Name Last Name,” , 请纠正这
些错误, 并通知用户. 同时你还需要记录输入错误次数. 当用户输入结束后, 给列表排序, 然后以
"姓 , 名" 的顺序显示.
输入输出示例(你不需要完全按照这里里例子完成):
% nametrack.py
Enter total number of names: 5
Please enter name 0: Smith, Joe
Please enter name 1: Mary Wong
>> Wrong format... should be Last, First.
>> You have done this 1 time(s) already. Fixing input... Pleaseenter name 2: Hamilton,
Gerald
Please enter name 3: Royce, Linda
Please enter name 4: Winston Salem
>> Wrong format... should be Last, First.
>> You have done this 2 time(s) already. Fixing input...
The sorted list (by last name) is:
Hamilton, Gerald
Royce, Linda
Salem, Winston
Smith, Joe
Wong, Mary

答:

# -*- coding: UTF-8 -*-
‘‘‘
Created on 2014年8月14日

@author: User
‘‘‘
total = int (input("Enter total number of names: "))
ls = []
for i in range(total):
    prompt = ‘Please enter the %dth name:‘ %(i+1)
    s = raw_input(prompt)
    count = 0
    if s.count(",") == 0:
        s = raw_input("Wrong format... should be Last, First. Try again:")
        count+=1
        print "You have done this %d time(s) already." %count
    ls.append(s.split(","))

ls.sort( lambda x,y : cmp(x[0],y[0]))
print ‘The sorted list (by last name) is:‘
for name in ls:
    print ‘%s , %s ‘  %(name[0],name[1])

if __name__ == "__main__":
    pass


8–12. (整数)位操作. 编写一个程序, 用户给出起始和结束数字后给出一个下面这样的表格,
分别显示出两个数字间所有整数的十进制, 二进制, 八进制和十六进制表示. 如果字符是可打印的
ASCII 字符,也要把它打印出来, 如果没有一个是可打印字符, 就省略掉 ASCII 那一栏的表头.
Edit By Vheavens
Edit By Vheavens
请参考下面的输入输出格式:
<图片看书本>

《Python核心编程》 第八章 条件和循环

时间: 2024-08-02 02:47:05

《Python核心编程》 第八章 条件和循环的相关文章

python核心编程--第八章 8.15 练习

#!/usr/bin/python # -*- coding: utf-8 -*- # 8–2. 循环. 编写一个程序, 让用户输入三个数字: (f)rom, (t)o, 和 (i)ncrement . # 以 i为步长, 从 f 计数到 t , 包括 f 和 t . 例如, 如果输入的是 f == 2, # t == 26, i == 4 , 程序将输出 2, 6, 10, 14, 18, 22, 26. f = int(raw_input("Please input from: "

Python核心编程读笔 6: 条件和循环

第八章 条件和循环 一.if python中的条件表达式:很奇葩!!! smaller = (x < y and [x] or [y])[0] 或者: smaller = x if x < y else y 二.while 三.for 1 通过序列项迭代: for eachName in nameList:2 通过索引迭代: >>>for nameIndex in range(len(nameList)): ... print "Liu,", nameLi

python核心编程--笔记

python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗余输出(导入语句详细追踪) 1.5 –m mod 将一个模块以脚本形式运行 1.6 –Q opt 除法选项(参阅文档) 1.7 –c cmd 运行以命令行字符串心事提交的python脚本 1.8 file   以给定的文件运行python脚本 2 _在解释器中表示最后

学习《Python核心编程》做一下知识点提要,方便复习(一)

学习<Python核心编程>做一下知识点提要,方便复习. 计算机语言的本质是什么? a-z.A-Z.符号.数字等等组合成符合语法的字符串.供编译器.解释器翻译. 字母组合后产生各种变化拿python来说就是.keyword.数值,类,函数,运算符,操作符...... 1.变量不用声明,类型不固定 2.True,False = False,True读出了什么?True是个bool()类实例 3.类型工厂函数就是python2.2后把int() bool()等对数据类型操作的函数分装成对象 类 了

python 核心编程摘要3

charper 2nd  quickly in 输入输出.注释.操作符.变量与赋值.python数据类型 缩进.循环与条件 文件.错误.函数.类 .模块 语句和表达式(函数和算术表达式)注意二者的区别: 语句:输出语句 print "hello world"  带关键字,告诉解释器要做(print)什么, 表达式:算术表达式(1+1) 比较表达式(1>1) str = "test" print str test str 'test' print 语句调用的是s

Python核心编程(第二版) 第二章习题答案 未完待续

2-2.程序输出.阅读下面的Python脚本.#!/usr/bin/env python1 + 2 * 4(a)你认为这段脚本是用来做什么的?(b)你认为这段脚本会输出什么?(c)输入以上代码,并保存为脚本,然后运行它,它所做的与你的预期一样吗?为什么一样/不一样?(d)这段代码单独执行和在交互解释器中执行有何不同?试一下,然后写出结果.(e)如何改进这个脚本,以便它能和你想象的一样工作?答:(a)这段脚本是用来计算表达式的值(b)脚本会输出9(c)保存为脚本,运行后没有输出.和自己预期不一样.

python核心编程第二版

初学Python这是一本有关Python开发的指南涵盖近期发布的Pyttlon版本的核心功能特性,而不仅仅是语法学习更多的高阶内容,如正则表达式.网络.多线程.图形用户界面.Web/CGl和Python扩展等包括几个全新的章节,关于数据库.网络客户端.Java/Jytt30n和Microsoft Office等 展示数以百计的代码片段.交互实例和大量加强您的Python技能的实用练习"对Wesley Chun<Python核心编程>第二版的漫长等待是值得的--它的深邃.它的全面,以及

Python核心编程的四大神兽

本文将主要分为4大部分,分别介绍Python核心编程中的迭代器.生成器 .闭包以及装饰器. 生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序将从上一次暂停的位置继续往下执行. 通过一个例子来理解生成器的执行过程.求1-10的所有整数的立方并将结果打印输出,正常使用列表的实现如下: def lifang_ls(): """求1-1

Python核心编程的四大神兽:迭代器、生成器、闭包以及装饰器

生成器 生成器是生成一个值的特殊函数,它具有这样的特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序将从上一次暂停的位置继续往下执行. 通过一个例子来理解生成器的执行过程.求1-10的所有整数的立方并将结果打印输出,正常使用列表的实现如下: 输出结果如下: 当数据量很少时,可以很快得到结果.但是如果范围扩大到10000甚至是100000000,就会发现程序执行时间会变长,变卡,甚至有可能会因超出内存