




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
def idcheck(): 6-2 修改 idcheck 使之可以检测长度为一得标识符,并且可识别 Python 关键字 import string import keyword keys = keyword.kwlist alphas = string.letters+_ nums = string.digits alphanums = alphas+nums print Welcome to the Identifier Check V1.1 myInput = raw_input(identifier to test: ) isOne = False# 是否是一个字符 if len(myInput) = 1:isOne = False if myInput in keys: print invalid:symbol has been defined return False elif myInput0 not in alphas: print invalid:first symbol must be alphabetic return False elif not isOne: otherInput = myInput1: for otherChar in otherInput: if otherChar not in alphanums: print invalid:remainn symbols must be alphanumeric return False print “okay as an Identifier“ return True def order(nlist): 6-3(a) 输入一串数字,从大到小排列 注意:输入的是一个列表,其中的值为数字 newlist = for x in nlist: newlist.append(int(x) return sorted(newlist,reverse=True) def order2(nlist): 6-3(b) 和 a 一样,不过要用字典序 注意:字典序就是按字典的排列方式,比如 21 就大于 111 ,因为 2 大于 1 方式就是把输入的数字变成字符串即可 # 将里面的元素统统变成字符串先 newlist = for x in nlist: newlist.append(str(x) newlist = sorted(newlist,reverse=True) for i,x in enumerate(newlist): newlisti = int(x) return newlist def avescore(): 输入测试得分,算出平均值 scorelist = # 分数列表 while True: myinput = raw_input(Input the score(if No number quite): ) try: scorelist.append(float(myinput) except: break if not len(scorelist):return False return sum(scorelist)/len(scorelist) def showstr(): 6-5(a) 更新 2-7 使之可以每次向前向后都显示一个字符串的一个字符 istr = raw_input(Input string: ) lens = len(istr) if lens=0:return False if lens=1: print istr return True for i,j in enumerate(istr): if i =0 and len(istr)!=1: print j,istri+1 elif i = len(istr)-1 and i != 0: print istri-1 else: print istri-1,j,istri+1 return True def mycmp(): 6-5(b)通过扫描判断两个字符串是否匹配,不能使用比较操作符或者 cmp() str1 = raw_input(First string:) str2 = raw_input(Second string:) equal = len(str1) - len(str2) if not equal:return False # 表示长度不相等 # 将字符串变成列表 for i,j in enumerate(str1): if ord(j)-ord(str2i):#如果减下来不为 0 return False return True def isback(): 6-5(c)判断一个字符串是否是回文,忽略控制符号和空格支持中文 import string # 控制符表示 ASCII 码中 031 以及 127 这 33 个无法输出的字符 denny = chr(i) for i in xrange(0,32)+list(string.whitespace) denny.append(chr(127) strs = raw_input(Please input string:) # 将输入的数据解码成 unicode 因为在 windows 上默认是 gbk,所以这里是 gbk # 如果是在其他命令行中,应该以命令行输入的字符编码为主 strs = strs.decode(gbk) new = for i in strs: if i in denny:continue new.append(i) lens = len(new) if lens%2:return False else: half = lens/2 if new0:half = new-1:-half-1:-1:return True return False def beback(): 6-5(d) 输入一个字符串在后面重复一个反向拷贝,构成回文 strs = raw_input(Input string: ) # 将输入的数据解码成 unicode 因为在 windows 上默认是 gbk,所以这里是 gbk # 如果是在其他命令行中,应该以命令行输入的字符编码为主 strs = strs.decode(gbk) # 解码为 unicode lens = len(strs) # 这里之所以是 -1:-lens-1:-1 # 分析如下: -1 就是倒数第一个,-(lens+1) 就是长度,-1 是步进 # 就是说从倒数第一个开始-1(步进), 一直减到倒数 lens+1, 由于切片里是 a:b 是 a1000: continue except: continue break iput = str(iput) for j in iput: new += listsint(j)+- return new0:-1 def minute2time(): 6-9 输入分钟,返回小时数和分钟 minute = int(raw_input(Please input a minutes: ) hours = minute/60 newminute = minute-hours*60 return %d:%02d % (hours,newminute) def like(): 6-10 写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反 转 例如: Mr.Ed 返回 mR.eD import string import random Letter = string.ascii_uppercase # 大写字母字符串 letter = string.ascii_lowercase # 小写字母字符串 name = raw_input(Input string: ) newname = for i in name: if i in Letter: newname += random.choice(letter) continue if i in letter: newname += random.choice(Letter) continue newname +=i return newname def int2ip(): 6-11(a) 创建一个整数到 IP 地址的转换 ints = raw_input(Input Int:) # 分析 ip 地址和整数的关系 # ip 地址是由 4 个字节组成,每个字节 8 位,换成 16 进制就是 8 位 # FF.FF.FF.FF = 11111111 11111111 11111111 11111111 # 那么后面就是一个 4 位的二进制了 # 我们要做的就是将十进制的长整数换成 4 个字节的二进制或者 4 个 16 进制, 然后 再将每个字节转成独立的十进制 # 整数转成四个字节其实就是整数转 16 进制 hexs = hex(int(ints)2: # hex 转换后把最前面一个 0x 先去掉,然后在前面填 0 while len(hexs)-1: # 我的做法是将字符串分割开两段,然后中间加入新字符串 string = string0:index + newchar + stringindex+lens: else: break return string def atoc(string): 6-13 输入字符串返回复数,只能用 complex 不能用 eval cindex = string.rfind(-) if cindex 0 : real = float(string0:cindex) compl = float(stringcindex:-1) return complex(real,compl) def rochambeau(): 6-14 石头剪子布,输入一个行为,计算机随即产生一个对应的行为,并进行比较 看谁赢 import random select = paper,shears,rock # 定个规则 012 cli = int(raw_input(Input your select1.paper 2.shears 3.rock: )-1 print - You VS Computer - print nYou %s % selectcli, cup = random.choice(0,1,2) print tComputer %s n% selectcup youwin = - You Win! - cupwin = - Computer Win! - eq = - Nobody Win - if cup = cli: print eq return if (cup-cli)=-2 or (cup cli and (cli-cup != -2): print cupwin else: print youwin def date2date(): 6-15 计算两个日期间的天数 # 由于现在已经是2000年后了, 所以我这里不用 DD/MM/YY 用 DD/MM/YYYY 日 /月/年 # 这里用到了上面的 isleapyear(year) 函数 import datetime month = 1:31,2:28,3:31,4:30,5:31,6:30,7:31,8:31,9:30,10:31,11:30,12:31 # 默认 的月份和天数 while True:# 这里做循环的目的是怕用户输入的日期不存在 sdate = raw_input(Input Start DateDD/MM/YYYY: ).split(/) dd,mm,yyyy = 0,1,2 sdatedd,sdatemm,sdateyyyy = int(sdate0),int(sdate1),int(sdate2) if sdatemm 12 or sdatemm monthsdatemm:continue break; while True: edate = raw_input(Input End DateDD/MM/YYYY: ).split(/) edatedd,edatemm,edateyyyy = int(edate0),int(edate1),int(edate2) if edatemm 12 or edatemm monthedatemm:continue break; # 挑简单的先解决,如果是同一天,返回 0 if sdate = edate:return 0 # 如果是同年同月,直接相减 if sdateyyyy = edateyyyy and sdatemm=edatemm:return edatedd - sdatedd # 如果是同一年,那么就要判断当年是不是闰年 if sdateyyyy = edateyyyy: # 是闰年,则 2 月事 29 天 if isleapyear(sdateyyyy):month2 = 29 # 然后开始计算月到月 days = 0 for i in xrange(sdatemm+1,edatemm): # 开始月到中止月之间的日期 days+=monthi # 最后加上开始日当月过了几天+结束月当月过了几天 days += monthsdatemm-sdatedd + edatedd return days # 如果不是同一年,先计算年与年之间的日期 days = 0 for year in xrange(sdateyyyy+1,edateyyyy): if isleapyear(year):days+=366 else:days+=365 # 然后计算起始年到年终的日期 if isleapyear(sdateyyyy):month2 = 29 sdays = 0 for i in xrange(sdatemm+1, 13): sdays+=monthi sdays += monthsdatemm-sdatedd # 最后计算终止年年头到结束日期 if isleapyear(sdateyyyy):month2=29 else:month2 = 28 edays = 0 for i in xrange(1,edatemm): edays+=monthi edays += edatedd return edays+sdays+days class matrix: 6-16 矩阵东西比较多,我在这里做成了类来处理 # 我用一个列表来表示初始矩阵 # 这个矩阵式一个平面,包括纵向和横向 # 我这里用横向表示二级 # 例如 # matrix = 1,2,3,2,3,4,3,5,6 转成矩阵就是这样 # # | 1 2 3 | # | 2 3 4 | # | 3 5 6 | # matrix = def _init_(self, matrix): self.matrix = matrix self.ylens = len(matrix) self.xlens = len(matrix0) def ji(self,matrix2): 6-16 求两个矩阵的积 import copy if len(matrix2) != self.xlens:return False if len(matrix20) != self.ylens:return False new = copy.deepcopy(self.matrix) # 这里主要是复制格式 for i in xrange(0, self.ylens): for j in xrange(0, self.xlens): newij += self.matrixij*matrix2ji self.matrix = new return self.matrix def add(self,matrix2): 6-16 求两个矩阵的和 if len(matrix2) != self.ylens:return False if len(matrix20)!=self.xlens:return False for i in xrange(0, self.ylens): for j in xrange(0, self.xlens): self.matrixij += matrix2ij return self.matrix def sub(self,matrix2): 矩阵减法 if len(matrix2) != self.ylens:return False if len(matrix20) != self.xlens:return False for i in xrange(0, self.ylens): for j in xrange(0, self.xlens): self.matrixij -= matrix2ij return self.matrix def change(self): 6-16 转置矩阵 # 所谓转置就是将横和纵交换 new_matrix = for i in xrange(0,self.xlens): new_matrix.append() for j in xrange(0,self.ylens): new_matrixi.append() new_matrixij = self.matrixji self.matrix = new
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效能离婚抚养权协议与子女学业成绩提升
- 双方自愿离婚财产分配及子女监护协议
- 无子女离婚后财产分割及子女抚养费及探望权协议范本
- 离婚协议书范本:法律依据与签署流程详解
- 房屋租赁合同中关于租赁物转租的附加协议
- 智能交通科技公司股份收购与城市交通优化协议
- 客服给员工培训
- 辽沈战役课件与
- 中国历史文选 课件 第五讲 韩非子;第六讲 秦始皇本纪
- 临床基础检验技术试题及答案解析
- 氢能源相关项目建议书
- 导学案:化学合成材料
- 高中通用技术作品设计方案七篇
- 竣工结算审计服务投标方案
- 民用建筑可靠性鉴定标准-课件
- 高三数学模拟试题分类汇编:概率统计(学生版)
- 第七章-大学生爱情心理
- GB/T 990-1991带式输送机托辊基本参数与尺寸
- 石油化工工艺装置蒸汽管道配管的设计
- 肝癌的中西医治疗
- 猪动物福利及其我国对策课件
评论
0/150
提交评论