print("a是最大的数")
else:
print("c是最大的数")
3.使用Python编程,求1~100间所有偶数的和。
参考代码:
sum=0
forxinrange(1,101):
ifx%2==0:
print(x)
sum=sum+x
print("累加和是:
",sum)
4.用Python编写程序,输入一年份,判断该年份是否是闰年并输出结果。
注:
凡符合下面两个条件之一的年份是闰年。
(1)能被4整除但不能被100整除。
(2)能被400整除。
参考代码:
year=int(input("Pleaseentertheyear:
"))
if((year%4==0andyear%100!
=0)or(year%400==0)):
加个括号即可
print(year,"isaleapyear.")
else:
print(year,"isnotaleapyear.")
5.用Python编程,假设一年期定期利率为3.25%,计算一下需要过多少年,一万元的一年定期存款连本带息能翻番?
参考代码:
cunkuan=10000#本金10000元
years=0
whilecunkuan<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):
'))
ifscore>100:
grade="输入错误!
"
elifscore>=90:
grade='A'
elifscore>=80:
grade='B'
elifscore>=70:
无需写小于什么什么的因为elif就已经是除了这个之外的了
grade='C'
elifscore>=60:
grade='D'
elifscore>=0:
grade='E'
else:
grade="输入错误!
"
print(grade)
7.猜数游戏。
预设一个0~9之间的整数,让用户猜一猜并输入所猜的数,如果大于预设的数,显示“太大”;小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜!
你猜中了!
”。
参考答案:
num=7
whileTrue:
guess=int(input('请输入你猜的数(0~9):
'))
ifguess==num:
print("恭喜!
你猜中了!
")
break;
elifguess>num:
print("太大")
else:
print("太小")
8.输入一个数,判断这个数是否为素数,并输出判断结果。
(所谓素数,是指除了1和该数本身之外,不能被其它任何整数整除的数。
下图为参考流程图)
参考答案:
importmath
n=int(input("请输入一个数:
"))
x=int(math.sqrt(n))
i,w=2,0
foriinrange(2,x+1):
ifn%i==0:
w=1
ifw==1:
print(n,"不是素数。
")
else:
print(n,"是素数。
")
或
importmath
n=int(input('请输入一个数:
'))
i,w=2,0
whilei<=int(math.sqrt(n))andw==0:
ifn%i==0:
w=1
break
else:
i=i+1
ifw==0:
print(n,"是素数!
")
else:
print(n,"不是素数!
")
或
importmath
n=int(input('请输入一个数:
'))
i=2
whilei<=int(math.sqrt(n)):
ifn%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
forainrange(2,m+1):
s=a
L1=[]
foriinrange(1,a):
ifa%i==0:
s-=i
L1.append(i)
ifs==0:
print("完数:
%d,因子包括:
"%a,end="")
forjinrange(1,len(L1)):
为啥不是0开头的
print("%d"%L1[j],end=",")
print("\n")
10.编程,解决猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想吃时,只剩下一个桃子了。
求第一天共摘多少个桃子。
(迭代法)
参考答案:
day=9
x=1
whileday>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()
foriinrange(len(L1)):
L1[i]=int(L1[i])
L2[i]=int(L2[i])
maxVal=L1[0]可用max.(L1)
maxDay=0
minVal=L2[0]
minDay=0
foriinrange(1,len(L1)):
ifL1[i]>maxVal:
maxVal=L1[i]
maxDay=i
ifL2[i]minVal=L2[i]
minDay=i
print("这周第"+str(maxDay+1)+"天最热,最高"+str(maxVal)+"摄氏度")
print("这周第"+str(minDay+1)+"天最冷,最低"+str(minVal)+"摄氏度")
2.在上题的基础上,求出全周的平均气温(这一周各天平均温度的平均值,取整数)。
假设在气象意义上,入春标准是连续5天日均气温超过10℃,根据这一周的气象数据是否能判断上海已经入春?
参考答案:
flname="temp.txt"
f=open(flname)
ht=(f.readline()).strip()
L1=list(ht.split(','))
lt=(f.readline()).strip()
L2=list(lt.split(','))
f.close()不要忘了
L3=[]
foriinrange(len(L1)):
L1[i]=int(L1[i])
L2[i]=int(L2[i])
L3.append(int((L1[i]+L2[i])/2))屌炸天
sum=0
k=0
foriinrange(len(L3)):
sum=sum+L3[i]
ifL3[i]>=10:
k+=1
else:
k=0这还要写吗
avg=int(sum/len(L3))
print("周平均气温为:
",avg)
ifk>=5:
print("上海这周已入春。
")
else:
print("上海这周未入春。
")
3.当前目录下有一个文件名为score1.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、平时成绩、期末成绩三列。
请根据平时成绩占40%,期末成绩占60%的比例计算总评成绩(取整数),并分学号、总评成绩两列写入另一文件score2.txt。
同时在屏幕上输出学生总人数,按总评成绩计90以上、80~89、70~79、60~69、60分以下各成绩档的人数和班级总平均分(取整数)。
参考答案:
f=open("score1.txt")
a=f.readline()
line=(f.readline()).strip()
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)
if90L2[0]+=1
eliff_score>=80:
L2[1]+=1
eliff_score>=70:
L2[2]+=1
eliff_score>=60:
L2[3]+=1
else:
L2[4]+=1
count+=1
sum+=f_score
f2.write(str(f_score)+"\n")
line=(f.readline()).strip()
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()
dela[0]
L3=[]
forlineina:
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");
forL2inL3:
if90c[0]+=1
elifL2[1]>=80:
c[1]+=1
elifL2[1]>=70:
c[2]+=1
elifL2[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.txt,其内容包含小写字母和大写字母。
请将该文件复制到另一文件sample12_copy.txt,并将原文件中的小写字母全部转换为大写字母,其余格式均不变。
参考答案:
f=open("sample12.txt")
L1=f.readlines()
f2=open("sample12_copy.txt",'w')
forlineinL1:
f2.write(line.upper())
f.close()
f2.close()
5.当前目录下有一个文件名为class_score.txt的文本文件,存放着某班学生的学号、数学课成绩(第2列)和语文课成绩(第3列)。
请编程完成下列要求:
(1)分别求这个班数学和语文的平均分(保留1位小数)并输出。
(2)找出两门课都不及格(<60)的学生,输出他们的学号和各科成绩。
(3)找出两门课的平均分在90分以上的学生,输出他们的学号和各科成绩。
建议用三个函数分别实现以上要求。
参考答案:
defoutput_avg(L):
sum1,sum2=0,0
forlineinL:
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))
defoutput_notpass(L):
print("两门课均不及格的学生学号及数学、语文成绩为:
")
forlineinL:
L1=line.strip().split()
ifint(L1[1])<60andint(L1[2])<60:
print(line)
defoutput_good(L):
print("两门课平均分在90分以上的学生学号及数学、语文成绩为:
")
forlineinL:
L1=line.strip().split()
f_score=round((int(L1[1])+int(L1[2]))/2)
iff_score>=90:
print(line)
f=open("class_score.txt")
L=f.readlines()
delL[0]
output_avg(L)
output_notpass(L)
output_good(L)
三.算法分析与设计部分
1.编程,从键盘接收若干个整数(直接输入回车表示结束),用冒泡法或选择法进行排序(从小到大),并将排序结果在屏幕上输出。
参考答案:
选择排序:
defbubble(List):
num=len(List)
foriinrange(0,num-1):
forjinrange(i+1,num):
#对应列表中的位置
ifList[i]>List[j]:
List[i],List[j]=List[j],List[i]
returnList
L1=[]
num_str=input('请输入一个需排序的整数:
')
whilelen(num_str)!
=0:
L1.append(int(num_str))
num_str=input('请输入一个需排序的整数:
')
print('排序后结果:
',bubble(L1))
或
冒泡排序:
defbubble(List):
foriinrange(0,len(List)-1):
forjinrange(len(List)-1,i,-1):
ifList[j-1]>List[j]:
List[j-1],List[j]=List[j],List[j-1]
returnList
L1=[]
num_str=input('请输入一个需排序的整数:
')
whilelen(num_str)!
=0:
L1.append(int(num_str))
num_str=input('请输入一个需排序的整数:
')
print('排序后结果:
',bubble(L1))
2.当前目录下有一个文件名为score2.txt的文本文件,存放着某班学生的计算机课成绩,共有学号、总评成绩两列。
请查找最高分和最低分的学生,并在屏幕上显示其学号和成绩。
参考答案:
f=open("score2.txt")
a=f.readlines()
dela[0]
L2=[]
L3=[]
forlineina:
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
foriinrange(1,len(L3)):
ifL3[i]>maxScore:
maxScore=L3[i]
maxIndex=i
ifL3[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("请输入一行字符:
")
foriinrange(len(s)):
if(s[i]>='a'ands[i]<='z')or(s[i]>='A'ands[i]<='Z'):
letters+=1
elifs[i]=='':
space+=1
elifs[i]>='0'ands[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
foriinp:
if((i<='Z'andi>='A')or(i<='z'andi>='a')):
a+=1
elif(i==''):
b+=1
elif(i>='0'andi<='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('inputastring:
')
forcins:
ifc.isalpha():
letter+=1
elifc.isspace():
space+=1
elifc.isdigit():
digit+=1
else:
other+=1
print("字母数:
%d\n空格数:
%d\n数字数:
%d\n其他字符数:
%d\n"%(letter,space,digit,other))
四.函数部分:
1.写一判素数的函数,在主函数中输入一个整数,调用该函数进行判断并输出结果。
参考答案:
defshushu(n):
importmath
i,w=2,0
ifn<=1:
w=1
whilei<=int(math.sqrt(n))andw==0:
ifn%i==0:
w=1
break
else:
i=i+1
returnw
n=int(input('n='))
ifshushu(n)==0:
print(n,"是素数!
")
else:
print(n,"不是素数!
")
2.当前目录下有一个文件名为score3.txt的文本文件,存放着某班学生的学号和其两门专业课的成绩。
分别用函数实现以下功能:
(1)定义函数function1,计算每个学生的平均分(取整数),并将所有学生的学号和平均分在屏幕上输出。
(函数参数为要读取文件的文件名)
deffunction1(flname):
#函数代码
function1("c:
\\test\\score3.txt")
参考答案:
deffunction1(flname):
f=open(flname)
a=f.readlines()
dela[0]
L3=[]
forlineina:
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("学号平均分")
forL2inL3:
print(L2[0]+""+str(L2[1]))
(2)定义函数calAvg(),计算某一门课程的平均分(函数参数为某门课成绩对应的列表名,返回值为该门课的平均分)
defcalAvg(L):
#函数代码
f=open("c:
\\test\\score3.txt")
a=f.readlines()
dela[0]
L2=[]
L3=