5-3 标准类型运算符. 写一段脚本,输入一个测验成绩,根据下面的标准,输出他的评分成绩(A-F)。 A: 90–100 B: 80–89 C: 70–79 D: 60–69 F: <60
6–8. 列表.给出一个整数值,返回代表该值的英文,比如输入 89 返回"eight-nine"。附加题:能够返回符合英文语法规则的形式
6–10.字符串.写一个函数,返回一个跟输入字符串相似的字符串,要求字符串的大小写反转.比如,输入"Mr.Ed",应该返回"mR.eD"作为输出.
6–12.字符串
(a)创建一个名字为 findchr()的函数,函数声明如下: def findchr(string, char) findchr()要在字符串 string 中查找字符char,找 到就返回该值的索引,否则返回-1.不能用string.*find()或者 string.*index()函数和方法
6–13.字符串.string 模块包含三个函数,atoi(),atol(),和 atof(),它们分别负责把字符串转换成整数,长整型,和浮点型数字.从 Python1.5 起,Python 的内建函数 int(),long(),float()也可以做相同的事了, complex()函数可以把字符串转换成复数.(然而 1,5 之前,这些转换函数只能工作于数字之上)
6–17.方法.实现一个叫 myPop()的函数,功能类似于列表的 pop()方法,用一个列表作为输入,移除列表的最新一个元素,并返回它.
9–1. 文件过滤. 显示一个文件的所有行, 忽略以井号( # )开头的行. 这个字符被用做
Python , Perl, Tcl, 等大多脚本文件的注释符号.
附加题: 处理不是第一个字符开头的注释.
9–2. 文件访问. 提示输入数字 N 和文件 F, 然后显示文件 F 的前 N 行.
9–3. 文件信息. 提示输入一个文件名, 然后显示这个文本文件的总行数.
9–4. 文件访问. 写一个逐页显示文本文件的 程序. 提示输入一个文件名, 每次显示文本
文件的 25 行, 暂停并向用户提示"按任意键继续.", 按键后继续执行.
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-1
def 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-2
def 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-4
import os
def 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()