文档章节

chapter 6 exercises

happyliferao
 happyliferao
发布于 2015/10/12 14:47
字数 2307
阅读 19
收藏 0
点赞 0
评论 0
6–1. 字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串
是否是另一个大字符串的一部分?
yes,string.find()

  检测str 是否包含在string 中,如果beg 和end 指定范围,
则检查是否包含在指定范围内,如果是返回开始的索引值,否则
返回-1

6–3. 排序
(a) 输入一串数字,从大到小排列之.
(b) 跟a 一样,不过要用字典序从大到小排列之.

(a)
list1=[]
while True:
   n=int(raw_input('please input numbers:'))
    ifn==0:
       break
   list1.append(n)
    printlist1
   list1.sort()
   list1.reverse()
    printlist1

(b):
list1=[]
while True:
   n=int(raw_input('please input numbers:'))
    ifn==0:
       break
   list1.append(n)
    printlist1
   list1.sort()
   list1.reverse()
    printlist1

6–5. 字符串
(a)更新你在练习2-7 里面的方案,使之可以每次向前向后都显示一个字符串的一个字符.
(b)通过扫描来判断两个字符串是否匹配(不能使用比较操作符或者cmp()内建函数)。附加题:
在你的方案里加入大小写区分.
(c)判断一个字符串是否重现(后面跟前面的一致).附加题:在处理除了严格的回文之外,加入对
例如控制符号和空格的支持。
(d)接受一个字符,在其后面加一个反向的拷贝,构成一个回文字符串.

(a):
a=raw_input('please input string:')
for i in range(len(a)):
    printa[i],a[len(a)-1-i]
(b):
string1=raw_input('please input string1:')
string2=raw_input('please input string2:')
if len(string1)!=len(string2):
    print '%sand %s is not the same,scenario 1'%(string1,string2)
else:
   t=len(string1)
    for i inrange(t):
       if string1[i]!=string2[i]:
           print  '%s and %s is not the same,scenario2'%(string1,string2)
           break
    else:
       print  '%s and %s is thesame'%(string1,string2)
(c):
import sys

def isdouble(string):
   a=len(string)
    ifa%2!=0:
       print 'this is not a palindorom 1'
    else:
       for i in range(a):
           if string[i]!=string[(a-1-i)]:
               print 'this is not a palindorom2'
               sys.exit()

       else:
           print 'this is a palindorom'
            
if __name__=='__main__':
   string=raw_input('please input string:')
   isdouble(string)

(d):
def ispalindorome(string):
   e=list(string)
   b=list(string)
   b.reverse()

   e.extend(b)
   f=''.join(e)
    return f


if __name__=='__main__':
   a=raw_input('please input string:')
    c=ispalindorome(a)
    print c

6–6. 字符串.创建一个string.strip()的替代函数:接受一个字符串,去掉它前面和后面的
空格(如果使用string.*strip()函数那本练习就没有意义了)

str=raw_input('please input string:')

print str

i=0
j=len(str)-1

while str[i]==' ':
    i=i+1

while str[j]==' ':
    j=j-1

str=str[i:j+1]
print str

6–8. 列表.给出一个整数值,返回代表该值的英文,比如输入89 返回"eight-nine"。附加题:
能够返回符合英文语法规则的形式,比如输入“89”返回“eighty-nine”。本练习中的值限定在家0
到1,000.
code: 始终觉得这个code很别扭,不知道哪位大神有好的办法,还望赐教啊。
dict1 ={"1":"one","2":"two","3":"three","4":"four","5":"five",
        "6":"six","7":"seven","8":"eight","9":"nine","0":"",}
dict22=

{'1':'eleven','2':'eleven','3':'thirteen','4':'forteen','5':'fifteen','6':'sixteen','7':'seventeen','8':'eighteen','9':'ninteen'}
dict2 ={'1':'ten',"2":"twenty","3":"thirty","4":"fourty","5":"fifty",
        "6":"sixty","7":"seventy","8":"eighty","9":"ninety","0":""}
dict3 = {"1":"one hundred","2":"two hundred","3":"threehundred","4":"four hundred","5":"five hundred",
        "6":"six hundred","7":"seven hundred","8":"eight hundred","9":"ninehundred","0":""}
dictAll = {1:dict1, 2:dict2, 3:dict3}
def fun1(strNum):
    ifint(strNum)<=1000and int(strNum)>0:
       length=len(strNum)
       if length==4:
           return 'one thousand'
       strTemp=''
       if length==2 and int(strNum[0])==1:
           strTemp=dict22[strNum[1]]
           return strTemp
       if length==3 and int(strNum[1])==1:
           strTemp=dict3[strNum[0]]+' '+dict22[strNum[1]]
           return strTemp
       for i in range(length):

           strTemp=strTemp+dictAll[length-i][strNum[i]]+' '
       return strTemp

if __name__=='__main__':
    whileTrue:
       strNum=raw_input('please input num(q to quilt):')
       if strNum.lower() == 'q':
           break
       print 'the num is :%s'%(fun1(strNum))


6–9. 转换.为练习5-13 写一个姊妹函数, 接受分钟数, 返回小时数和分钟数. 总时间不
变,并且要求小时数尽可能大.

def count(timestr):
   time=int(timestr)
   b=divmod(time,60)

   return  '%d:%d'%(b[0],b[1])

if __name__=='__main__':
    whileTrue:

       timestr1=raw_input('please input time(q to quit):')
       if timestr1[0].lower()=='q':
           break
       print 'the time is %s'%(count(timestr1))

6–10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转.
比如,输入"Mr.Ed",应该返回"mR.eD"作为输出.

code:
import string

def reverse(str):
    length=len(str)
    list=[]
    for i in range(length):
       if str[i] in string.lowercase:
           list.append(str[i].upper())
       elif str[i] in string.uppercase:
           list.append(str[i].lower())
       else:
           list.append(str[i])
    string1=''.join(list)
    return string1

if __name__=='__main__':
    whileTrue:
       string2=raw_input('please input string(q to quit):')
       if string2[0].lower()=='q':
           break
       print 'the reverse string is %s'%(reverse(string2))

6–7. 调试.看一下在例6.5 中给出的代码(buggy.py)
(a)研究这段代码并描述这段代码想做什么.在所有的(#)处都要填写你的注释.
(b)这个程序有一个很大的问题,比如输入6,12,20,30,等它会死掉,实际上它不能处理任何的偶
数,找出原因.
(c)修正(b)中提出的问题.

#input a number
num_str = raw_input('Enter a number: ')

#conversion string to int
num_num=int(num_str)

#get a range
fac_list = range(1, num_num+1)
print "BEFORE:",fac_list

#
i = 0

list1=[]
while i < len(fac_list):

    ifnum_num % fac_list[i] != 0:
       list1.append(fac_list[i])

 #
    i = i +1

# print string which has been mofidied
print "AFTER:",list1


6–11.转换
(a)创建一个从整数到IP 地址的转换程序,如下格式: WWW.XXX.YYY.ZZZ.
(b)更新你的程序,使之可以逆转换.

code:
暂时不明白什么意思呢

6–12.字符串
(a)创建一个名字为findchr()的函数,函数声明如下:
def findchr(string, char)
findchr()要在字符串string 中查找字符char,找到就返回该值的索引,否则返回-1.不能用
string.*find()或者string.*index()函数和方法
(b)创建另一个叫rfindchr()的函数,查找字符char 最后一次出现的位置.它跟findchr()工作
类似,不过它是从字符串的最后开始向前查找的.
(c)创建第三个函数,名字叫subchr(),声明如下:
def subchr(string, origchar, newchar)
subchr()跟findchr()类似,不同的是,如果找到匹配的字符就用新的字符替换原先字符.返回
修改后的字符串.
(a):

def findchr(string, char):
   length=len(string)
    for i inrange(length):
       if char==string[i]:
           return i

   else:
       return -1

if __name__=='__main__':
    whileTrue:

       string=raw_input('please input string(q to quit):')

       if string[0].lower()=='q':
           break
       char=raw_input('please input char:')
       print 'the index is:%d'%(findchr(string,char))
(b):

def findchr(string, char):
   length=len(string)
    for i inrange(length):

       if char==string[-i-1]:
           j=length-i-1
           return j

   else:
       return -1

if __name__=='__main__':
    whileTrue:

       string=raw_input('please input string(q to quit):')

       if string[0].lower()=='q':
           break
       char=raw_input('please input char:')
       print 'the index is:%d'%(findchr(string,char))

(c):

6–13.字符串.string 模块包含三个函数,atoi(),atol(),和atof(),它们分别负责把字符串转
换成整数,长整型,和浮点型数字.从Python1.5 起,Python的内建函数int(),long(),float()也可以
做相同的事了, complex()函数可以把字符串转换成复数.(然而1,5 之前,这些转换函数只能工作于
数字之上)

6–14.随机数.设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau",你小时候可能玩过,下面
是规则.你和你的对手,在同一时间做出特定的手势,必须是下面一种手势:石头,剪子,布.胜利者从
下面的规则中产生,这个规则本身是个悖论.
(a) the paper covers the rock,
布包石头.
(b)石头砸剪子,
(c)剪子剪破布.在你的计算机版本中,用户输入她/他的选项,计算机找一个随机选项,然后由你
的程序来决定一个胜利者或者平手.注意:最好的算法是尽量少的使用if 语句.

CODE:
from random import choice

def Rochambeau(gestureYou):

   list1=['P','R','S']
   win=['PR','RS','SP']

   gestureCom=choice(list1)
    printgestureCom

    ifgestureYou+gestureCom in win:
       return 'you win'
    elifgestureYou==gestureCom:
       return 'flat'
    else:
       return 'you lose'


if __name__=='__main__':
    whileTrue:
       gestureYou=raw_input('please input you choice(q to quit):')
       if gestureYou[0].lower()=='q':
           break

       print 'the result is %s'%(Rochambeau(gestureYou))


6–15.转换
(a)给出两个可识别格式的日期,比如 MM/DD/YY 或者 DD/MM/YY 格式,计算出两个日期间的天
数.
(b)给出一个人的生日,计算从此人出生到现在的天数,包括所有的闰月.
(c)还是上面的例子,计算出到此人下次过生日还有多少天.

i hate the program about date or month or Leap month , so justignore this one. yeah!!!

6–16.矩阵.处理矩阵M 和N 的加和乘操作.

6–17.方法.实现一个叫myPop()的函数,功能类似于列表的pop()方法,用一个列表作为输入,
移除列表的最新一个元素,并返回它.

def myPop(list1):

    for i inrange(len(list1)):
       b=list1[len(list1)-1]
       list1.remove(list1[len(list1)-1])
       print b

if __name__=='__main__':
    whileTrue:
       list2=list(raw_input('pls input a list(q to quit):'))
       if len(list2)==1:
           break
       print 'list shows like this:',myPop(list2)

question: how to remove the fun result:None?

6–18. zip() 内建函数 在6.13.2节里面关于zip()函数的例子中,zip(fn,ln)返回的是什么?
zip(fn,ln),返回fn,和ln中各元素的结合(一个元组)后生成的一个新的列表,如果fn和ln中元素个数不一样,就舍掉多余的元素。

6–19.多列输出.有任意项的序列或者其他容器,把它们等距离分列显示.由调用者提供数据和
输出格式.例如,如果你传入100 个项并定义3 列输出,按照需要的模式显示这些数据.这种情况下,应
该是两列显示33 个项,最后一列显示34 个.你可以让用户来选择水平排序或者垂直排序.

© 著作权归作者所有

共有 人打赏支持
happyliferao
粉丝 6
博文 84
码字总数 60147
作品 0
顺义
QA/测试工程师
Learning of Prolog

Sometime ago, I decided to learn one new language. The two candidates are Erlang and Node.js, both are designed for parallel programming, and optimize multiple cores of CPU. The......

Walty ⋅ 2012/07/29 ⋅ 0

chapter 9 summary

open() 的基本语法是: fileobject = open(filename, access_mode='r',buffering=-1) access_mode,'r','w','a','U'分别代表读取, 写入和追加,通用换行符支持 使用 'r' 或 'U' 模式打开的文件...

happyliferao ⋅ 2015/10/12 ⋅ 0

ios UIWebView 关于字体放大的问题

下面是一段 P 标签 The Ten Digits n The Digits we use today are called "Hindu-Arabic Numerals" and look l...

雯雯love ⋅ 2013/12/19 ⋅ 0

Get a Sneak Peek of 'Making Work Visible' by Dominica DeGrandis

Dominica DeGrandis talks about the chronic problems we all have in knowledge work and technology work in a way that is breezy, familiar, and often irreverent, but also shows off......

Gene Kim ⋅ 2017/12/08 ⋅ 0

Device Driven Kata

Barcelona Software Craftmanship organized a coding dojo to practice the Device Driver Kata of Emily Bache and I had the luck and pleasure of attending it and got the opportunity......

Abel Fernandez ⋅ 2017/12/05 ⋅ 0

SportsTracker 5.2.0 发布

SportsTracker是一个用来记录体育赛事的软件,适合 综合的体育赛事,如自行车,跑步,或网球等。的主要优点是能很好的展示赛事的具体时间,范围和运动类型,使得统计更加容易建立。还可以导入...

红薯 ⋅ 2011/02/27 ⋅ 0

网络包生成工具--Mausezahn

Mausezahn 是一个采用C开发的快速的网络包生成工具。让您发送几乎一切可能的和不可能的数据包。它主要用于测试VoIP或组播的网络,但也为安全审计,以检查是否你的系统是强化具体的攻击不够。...

匿名 ⋅ 2009/12/25 ⋅ 0

笨方法学python, Lesson 38, 39

Exercises 38 代码 ten_things = "Apples Oranges Crows Telephone Light Sugar" print "Wait there are not 10 things in that list. Let's fix that." stuff = ten_things.split(' ')more......

好好先生_1028 ⋅ 2015/11/01 ⋅ 0

chapter 7 summarize

chapter 7,dictionary dictionary: 字典是通过这样的算法来比较的: 首先是字典的大小,然后是键,最 后是值。 dictionary内建函数和工厂函数: str(),cmp(),dict() len(),hash() 字符串和...

happyliferao ⋅ 2015/10/12 ⋅ 0

chapter 9 exercise

9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做 Python , Perl, Tcl, 等大多脚本文件的注释符号. 附加题: 处理不是第一个字符开头的注释. import os filen...

happyliferao ⋅ 2015/10/09 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 26分钟前 ⋅ 0

python3中报错的解决方法(长期更新)

1、ImportError: No module named ‘DjangoUeditor’ 出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的 下载地址:https://github.com/twz915/DjangoUeditor3 2、python3......

xiaoge2016 ⋅ 31分钟前 ⋅ 0

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 51分钟前 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 52分钟前 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 52分钟前 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html...

whoisliang ⋅ 57分钟前 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 57分钟前 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 58分钟前 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 今天 ⋅ 0

web添加log4j

添加xml配置log4j.properties # Global logging configuration---root日志设置#log4j.rootLogger=info,dailyRollingFile,stdoutlog4j.rootLogger=debug,stdout,dailyRollingFile---......

黄柳淞 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部