y):print("较大数为" />
Python习题选编
华东师大信息学院计算中心一.程序结构与算法部分:
1. 编写一个python程序,输入两个数,比较它们的大小并输出其中较大者。参考代码:
x = int(input("Please enter first integer: "))
y = int(input("Please enter second integer: "))
if (x == y):
print("两数相同!")
elif (x > y):
print("较大数为:",x)
else:
print("较大数为:",y);
2.写一个算法(流程图和python程序):输入三个数,输出其最大者。
参考代码:
a,b,c=3,4,5
if a <= b:
if c < b:
print ("b是最大的数")
else:
print ("c是最大的数")
else:
if c < a:
print ("a是最大的数")
else:
print ("c是最大的数")
3.使用Python编程,求1~100间所有偶数的和。
参考代码:
sum=0
for x in range(1,101):
if x % 2==0:
print(x)
sum=sum+x
print("累加和是:",sum)
4.用Python编写程序,输入一年份,判断该年份是否是闰年并输出结果。注:凡符合下面两个条件之一的年份是闰年。
(1)能被4整除但不能被100整除。
(2)能被400整除。
参考代码:
year = int(input("Please enter the year: "))
if ((year%4==0 and year%100!=0) or (year%400==0)): 加个括号即可print(year,"is a leap year.")
else:
print(year,"is not a leap year.")
5.用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?
参考代码:
cunkuan = 10000 #本金10000元
years=0
while cunkuan<20000:
years+=1
cunkuan=cunkuan*(1+0.0325)
print(str(years)+"年以后,存款会翻番")
6.从键盘接收一百分制成绩(0~100),要求输出其对应的成绩等级A~E。其中,90分以上为'A',80~89分为'B',70~79分为'C',60~69分为'D',60分以下为'E'。参考答案:
score=int(input('请输入成绩(0~100):'))
if score > 100:
grade = "输入错误!"
elif score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70: 无需写小于什么什么的因为elif就已经是除了这个之外的了grade = 'C'
elif score >= 60:
grade = 'D'
elif score >= 0:
grade = 'E'
else:
grade = "输入错误!"
print(grade)
7.猜数游戏。预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜!你猜中了!”。
参考答案:
num=7
while True:
guess=int(input('请输入你猜的数(0~9):'))
if guess == num:
print("恭喜!你猜中了!")
break;
elif guess > num:
print("太大")
else:
print("太小")
8.输入一个数,判断这个数是否为素数,并输出判断结果。
(所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的数。下图为参考流程图)
参考答案:
import math
n=int(input("请输入一个数:"))
x=int(math.sqrt(n))
i,w=2,0
for i in range (2,x+1):
if n%i==0:
if w==1:
print(n,"不是素数。")
else:
print(n,"是素数。")
或
import math
n=int(input('请输入一个数:'))
i,w=2,0
while i <= int(math.sqrt(n)) and w==0:
if n%i == 0:
w = 1
break
else:
i = i+1
if w==0:
print(n,"是素数!")
else:
print(n,"不是素数!")
或
import math
n=int(input('请输入一个数:'))
i=2
while i <= int(math.sqrt(n)) :
if n%i == 0:
print(n,"不是素数!")
break
else:
i=i+1
else:
print(n,"是素数!")
9.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编程,找出1000之内的所有完数,并输出该完数及对应的因子。(枚举法)
参考答案:
m=1000
for a in range(2,m+1):
s=a
L1=[]
for i in range(1,a):
if a%i==0:
L1.append(i)
if s==0:
print("完数:%d,因子包括:"%a,end="")
for j in range(1,len(L1)): 为啥不是0开头的
print("%d"%L1[j],end=",")
print("\n")
10.编程,解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想吃时,只剩下一个桃子了。求第一天共摘多少个桃子。(迭代法)
参考答案:
day=9
x=1
while day>0:
x=(x+1)*2
day-=1
print("total=",x)
二.文件部分:
1. 在当前目录下有一个文件名为temp.txt的文件,存放着上海从2014年3月10日(周一)到3月16日(周日)间一周的最高和最低气温(单位为摄氏度)。其中,第一行为最高气温,第二行为最低气温。编程,找出这一周中第几天最热(按最高气温计算)?最高多少度?这一周中第几天最冷(按最低气温计算)?最冷多少度?
参考答案:
flname="temp.txt"
f=open(flname)
ht=(f.readline()).strip() 暂且先只读一行
L1=list(ht.split(','))
lt=(f.readline()).strip() 此处再读第二行
L2=list(lt.split(','))
f.close()
for i in range(len(L1)):
L1[i]=int(L1[i])
L2[i]=int(L2[i])
maxVal=L1[0] 可用max.(L1)
maxDay=0
minVal=L2[0]
minDay=0
for i in range(1,len(L1)):
if L1[i]>maxVal:
maxVal=L1[i]
maxDay=i
if L2[i] minVal=L2[i] minDay=i print("这周第"+str(maxDay+1)+"天最热,最高"+str(maxVal)+"摄氏度") print("这周第"+str(minDay+1)+"天最冷,最低"+str(minVal)+"摄氏度") 2.在上题的基础上,求出全周的平均气温(这一周各天平均温度的平均值,取 整数)。假设在气象意义上,天日均气温超过10℃,根据这一 周的气象数据是否能判断上海已经入春? 参考答案: flname="temp.txt" f=open(flname) ht=(f.readline()).strip() L1=list(ht.split(',')) lt=(f.readline()).strip() L2=list(lt.split(',')) 不要忘了!!!!!!!!! L3=[] for i in range(len(L1)): L1[i]=int(L1[i]) L2[i]=int(L2[i]) 屌炸天!!!! sum=0 k=0 for i in range(len(L3)): sum=sum+L3[i] if L3[i]>=10: k+=1 else: k=0 这还要写吗??? avg=int(sum/len(L3)) print("周平均气温为:",avg) if k>=5: print("上海这周已入春。") else: print("上海这周未入春。") 3 算机课成绩,共有学号、平时成绩、期末成绩三列。请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩(取整数),并分学号、总评成绩两列写入另一文件score2.txt。同时在屏幕上输出学生总人数,按总评成绩计90以上、80~89、70~79、60~69、60分以下各成绩档的人数和班级总平均分(取整数)。参考答案: f=open("score1.txt") f2=open("score2.txt",'w') f2.write("学号平均成绩\n"); L2=[0,0,0,0,0] count=0 sum=0 while (len(line) != 0): #print(line) L1=line.split() f2.write(L1[0]+" ") f_score=int(int(L1[1])*0.4+int(L1[2])*0.6) if 90 L2[0]+=1 elif f_score>=80: L2[1]+=1 elif f_score>=70: L2[2]+=1 elif f_score>=60: L2[3]+=1 else: L2[4]+=1 count+=1 sum+=f_score ?????????????? f.close() f2.close() avg_score=int(sum/count) print("学生总人数为%d,按总评成绩计,90以上%d人、80~89间%d人、70~79间%d人、60~69间%d人、60分以下%d人。班级总平均分为%d分。"%(count,L2[0],L2[1],L2[2],L2[3],L2[4],avg_score)) 或 f=open("score1.txt") a=f.readlines() del a[0] L3=[] for line in a: line=line.strip() L1=line.split() f_score=int(int(L1[1])*0.4+int(L1[2])*0.6) L3.append([L1[0],f_score]) f.close() c=[0,0,0,0,0] count=0 sum=0 f2=open("score2.txt",'w') f2.write("学号平均成绩\n"); for L2 in L3: if 90 c[0]+=1 elif L2[1]>=80: c[1]+=1 elif L2[1]>=70: c[2]+=1 elif L2[1]>=60: c[3]+=1 else: c[4]+=1 count+=1 sum+=L2[1] f2.write(L2[0]+" "+str(L2[1])+"\n") f2.close() avg_score=int(sum/count) print("学生总人数为%d,按总评成绩计,90以上%d人、80~89间%d人、70~79间%d人、60~69间%d人、60分以下%d人。班级总平均分为%d分。"%(count,c[0],c[1],c[2],c[3],c[4],avg_score)) 4其内容包含小写字母和大写字母。 请将该文件复制到另一文件sample12_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。 参考答案: f=open("sample12.txt") L1=f.readline s() f2=open("sample12_copy.txt",'w') for line in L1: f2.write(line.upper()) f.close() f2.close() 5.当前目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的学号、数学课成绩(第2列)和语文课成绩(第3列)。请编程完成下列要求:(1)分别求这个班数学和语文的平均分(保留1位小数)并输出。 (2)找出两门课都不及格(<60)的学生,输出他们的学号和各科成绩。 (3)找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩。建议用三个函数分别实现以上要求。 参考答案: def output_avg(L): sum1,sum2=0,0 for line in L: L1=line.strip().split() ???????? sum1+=int(L1[1]) sum2+=int(L1[2]) count=len(L) avg1=round(sum1/count,1) avg2=round(sum2/count,1) print("这个班的数学平均分为:%4.1f,语文平均分为:%4.1f"%(avg1,avg2)) def output_notpass(L): print("两门课均不及格的学生学号及数学、语文成绩为:") for line in L: L1=line.strip().split() if int(L1[1])<60 and int(L1[2])<60: print(line) def output_good(L): print("两门课平均分在90分以上的学生学号及数学、语文成绩为:") for line in L: L1=line.strip().split() f_score=round((int(L1[1])+int(L1[2]))/2) if f_score>=90: print(line) f=open("class_score.txt") L=f.readlines() del L[0] output_avg(L) output_notpass(L) output_good(L) 三.算法分析与设计部分 ,用冒泡法或选择 法进行排序(从小到大),并将排序结果在屏幕上输出。参考答案: 选择排序: def bubble(List): num=len(List) for i in range(0,num-1): for j in range(i+1,num): #对应列表中的位置 if List[i]>List[j]: List[i],List[j]=List[j],List[i] return List L1=[] num_str=input('请输入一个需排序的整数:') while len(num_str) != 0: L1.append(int(num_str)) num_str=input('请输入一个需排序的整数:') print('排序后结果:', bubble(L1)) 或 冒泡排序: def bubble(List): for i in range(0,len(List)-1): for j in range(len(List)-1,i,-1): if List[j-1]>List[j]: List[j-1],List[j]=List[j],List[j-1] return List L1=[] num_str=input('请输入一个需排序的整数:') while len(num_str) != 0: L1.append(int(num_str)) num_str=input('请输入一个需排序的整数:') print('排序后结果:', bubble(L1)) 参考答案: f=open("score2.txt") a=f.readlines() del a[0] L2=[] L3=[] for line in a: line=line.strip() L1=line.split() L2.append(L1[0]) L3.append(L1[1]) f.close() maxScore=L3[0] maxIndex=0 minScore=L3[0] minIndex=0 for i in range(1,len(L3)): if L3[i]>maxScore: maxScore=L3[i] maxIndex=i if L3[i] minScore=L3[i] minIndex=i print("最高分为:"+str(maxScore)+"分,该学生学号为:"+str(L2[maxIndex])) print("最低分为:"+str(minScore)+"分,该学生学号为:"+str(L2[minIndex])) 3.编程,输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 参考答案: letters,space,digit,other=0,0,0,0 s=input("请输入一行字符:") for i in range(len(s)): if (s[i]>='a' and s[i]<='z') or (s[i]>='A' and s[i]<='Z'): letters+=1 elif s[i]==' ': space+=1 elif s[i]>='0' and s[i]<='9': digit+=1 else: other+=1 print("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n"%(letters,space,digit,other)) 或 p=input('请输入一行字符:') a,b,c,d=0,0,0,0 for i in p: if((i<='Z' and i>='A') or (i<='z' and i>='a')): a+=1 elif (i==' '): b+=1 elif(i>='0' and i<='9'): c+=1 else: d+=1 print ('英文字母的个数为:'+str(a)) print ('空格的个数为:'+str(b)) print ('数字的个数为:'+str(c)) print ('其他字符的个数为:'+str(d)) 或 letter,space,digit,other=0,0,0,0 s = input('input a string:') for c in s: if c.isalpha(): letter +=1 elif c.isspace(): space +=1 elif c.isdigit(): digit +=1 else: other +=1 print("字母数:%d\n空格数:%d\n数字数:%d\n其他字符数:%d\n"%(letter,space,digit,other)) 四.函数部分: 1.写一判素数的函数,在主函数中输入一个整数,调用该函数进行判断并输出 结果。 参考答案: def shushu(n): import math i,w=2,0 if n<=1: w=1 while i <= int(math.sqrt(n)) and w==0: if n%i == 0: w = 1 break else: i = i+1 return w n=int(input('n=')) if shushu(n)==0: print(n,"是素数!") else: print(n,"不是素数!") 2.当前目录下有一个文件名为score 3.txt的文本文件,存放着某班学生的学 号和其两门专业课的成绩。分别用函数实现以下功能: (1)定义函数function1,计算每个学生的平均分(取整数),并将所有学生的学号和平均分在屏幕上输出。(函数参数为要读取文件的文件名) def function1(flname): #函数代码 function1("c:\\test\\score3.txt") 参考答案: def function1(flname): f=open(flname) a=f.readlines() del a[0] L3=[] for line in a: line=line.strip() L1=line.split() avg_score=int((int(L1[1])+int(L1[2]))/2) L3.append([L1[0],avg_score]) f.close() print("学号平均分") for L2 in L3: print(L2[0]+" "+str(L2[1])) (2)定义函数calAvg(),计算某一门课程的平均分(函数参数为某门课成绩对应的列表名,返回值为该门课的平均分) def calAvg(L): #函数代码 f=open("c:\\test\\score3.txt") a=f.readlines() del a[0] L2=[] L3=[] for line in a: line=line.strip() L1=line.split() L2.append(int(L1[1])) L3.append(int(L1[2])) f.close() print("专业课1的总平均分为",calAvg(L2)) print("专业课2的总平均分为",calAvg(L3)) 参考答案: def calAvg(L): sum,count=0,0 for score in L: sum+=score count+=1 avg_score=int(sum/count) return avg_score 3.用函数或函数的递归实现求n!的算法。(主程序已给出)。 def fact(n): //函数代码 n=int(input("Calculate n! Enter n=")) print(n,'!=',fact(n)) 参考答案: def fact(n): value=1 for count in range(1,n+1): value*=count return value 或 def fact(n): if n==1: value=1 else: value=n*fact(n-1) return value 程序复杂度为O(n). 4.主程序中已有一个排好序的列表,请编写函数insertList,将从键盘接收的整数按原来从小到大的排序规律插入到该列表中。 def insertList(L1,x): #函数代码 L1=[1,4,6,9,13,16,28,40,100] x=int(input('请输入一个要插入的整数:')) insertList(L1,x) print(L1) 参考答案: def insertList(L1,x): if x>L1[len(L1)-1]: L1.append(x) return for i in range(0,len(L1)): if x L1.insert(i,x) break return L1=[1,4,6,9,13,16,28,40,100] x=int(input('请输入一个要插入的整数:')) insertList(L1,x) print(L1) Python基础知识笔试 单选题(2.5分*20题) 1. 下列哪个表达式在Python中是非法的?B A. x = y = z = 1 B. x = (y = z + 1) C. x, y = y, x D. x += y 2. python my.py v1 v2 命令运行脚本,通过from sys import argv如何获得v2的参数值? C A. argv[0] B. argv[1] C. argv[2] D. argv[3] 3. 如何解释下面的执行结果? B print 1.2 - 1.0 == 0.2 False A. Python的实现有错误 B. 浮点数无法精确表示 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False 4. 下列代码执行结果是什么? D x = 1 def change(a): x += 1 print x change(x) A. 1 B. 2 C. 3 D. 报错 5. 下列哪种类型是Python的映射类型?D A. str B. list C. tuple D. dict 6. 下述字符串格式化语确的是?D A. 'GNU's Not %d %%' % 'UNIX' B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' % 'UNIX' D. 'GNU\'s Not %s %%' % 'UNIX' 7. 在Python 2.7中,下列哪种是Unicode编码的书写方式?C A. a = ‘中文’ B. a = r‘中文’ C. a = u’中文’ 《Python》期末考试试题A卷答案 一、问答题(每题2分,共20分) (1)整形和浮点型(或者int和float) (2)乘法*, 幂运算 **,求余 % (3)/是算术除,包含小数,//是整除,不包含小数(意思对即可) (4) 1、括号内优先 2、幂运算 3、乘法、除法、求余运算 4、加法减法 5、关系运算 6、逻辑运算 答出前4条即可 (5)数字转字符串的函数str(),字符串转数字的函数int(),字符串转浮 点数的函数float(),字符串描述的运算式求值函数是eval() (6)读方式:open(“file.txt”, ‘r’) 写方式:open(“file.txt”, ‘w’) 追加方式:open(“file.txt”, ‘a’) (7) 逻辑运算符与:and 或运算:or 非运算:not。 (8)sublist = list1[2:4] (9) break语句表示要终止循环。 continue语句表示结束当前循环,开始下一次循环。 两者的区别是:break终止循环,continue还有继续循环,只是结束本次循环。 (10) lambda表达式的作用就是为了节省函数的格式化定义,同时减少函 数调用的开销。 例如 lambda x:x+1 二、给出下列代码行相应的输出(每题3分,共15分) 1、在一个随机选择群组中有23 个人,有两个人有相同生日的概率是\n 0.51. 2、This sentence contains five words This sentence contains six different words 3、to be, or not to be. 4、3 习题1 一、选择题 1.Python语言属于()。C A.机器语言B.汇编语言C.高级语言 D.科学计算语言 2.下列选项中,不属于Python特点的是()。B A.面向对象B.运行效率高C.可读性好 D.开源 3.Python程序文件的扩展名是()。D A..python B..pyt C..pt D..py 4.以下叙述中正确的是()。C A.Python 与Python 兼容 B.Python语句只能以程序方式执行 C.Python是解释型语言 D.Python语言出现得晚,具有其他高级语言的一切优点 5.下列选项中合法的标识符是()。A A._7a_b B.break C._a$b D.7ab 6.下列标识符中合法的是()。B A.i'm B._ C.3Q D.for 7.Python不支持的数据类型有()。A A.char B.int C.float D.list 8.关于Python中的复数,下列说法错误的是()。B A.表示复数的语法形式是a+bj B.实部和虚部都 必须是浮点数 C.虚部必须加后缀j,且必须是小写 D.函数abs()可 以求复数的模 9.函数type(1+0xf*的返回结果是()。D A. 题目有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析遍历全部可能,把有重复的剃掉。 total=0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if ((i!=j)and(j!=k)and(k!=i)): print(i,j,k) total+=1 print(total) 12345678 简便方法用itertools中的permutations即可。 import itertools sum2=0 a=[1,2,3,4] for i in itertools.permutations(a,3): print(i) sum2+=1 print(sum2) 12345678 实例002:“个税计算” 题目企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析分区间计算即可。 profit=int(input('Show me the money: ')) bonus=0 thresholds=[100000,100000,200000,200000,400000] rates=[0.1,0.075,0.05,0.03,0.015,0.01] for i in range(len(thresholds)): if profit<=thresholds[i]: bonus+=profit*rates[i] profit=0 break else: bonus+=thresholds[i]*rates[i] profit-=thresholds[i] bonus+=profit*rates[-1] print(bonus) 14 《Python程序设计》习题与参考答案 第1章基础知识 1.1 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。 1.2 为什么说Python采用的是基于值的内存管理模式? 答: Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) >>> y = 3 >>> id(y) >>> y = 5 >>> id(y) >>> id(x) 1.3 在Python中导入模块中的对象有哪几种方式? 答:常用的有三种方式,分别为 ●import 模块名 [as 别名] ●from 模块名 import 对象名[ as 别名] ●from math import * 1.4 使用pip命令安装numpy、scipy模块。 答:在命令提示符环境下执行下面的命令: pip install numpy pip install scipy 1.5 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。) 答: x = input('Please input an integer of more than 3 digits:') try: python基础习题集 python基础习题集 1.执行Python 脚本的两种方式解释器:python 脚本名.py直接运行:linux下给全部权限,然后再终端中输入./脚本名.py 2.简述位、字节的关系8位=1字节 3.简述ascii、unicode、utf--‐8、gbk 的关系Ascii是最早的一套编码,后来国人扩展了Ascii表,制出了CB2312编码表,后来又扩展到了GBK编码表。后来又有了GB18030。后来国际化标准组织为了规范化编码标准,研究出了unicode编码。经过一系列进化,发展到了可变长的utf-8编码 4.请写出“李杰”分别用utf--‐8 和gbk 编码所占的位数Utf-8:6位gbk:4位 5.Pyhton 单行注释和多行注释分别用什么?单行注释:#注释的内容多行注释:'''注释的内容''' 6.声明变量注意事项有那些?1、不能以数字开头2、只能是字母、数字或下划线的任意组合,但不能有特殊字符3、关键字通常不能声明为变量 7.如何查看变量在内存中的地址?Id(变量名) 8.执行Python 程序时,自动生成的.pyc 文件的作用是什么?pyc 是由py文件经过编译后二进制文件,使用pyc的加载速度快,而且跨平台。9、写代码 a.实现用户输入用户名和密码,当用户名为seven 且密码为123 时,显示登陆成功,否则登陆失败!Name =input(“Please input your name !”)Passwd = int(input(“Please input you password !”))if Name == “seven”and Passwd ==123: print(“Welcome!”)else: print(“The name or password is wrong!”)b.实现用户输入用户名和密码,当用户名为seven 且密码为123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次for i in range(4): Name =input(“Please input your name !”) Passwd = int(input(“Please input you password !”)) if Name == “seven”and Passwd ==123: print(“Welcome!”) break else: print(“Please input agin!”)c.实现用户输入用户名和密码,当用户名为seven 或alex 且密码为123 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次for i in range(4): Name =input(“Please input your name !”) Passwd = int(input(“Please input you password !”)) if (Name == “seven”or Name == “alex”)and Passwd ==123: Print(“Welcome!”) break else: print(“Please input agin!!”) 10、写代码a. 使用while 循环实现输出2 --‐3 + 4 --‐5 + 6 ... + 100 的和i=2t=0While i100: if i%2 == 1: t -= i else: t += i i += 1 print(t)b. 使用for 循环和range 实现输出1 --‐ 2 + 3 --‐ 4 + 5 --‐ 6 ... + 99 的和t=0for i in range(1,100): if i%2 == 1: t += i else: t -= i print(t)c. 使用while 循环实现输出1,2,3,4,5,7,8,9,11,12i=1while i 12: if i == 6 or i ==10: pass else: print(i) i += 1 d. 使用 Advanced computation linguistics 1. Collect the most frequent words in 5 genres of Brown Corpus: news, adventure, hobbies, science_fiction, romance To collect most frequent words from the given genres we can follow the following steps: >>> import nltk >>> from nltk.corpus import brown >>> brown.categories() ['adventure', 'belles_lettres', 'editorial', 'fiction', 'government', 'hobbies', 'humor', 'learned', 'lore', 'mystery', 'news', 'religion', 'reviews', 'romance' , 'science_fiction'] >>> news_text = brown.words(categories=['news','adventure','hobbies','science_fi ction','romance']) >>> from nltk.probability import FreqDist >>> fdist=FreqDist([w.lower() for w in news_text]) >>> voca=fdist.keys() >>> voca[:50] ['the', ',', '.', 'and', 'of', 'to', 'a', 'in', 'he', "''", '``', 'was', 'for', 'that', 'it', 'his', 'on', 'with', 'i', 'is', 'at', 'had', '?', 'as', 'be', 'you ', ';', 'her', 'but', 'she', 'this', 'from', 'by', '--', 'have', 'they', 'said', 'not', 'are', 'him', 'or', 'an', 'one', 'all', 'were', 'would', 'there', '!', ' out', 'will'] >>> voca1=fdist.items() >>> voca1[:50] [('the', 18635), (',', 17215), ('.', 16062), ('and', 8269), ('of', 8131), ('to', 7125), ('a', 7039), ('in', 5549), ('he', 3380), ("''", 3237), ('``', 3237), ('w as', 3100), ('for', 2725), ('that', 2631), ('it', 2595), ('his', 2237), ('on', 2 162), ('with', 2157), ('i', 2034), ('is', 2014), ('at', 1817), ('had', 1797), (' ?', 1776), ('as', 1725), ('be', 1610), ('you', 1600), (';', 1394), ('her', 1368) , ('but', 1296), ('she', 1270), ('this', 1248), ('from', 1174), ('by', 1157), (' --', 1151), ('have', 1099), ('they', 1093), ('said', 1081), ('not', 1051), ('are ', 1019), ('him', 955), ('or', 950), ('an', 911), ('one', 903), ('all', 894), (' were', 882), ('would', 850), ('there', 807), ('!', 802), ('out', 781), ('will', 775)] This means that the frequency of word “the” is more than others. 2. Exclude or filter out all words that have a frequency lower than 15 occurrencies. (hint using conditional frequency distribution) By adding functionalities on the first task of collecting words based on their frequency of Python练习题库 By 郑红波 2017-12-19 一、填空题 1.Python标准库math中用来计算平方根的函数是__________。(sqrt) 2.在Python中__________表示空类型。(None) 3.列表、元组、字符串是Python的_________(有序?无序)序列。(有序) 4.查看变量类型的Python内置函数是________________。(type()) 5.查看变量内存地址的Python内置函数是_________________。(id()) 6.表达式[1, 2, 3]*3的执行结果为______________________。([1, 2, 3, 1, 2, 3, 1, 2, 3]) 7.list(map(str, [1, 2, 3]))的执行结果为_____________________。([‘1’, ‘2’, ‘3’]) 8.已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为___________。(False) 9.已知 x = 3,那么执行语句 x *= 6 之后,x的值为________________。(18) 10.表达式“[3] in [1, 2, 3, 4]”的值为________________。(False) 11.假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到 的值是______________________。([6, 7, 9, 11]) 12.使用列表推导式生成包含10个数字5的列表,语句可以写为_______________。([5 for i in range(10)]) 13.假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这 两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_____________________。(c = dict(zip(a, b))) 14.任意长度的Python列表、元组和字符串中最后一个元素的下标为________。(-1) 15.Python语句''.join(list('hello world!'))执行的结果是____________________。('hello world!') 16.转义字符’\n’的含义是___________________。(回车换行) 17.Python语句list(range(1,10,3))执行结果为___________________。([1, 4, 7]) 18.切片操作list(range(6))[::2]执行结果为________________。([0, 2, 4]) 19.表达式 'ab' in 'acbed' 的值为________。(False) 20.Python 3.x语句 print(1, 2, 3, sep=':') 的输出结果为____________。(1:2:3) 21.表达式 int(4**0.5) 的值为____________。(2) 22.达式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为____________。([111, 33, 2]) 23.已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为___________。('3') 24.表达式 min(['11', '2', '3']) 的值为_________________。('11') 25.已知列表对象x = ['11', '2', '3'],则表达式max(x, key=len) 的值为___________。('11') 26.语句 x = (3,) 执行后x的值为_______________。((3,)) 27.语句 x = (3) 执行后x的值为________________。(3) 28.已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为________________。({1: 2, 2: 3}) 29.字典对象的_____________方法返回字典中的“键-值对”列表。(items()) 30.使用列表推导式得到100以内所有能被13整除的数的代码可以写作 ___________________________________。([i for i in range(100) if i%13==0]) 31.表达式 3 ** 2 的值为_________。(9) 32.表达式 3 * 2的值为___________。(6) 33.已知 x = [3, 5, 7],那么执行语句 x[len(x):] = [1, 2]之后,x的值为______________。([3, 5, 7, 1, 2]) 34.表达式 list(zip([1,2], [3,4])) 的值为________________________。([(1, 3), (2, 4)]) 35.已知 x = [1, 2, 3, 2, 3],执行语句 x.pop() 之后,x的值为_____________。([1, 2, 3, 2]) 36.表达式 [x for x in [1,2,3,4,5] if x<3] 的值为_____________________。([1, 2]) Python基础知识笔试 、单选题(2.5分*20题) 1. 下列哪个表达式在Python中是非法的?B A. x = y = z = 1 B. x = (y = z + 1) C. x, y = y, x D. x += y 2. python my.py v1 v2 命令运行脚本,通过from sys import argv 如何获得v2的参数值? C A. argv[0] B. argv[1] C. argv[2] D. argv[3] 3. 如何解释下面的执行结果? B print 1.2 - 1.0 == 0.2 False A. Python的实现有错误 B. 浮点数无法精确表示 C. 布尔运算不能用于浮点数比较 D. Python将非0数视为False 4. 下列代码执行结果是什么? D def cha nge(a): x+= 1 print x cha nge(x) A. 1 B. 2 C. 3 D. 报错 5. 下列哪种类型是Python的映射类型?D A. str B. list C. tuple D. dict 6. 下述字符串格式化语法正确的是? D A. 'GNU's Not %d %%' % 'UNIX' B. 'GNU\'s Not %d %%' % 'UNIX' C. 'GNU's Not %s %%' %'UNIX' D. 'GNU\'s Not %s %%' %'UNIX' 7. 在Python 2.7中,下列哪种是Unicode编码的书写方式?C A. a = 中文’ B. a = r中文’ C. a = u 中文' D. a = b '中文' 8. F 列代码的运行结果是? D prin t 'a' < 'b' < 'c' A. B. C. D. True E. False 9. F 列代码运行结果是? C print a > 'b' or 'c' A. a B. b C. c D. True E. False 10. 下列哪种不是 A. ⑴ B. (1,) C. (1,2) D. (1,2, (3, 4)) a = 'a' Python 元组的定义方式? A 第一节课 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比C语言、C++语言或Java 之类的系统编程语言要简单容易。 也让脚本语言另有一些属于脚本语言的特性: ?语法和结构通常比较简单 ?学习和使用通常比较简单 ?通常以容易修改程序的“解释”作为运行方式,而不需要“编译” ?程序的开发产能优于运行性能 一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个Shell脚本主要由原本需要在命令行输入的命令组成,或在一个文本编辑器中,用户可以使用脚本来把一些常用的操作组合成一组串行。主要用来书写这种脚本的语言叫做脚本语言。很多脚本语言实际上已经超过简单的用户命令串行的指令,还可以编写更复杂的程序。 1. IDLE 是什么? IDLE是一个Python Shell,shell的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE这个shell与Python进行互动。 2. print() 的作用是什么? print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell 窗口)。 3. Python 中表示乘法的符号是什么? Python中的乘号是*(星号)。 4. 为什么>>>print('I love https://www.sodocs.net/doc/fe10161547.html, ' * 5) 可以正常执行, 但>>>print('I love https://www.sodocs.net/doc/fe10161547.html, ' + 5) 却报错? 《P y t h o n程序设计》习题与参考答案 第1章基础知识 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 系列的最高版本(目前是Python )。 为什么说Python采用的是基于值的内存管理模式? 答: Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) >>> y = 3 >>> id(y) >>> y = 5 >>> id(y) >>> id(x) 在Python中导入模块中的对象有哪几种方式? 答:常用的有三种方式,分别为 ?import 模块名[as 别名] ?from 模块名import 对象名[ as 别名] ?from math import * 使用pip命令安装numpy、scipy模块。 答:在命令提示符环境下执行下面的命令: pip install numpy pip install scipy 编写程序,用户输入一个三位以上的整数,输出其百位以上的数字。例如用户输入1234,则程序输出12。(提示:使用整除运算。) 答: x = input('Please input an integer of more than 3 digits:') try: x = int(x) x = x else: print(x) except BaseException: print('You must input an integer.') import types x = input('Please input an integer of more than 3 digits:') if type(x) != : print 'You must input an integer.' elif len(str(x)) != 4: print 'You must input an integer of more than 3 digits.' else: print xoin(map(str,result)) x = input('Please input an integer less than 1000:') t = x i = 2 result = [] while True: if t==1: break if t%i==0: (i) t = t/i else: i+=1 print x,'=','*'.join(map(str,result)) 编写程序,至少使用2种不同的方法计算100以内所有奇数的和。 x = [i for i in range(1,100) if i%2==1] print(sum(x)) print(sum(range(1,100)[::2])) 编写程序,实现分段函数计算,如下表所示。 1.什么是python? python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。 2.python的优点 创始人评价:简单、优雅、明确 简单体现在如果你的母语是英语,写python脚本就像写文章,很简单; 优雅体现在python的格式,比如缩进来确定代码块,可避免编程人员进行复杂的嵌套; 明确体现在解决问题的方法只有一种最优选项,而perl语言是每个问题有很多最优解,但不利于团队协作; 有强大的第三方库模块,需要实现一复杂功能,只需要调用现有的库,可快速实现功能。20多年的发展,各种库都已经完备,比如:邮件库,爬虫库...... 可跨平台移植,java有Java的虚拟机,python同样; 是一种面向对象的语言; 是一种可扩展的语言(与C,C++,Java结合) 3.python的缺点 代码执行速度慢,相比C语言,不过现在python的异步并发框架导致执行速度慢; python是开源的编程语言,代码不能加密,当然有相应的工具可以将python代码转换为exe的二进制可执行码,但是反解码也很容易; 4.python的使用 1)交互式使用 2)脚本使用 测试: /usr/bin/env python ##会直接读取你当前的python版本,然后执行 /usr/bin/python ##仅仅只会读取编写的版本 coding:utf-8 ##转译中文 coding=utf-8 encoding:utf-8 encoding=utf-8 5.字符编码: ACCII:1字节=8位,2^8=256 Unicode:2字节=16位,2^16=65536 英文-> 2字节中文-> 2字节 utf-8:英文->1 字节,中文->3字节 GB2312:2字节 内存读取:Unicode 存在硬盘:utf-8 字符的编码(encode): unicode->utf-8 ##都是2字节,提升效率 字符的解码(decode): utf-8->unicode ##英文1字节,中文3字节,节省空间 >>> name_unicode = u"hello" >>> type(name_unicode) Python练习题库 By 郑红波2017-12-19 一、填空题 1.Python标准库math中用来计算平方根的函数是__________。(sqrt) 2.在Python中__________表示空类型。(None) 3.列表、元组、字符串是Python的_________(有序无序)序列。(有序) 4.查看变量类型的Python内置函数是________________。(type()) 5.查看变量内存地址的Python内置函数是_________________。(id()) 6.表达式[1, 2, 3]*3的执行结果为______________________。([1, 2, 3, 1, 2, 3, 1, 2, 3]) 7.list(map(str, [1, 2, 3]))的执行结果为_____________________。([‘1’, ‘2’, ‘3’]) 8.已知 x = 3,并且id(x)的返回值为 0,那么执行语句 x += 6 之后,表达式 id(x) == 0 的值为___________。(False) 9.已知 x = 3,那么执行语句 x *= 6 之后,x的值为________________。(18) 10.表达式“[3] in [1, 2, 3, 4]”的值为________________。(False) 11.假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是______________________。([6, 7, 9, 11]) ([5 for 12.使用列表推导式生成包含10个数字5的列表,语句可以写为_______________。 i in range(10)]) 13.假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_____________________。(c = dict(zip(a, b))) 14.任意长度的Python列表、元组和字符串中最后一个元素的下标为________。(-1) 15.Python语句''.join(list('hello world!'))执行的结果是____________________。('hello world!') 16.转义字符’\n’的含义是___________________。(回车换行) 17.Python语句list(range(1,10,3))执行结果为___________________。([1, 4, 7]) 18.切片操作list(range(6))[::2]执行结果为________________。([0, 2, 4]) 19.表达式 'ab' in 'acbed' 的值为________。(False) 20.Python 语句 print(1, 2, 3, sep=':') 的输出结果为____________。(1:2:3) 21.表达式 int(4** 的值为____________。(2) 22.达式 sorted([111, 2, 33], key=lambda x: -len(str(x))) 的值为____________。([111, 33, 2]) 23.已知列表对象x = ['11', '2', '3'],则表达式 max(x) 的值为___________。('3') 24.表达式 min(['11', '2', '3']) 的值为_________________。('11') 25.已知列表对象x = ['11', '2', '3'],则表达式max(x, key=len) 的值为___________。('11') 26.语句 x = (3,) 执行后x的值为_______________。((3,)) 27.语句 x = (3) 执行后x的值为________________。(3) 28.已知 x = {1:2},那么执行语句 x[2] = 3之后,x的值为________________。({1: 2, 2: 3}) 29.字典对象的_____________方法返回字典中的“键-值对”列表。(items()) 30.使用列表推导式得到100以内所有能被13整除的数的代码可以写作___________________________________。([i for i in range(100) if i%13==0]) 31.表达式 3 ** 2 的值为_________。(9) 32.表达式 3 * 2的值为___________。(6) 33.已知x = [3, 5, 7],那么执行语句x[len(x):] = [1, 2]之后,x的值为 Python程序设计基础习题答案与分析 程昱 第1章基础知识 1.1 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。 1.2 为什么说Python采用的是基于值的内存管理模式? Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) 10417624 >>> y = 3 >>> id(y) 10417624 >>> y = 5 >>> id(y) 10417600 >>> id(x) 10417624 >>> x = [1, 2, 3, 1, 1, 2] >>> id(x[0])==id(x[3])==id(x[4]) True 1.3 解释Python中的运算符“/”和“//”的区别。 答: 在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。 实例001:数字组合 题目有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析遍历全部可能,把有重复的剃掉。 total=0 for i in range(1,5): for j in range(1,5): for k in range(1,5): if ((i!=j)and(j!=k)and(k!=i)): print(i,j,k) total+=1 print(total) 12345678 简便方法用itertools中的permutations即可。 import itertools sum2=0 a=[1,2,3,4] for i in itertools.permutations(a,3): print(i) sum2+=1 print(sum2) 12345678 实例002:“个税计算” 题目企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?程序分析分区间计算即可。 profit=int(input('Show me the money: ')) bonus=0 thresholds=[100000,100000,200000,200000,400000] rates=[0.1,0.075,0.05,0.03,0.015,0.01] for i in range(len(thresholds)): if profit<=thresholds[i]: bonus+=profit*rates[i] profit=0 break else: bonus+=thresholds[i]*rates[i] profit-=thresholds[i] bonus+=profit*rates[-1]Python基础知识笔试
Python A卷答案
Python程序设计课后习题答案-第一单元
python基础100练习题
《Python程序设计》习题与答案
python基础习题集
python 基础练习题
python练习题答案
python笔试题
python课后题及答案
Python程序设计习题与答案
Python基础+练习
python练习题-答案
《Python程序设计基础》习题答案与分析
python基础100练习题