python核心编程习题5-9章

来源:互联网 发布:软件度量指标 编辑:程序博客网 时间:2024/05/21 08:38
5-3 标准类型运算符. 写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。 A: 90–100 B: 80–89 C: 70–79 D: 60–69 F: <60 

def fun1(num):

if num<60:print('F')elif num>=60 and num <70:print('D')elif num>=70 and num<80:print('C')elif num>=80 and num<90:print('B')elif num>=90 and num<=100:print('A')
5-6 算术。写一个计算器程序 你的代码可以接受这样的表达式,两个操作数加一个运算符:N1 运算符 N2. 其中 N1 和 N2 为整数或浮点数,运算符可以是+, -, *, /, %, ** 分别表示加法,减法, 乘法, 整数除,取余和幂运算。计算这个表达式的结果,然后显示出来。提示: 可以使用字符串方法 split(),但不可以使用内建函数 eval().

def fun1(strs):

        strs.strip()        if strs.find('+')>0:                num1,num2 = strs.split('+')                return float(num1)+float(num2)                elif strs.find('-')>0:                num1,num2 = strs.split('-')                return float(num1)-float(num2)        elif strs.find('**')>0:                num1,num2 = strs.split('**')                return pow(float(num1),int(num2))        elif strs.find('*')>0:                num1,num2 = strs.split('*')                return float(num1)*float(num2)                elif strs.find('/')>0:                num1,num2 = strs.split('/')                return float(num1)/float(num2)        elif strs.find('%')>0:                return int(num1) % int(num2)        else:                return 'No Result!'
5-16

def fun1(n1,n2):        cnt=0        print(cnt,'     ','$','%.2f' % (cnt),' ',"$%.2f" % n1)        while(n1-n2>0):            print(cnt+1,'     ','$%.2f' % n2,' ','$',"%.2f" % (n1-n2))            n1=n1-n2            cnt +=1        print(cnt+1,'     ','$','%.2f' % n1,' ','$',"%.2f" % 0)                if  __name__ == '__main__':    print('This is a Test script:\n')    n1=input('Enter opening balance: ')    n2=input('Enter monthly payment: ')    print('Pymt#',' ','Paid','   ','Balance')    print('-'*5,' ','-'*6,''*6,'-'*9)          fun1(float(n1),float(n2))    print('-'*5,'The End','-'*5)

6–8.   列表.给出一个整数值,返回代表该值的英文,比如输入 89 返回"eight-nine"。附加题:能够返回符合英文语法规则的形式

def fun1(nums):    str1=''    lis1=[str(i) for i in range(1,10)]    lisA=['one','two','three','four','five','six','seven','eight','nine']    lis=list(str(nums))    for i in lis:        str1 +=lisA[lis1.index(i)]+'-'    print('The Result is:\n',str1[:-1])   

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

def fun1(num):    tmp=num%60    hh=num//60    mm=tmp//60    ss=tmp%60    print("HH:%d MM:%d SS:%d" %(hh,mm,ss))

6–10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转.比如,输入"Mr.Ed",应该返回"mR.eD"作为输出.
 def fun1(num):    lis=[]    lis=list(num)    print(num)    for i in range(len(lis)):        if lis[i].isupper():            lis[i]=lis[i].lower()        elif lis[i].islower():            lis[i]=lis[i].upper()                    print(lis)    num=''.join(lis)    print(num)

 
6–12.字符串 
(a)创建一个名字为 findchr()的函数,函数声明如下: def findchr(string, char)  findchr()要在字符串 string 中查找字符char,找 到就返回该值的索引,否则返回-1.不能用string.*find()或者 string.*index()函数和方法 

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

def findchr(string,char):   for i in zip(string,char.zfill(len(string))):       print(list(i))   lis=[]        i1=string.count(char)    print(i1)   if i1>0:       lis=[i for i in string.split(char)]       print(lis)       print(lis.index(''))def rfindchr(string,char):   for i in zip(string,char.zfill(len(string))):       print(list(i))   lis=[]        i1=string.count(char)    print(i1)   if i1>0:       lis=[i for i in string.replace(char,'*')]       print(lis)

6–13.字符串.string 模块包含三个函数,atoi(),atol(),和 atof(),它们分别负责把字符串转换成整数,长整型,和浮点型数字.从 Python1.5 起,Python 的内建函数 int(),long(),float()也可以做相同的事了, complex()函数可以把字符串转换成复数.(然而 1,5 之前,这些转换函数只能工作于数字之上) 
 def atoc(strs):   if strs.rindex('-')>0:      real = ''.join(list(strs)[:strs.rindex('-')] )      img = ''.join(list(strs)[strs.rindex('-')+1:])   else:       real = ''.join(list(strs)[:strs.rindex('+')] )       img = ''.join(list(strs)[strs.rindex('+')+1:])             print(real)   print(img)   print(complex(float(real),float(img.strip('j'))))         if __name__ == '__main__':          print('-'*5,'The Start','-'*5)          atoc('-1.23e+4-5.67j')         

6–17.方法.实现一个叫 myPop()的函数,功能类似于列表的 pop()方法,用一个列表作为输入,移除列表的最新一个元素,并返回它. 
def myPop(lis):   print(lis)    lis=lis[:-1]   print(lis)   return lis 
7–3.   字典和列表的方法。 (a) 创建一个字典,并把这个字典中的键按照字母顺序显示出来。 (b) 现在根据已按照字母顺序排序好的键,显示出这个字典中的键和值。
#7-3-(a)  d3={'b':5,'g':5,'z':66}    for k in sorted(d3.keys()):        print(k,':',d3[k]) #7-3-(b) def fun1():    lis1=['a','b','c']    lis2=[1,2,3]    fdict=dict(zip(lis1,lis2))    lis1=['a','b','c']    lis2=[1,2,3]    fdict=dict(zip(lis1,lis2))    print(fdict)

#8-3>>>[i for i in range(10)][0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> [i for i in range(20) if i%3==0][0, 3, 6, 9, 12, 15, 18]>>> [i for i in range(1,20) if i%3==0][3, 6, 9, 12, 15, 18]>>> [i for i in range(-20,870,220)][-20, 200, 420, 640, 860]#8-5  def getfactors(num):   lis=[]   for i in range(1,num+1):       if (num%i)==0:           lis.append(i)   print(lis)

8–7.   全数. 完全数被定义为这样的数字: 它的约数(不包括它自己)之和为它本身. 例如: 6 

的约数是 1, 2, 3, 因为 1 + 2 + 3 = 6 , 所以 6 被认为是一个完全数. 编写一个名为 isperfect() 的函数, 它接受一个整数作为参数, 如果这个数字是完全数, 返回1 ; 否则返回 0 .

def isperfect(num):    lis2=[]    for i in range(1,num+1):        if num%i==0:            lis2.append(i)        else:            continue    print('the result','-'*5)     print(lis2[:-1])    if sum(lis2[:-1])==num:        return 1    return 0

#8-11 def fun1():    icnt=0    iready=0    dict1={}    print('Enter total number of names: 5')    while iready<5:               strs=input('Please neter name '+str(iready)+':')        if strs.count(',')==0:            print('Wrong format... should be Last, First.')            if icnt>=3:                break            else:                icnt += 1                print('You have done this %d time(s)' % icnt)            continue        dict1.update(dict([strs.strip().split(',')]))        iready +=1           dict1.update(dict([strs.strip().split(',')]))    print('The sorted list (by last name) is:')    for k in sorted(dict1.keys()):        print(k+',',dict1[k])

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

#9-1def fun1(path):    fi=open(path,'r')    for line in fi.readlines():        line=line.strip('\n')        if line[0].startswith('#'):            continue               if line.find('#')>0:            line=line[:line.find('#')]                  print(line)            fi.close()

9–2.   文件访问. 提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行.

#9-2def fun1(num,path):    fi=open(path,'r')    lis=[]    lis=fi.readlines()    for i in range(num):        line=lis[i].strip('\n')        print('%d: ' % (i+1),line)           fi.close()

9–3.   文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数. 

def fun1(path):    fi=open(path,'r')    lis=[]    lis=fi.readlines()    print('Total lines %d: ' % len(lis))    fi.close()

9–4.   文件访问. 写一个逐页显示文本文件的 程序. 提示输入一个文件名, 每次显示文本
文件的 25 行, 暂停并向用户提示"按任意键继续.", 按键后继续执行. 

#9-4import osdef fun1(path):         fi=open(path,'r')    lis=[]    cnt=0    lis=fi.readlines()    for i in range(len(lis)):        line=lis[i].strip('\n')        print('%d: ' % (i),line)        if i>23 and i%25==0:            os.system('pause')            continue        else:            pass    fi.close()




原创粉丝点击