6-2字符串标识符.修改例 6-1 的 idcheck.py 脚本,使之可以检测长度为一的标识符,并且可以识别 Python 关键字,对后一个要求,你可以使用 keyword 模块(特别是 keyword.kelist)来辅助

#!/usr/bin/env python
def check_id(myInput):import stringimport keywordalphas = string.letters + '_'nums = string.digitsalphanums = alphas + numskey = keyword.kwliststr_length = len(myInput)if str_length == 0:print 'WRONG: zero-lengthed string("%s").'%(myInput)elif myInput[0] not in alphas:print '''invalid: first symbol must be alphabetic'''elif myInput in key:print '''invalid :Input cannot be a keyword'''else:for otherChar in myInput[1:]:if otherChar not in alphanums:print '''invalid: remaining symbols must be alphanumertic'''breakelse:print '%s is logal identifier.' % (myInput)
if __name__ == '__main__':while True:myInput = raw_input('Identifier to test?')check_id(myInput)       

6-3.排序

(a) 输入一串数字,从大到小排列之。

(b) 跟 a 一样,不过要用字典序从大到小排列之.。

s = raw_input('please enter a serial of numbers,using SPACE to seperate: \n')
import string
alphas = string.digits + " "
for eachs in s:if eachs not in alphas:print 'you may have entered non-digit character.'break
a = s.strip()
s_input = a.split(" ")
num = []
for i in s_input:num.append(int(i))
num.sort()
num.reverse()
print 'Sorted result(Big-->Small): ',
for t in num:print t,
print
print 'acording the directory to get result: ',
for i,j in enumerate(num):print (i,j),                    

6-6.字符串.创建一个 string.strip()的替代函数:接受一个字符串,去掉它前面和后面的空格(如果使用 stri

ng.*strip()函数那本练习就没有意义了)

#!/usr/bin/env python
s = raw_input('please enter a string : ')
print 'the strip of string is :',
import string
alpha = ' ' + string.letters
st = []
for c in s :if c not in alpha:print 'Error:you may have entered non-string'exit(0)break
l = len(s)
i = 0
while i < l:if s[i] == ' ':i += 1else:break
s = s[i:]
l = len(s) - 1
while l > 0:if s[l] == ' ':l -= 1else:break
s = s[:l+1]
print s

6-7.调试。看一下在例 6.5 中给出的代码(buggy.py),这个程序有一个很大的问题,比如输入 6,12,20,30,等它会死掉,实际上它不能处理任何的偶数,找出原因。

#!/usr/bin/env python
num_str = raw_input('Enter a number: ')
num_num = int(num_str)
fac_list = range(1, num_num+1)
print "BEFORE:", fac_list
set_fac = set(fac_list)
i = 0
while i < len(fac_list):if num_num % fac_list[i] == 0:del fac_list[i]else:i = i + 1
print "AFTER:"+str(fac_list)
print "Factors of %d are: "%num_num, str(list(set_fac-set(fac_list)))

6-8.列表。给出一个×××值,返回代表该值的英文,比如输入89返回“eight-nine”。附加题:能够返回符合英文语法规则形式,比如输入“89”返回“eighty-nine”。本练习中的值限定在0~1000。

#!/usr/bin/env python
#_*_ coding:utf-8 _*_
alpha = ['one','two','three','forth','five','six','seven','eight','nine','ten','eleven','twelve','thirteen','fourteen',\'fifteen','sixteen','seventeen','eighteen','nineteen','twenty','']
tendigits = ['twenty','thirty','forty','fifty','sixty','eighty','ninety','']
s_num = raw_input("enter a number: ")
s = int(s_num)
if s < 0:print 'Error:you may have entered a minus.'
elif s <= 20:print alpha[s - 1]
elif s < 100:i = s / 10j = s - i * 10print tendigits[i - 2]+'-'+alpha[j - 1]
elif s <1000:
a = s / 100
b = (s - a * 100) / 10
c = s - a * 100 - b * 10
if b == 0 and c ==0:
print alpha[a - 1]+' hundred'
elif b == 0 and c != 0:
print alpha[a-1]+' hundred'+' and '+alpha[c-1]
elif b != 0 and c == 0:
print alpha[a-1] + tendigits[b-2]
else:
print alpha[a - 1]+' hundred'+' and '+tendigits[b - 2]+'-'+alpha[c - 1]
elif s == 1000:
print 'one thousand'

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

#!/usr/bin/env python
#_*_ coding: utf-8 _*_
def reverseletters():str_input = raw_input('Input a string : ')#str_input.upper()#str_input.lower()print str_input.swapcase()
if __name__ =='__main__':reverseletters()

6-12. 字符串.

a). 创建一个名字为 findchr() 的函数, 函数声明如下:

def findchr(string, char)

findchr() 要在字符串 string 中查找字符 char, 找到就返回该值的索引,否则返回-1. 不能用string.*find()

或者 string.*index() 函数和方法.

#!/usr/bin/env python
#_*_ coding : utf-8 _*_
def findchr(string,char):i = 0l = len(string)if char not in string:print -1else:while i < l:if string[i] == char:print i,i += 1
if __name__ == '__main__':string = raw_input("please input a string :")char = raw_input('a char:')findchr(string,char)

b). 创建另一个叫 rfindchr() 的函数,查找字符 char 最后一次出现的位置. 它跟findchr() 工作类似,不过它是

从字符串的最后开始向前查找的.

#! /usr/bin/env python
#_*_ coding : utf-8 _*_
def rfindchar():str_input = raw_input('please enter a string :')str_char = raw_input('please enter a char :')l = len(str_input)i = -1for a in range(i,-l-1,-1):while i >= -l:if str_input[a] == str_char:print a+l

c). 创建第三个函数, 名字叫做 subchr(), 声明如下:

def subchr(string, origchar, newchar)

subchr() 跟 findchr() 类似, 不同的是, 如果找到匹配的字符就用新的字符替换原先字符.返回修改后的字符.

#! /usr/bin/env python
#_*_ coding:utf-8 _*_
def subchar(string, origchar, newchar):l = len(string)i = 0while i < l:if string[i] == origchar:string = string[:i]+newchar+string[i+1:]i += 1print string
if __name__ == '__main__':string = raw_input('please enter a string :')origchar = raw_input('input a origchar : ')newchar = raw_input('input a new char : ')subchar(string,origchar,newchar)

6-14. 随机数. 设计一个"石头,剪子,布"游戏,有时又叫"Rochambeau", 你小时候可能玩过,下面是规则. 你和你的对手, 在同一

时间做出特定的手势,必须是下面一种: 石头,剪子,布. 胜利者从下面规则中产生,这个规则本身是个悖论.

a). 布包石头;

b). 石头砸剪子

c). 剪子剪破布.

在你的计算机版本中, 用户输入她/他的选项, 计算机找一个随机选项,然后由你的程序来决定一个胜利者或者平手.

注意: 最好的算法是尽量少的使用if语句.

#!/usr/bin/env python
#_*_ coding : utf-8 _*_
def Rochambeau():text = {0 : 'Cloth', 1 : 'Scissor', 2 : 'Stone'}import randommac = random.randrange(0,3,1)humans = int(raw_input('your choice(0-Cloth, 1-Scissor, 2-Stone):'))nums = range(0,3,1)print "You: %s   Computer: %s " % (text[humans], text[mac])print 'the result is : 'if humans not in nums:print 'Error:Wrong input!'elif humans-mac == 0:print 'Draw'elif humans-mac == 1 or humans-mac == -2:print 'You win !!!'else:print 'Computer win !!!'
if __name__ == '__main__':while True:Rochambeau()

转载于:https://blog.51cto.com/13646338/2320992

Python核心编程(第二版)第六章部分习题代码相关推荐

  1. python语言程序设计基础第二版第七章答案-Python核心编程第二版 第七章课后答案...

    注:我使用的python3.5. 其中range和xrange,input和raw_input已经合并 7-1.字典方法.哪个字典方法可以用来把两个字典合并到一起. dict.update(dict2 ...

  2. 核心编程第二版第六章习题

    6–1. 字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串 是否是另一个大字符串的一部分? 成员关系操作符in obj in seq 6–3. 排序 (a) 输入一串 ...

  3. Python核心编程第二版 第十三章课后答案

    13-1.程序设计.请列举一些面对对象编程与传统旧的程序设计形式相比的先进之处. 没什么只有OO能做到,OO更多的是给了你一种能力,一种忽略细节的能力:忽略的越多,人类有限的智力就可以容纳越多越复杂的 ...

  4. Python核心编程第二版第五章数字(课后习题)----我的答案

    5-1.整型.讲讲Python普通整型和长整型的区别. 标准整型类型是最通用最基本的数字类型等价于C语言的长整型,一般以十进制表示. 长整型则是标准整型类型的超集,当需要用到比标准整型类型更大的整型时 ...

  5. python核心教程第二版答案_python核心编程第二版第4章习题答案.docx

    python核心编程第二版第4章习题答案.docx 4-1.Python 对象.与所有 Python 对象有关的三个属性是什么?请简单的描述一下. 答案: 所有的 Python 对象都拥有三个特性:身 ...

  6. 拒绝从入门到放弃_《Python 核心编程 (第二版)》必读目录

    目录 目录 关于这本书 必看知识点 最后 关于这本书 <Python 核心编程 (第二版)>是一本 Python 编程的入门书,分为 Python 核心(其实并不核心,应该叫基础) 和 高 ...

  7. python核心编程第二版pdf_Python Book电子书pdf版合集 Python核心高级编程第二版

    1小时学会Python.doc 51CTO下载-[Python系列].BeginningPythonFromNovicetoProfessionalSecondEdition.pdf 8.Python ...

  8. python核心编程第二版第一章学习笔记

    一.名字来源 贵铎·范·罗萨姆(Guido van Rossum)于1989 年底始创了Python,那时,他还在荷兰的CWI(Centrum voor Wiskunde en Informatica ...

  9. 《python核心编程第二版》第5章习题

    5-1 整形 讲讲 Python 普通整型和长整型的区别 答:普通整型 32位,长整数类型能表达的 数值仅仅与你的机器支持的(虚拟)内存大小有关 5-2 运算符 (a) 写一个函数,计算并返回两个数的 ...

  10. 《python核心编程第二版》第7章习题

    7–1. 字典方法.哪个字典方法可以用来把两个字典合并到一起? 答:dict1.update(dict2) 7–2. 字典的键.我们知道字典的值可以是任意的Python 对象,那字典的键又如何呢?请试 ...

最新文章

  1. 《OpenCV3编程入门》学习笔记5 Core组件进阶(三)分离合并颜色通道
  2. python安装教程3.8.5-Python 3.8.5下载
  3. 给定地址段为0001H,仅通过变化偏移地址寻址,CPU的寻址范围为____到____
  4. 计算机约束措施是参考,【计算机应用论文】高校计算机机房管理问题与改进策略(共4460字)...
  5. Android架构分析之Android消息处理机制(一)
  6. leetcode 834. Sum of Distances in Tree | 834. 树中距离之和(树形DP)
  7. bean注入属性_摆脱困境:将属性值注入配置Bean
  8. 如何更新mysql数据库字段_如何使用MySQL一个表中的字段更新另一个表中字段
  9. [svc]centos7的服务治理-systemd
  10. Python 语言程序设计(5-2)七段数码管程序编写设计
  11. 清华大学发布OpenNE:用于网络嵌入的开源工具包
  12. 计算机408真题_2019年计算机统考408真题第8题及其解析
  13. 热释电传感器三个引脚_热释电传感器电路图大全(六款热释电传感器电路设计原理图详解)...
  14. VS2005、vs2008+WinXPDDK+DDKWizard配置驱动开发环境
  15. 项目变更管理:变更流程
  16. IDEA 返回上一步 快捷键
  17. -XX:SurvivorRatio 命令解释
  18. python数据分析与挖掘实战(2)帕累托法则菜品盈利分析与相关性分析
  19. Topic 12 临床预测模型之列线表 (Nomogram)
  20. JSD-2204-Dubbo实现微服务调用-Seata-Day04

热门文章

  1. 一文了解PL610-01-O96TC-R
  2. Go语言中的Struct
  3. Hyperledger Fabric Docker 文件路径权限
  4. selectepoll
  5. 【贪心】【P5078】Tweetuzki 爱军训
  6. FileReader采用的默认编码
  7. 五.获得MYSQL数据库自动生成的主键
  8. JavaScript之表单元素操作
  9. 20151130语法基础
  10. 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置