1.题库:二月的天数
【问题描述】
二月通常有28天,但如果是闰年,二月就有29天。 请编写一个程序,根据用户输入的年份计算当年2月的天数并输出,其中,判断闰年请用自定义函数实现。 提示:能被400整除的是闰年,能被4整除但是不能被100整除的也是闰年
【输入形式】
整数(代表年份)
【输出形式】
In 【年份】 February has [29 or 28] days.
【样例输入】
2021
【样例输出】
In 2021 February has 28 days.
代码:
def leapyear(x):
x%400==0 or (x%4==0 and x%100!=0)
year=int(input())
if leapyear(year):
print("In %d February has 29 days."%year)
else:
print("In %d February has 28 days."%year)
2.题库:字符串位置查询
【问题描述】补充完整函数strrindex(s,t),其功能用于返回字符串t在字符串s中最右边出现的位置.该位置从0开始计数,如果s中不含有t,那么返回-1;在你编写的程序中,使用strrindex(s,t)函数,输入t,s,输出t在s最右边的位置.
【输入形式】控制台分行输入字符串s,t.
【输出形式】控制台输出一个整数,是t在s最右边出现的位置.
【样例输入】The strdup() function new returns a pointer to a new string
new
【样例输出】49
【样例说明】输入的第一行为字符串s,第二行为字符串t="new".t在s中出现过两次,其中在最右边出现的位置中"new"的第一个字符“n”;在s中所在的位置为49.
代码:
def strrindex(s,t):
pos = 0
pos1 = -1
while True:
pos = s.find(t,pos)
if pos == -1:
break
else:
pos1 = pos
pos = pos + len(t)
return pos1
if __name__ == "__main__":
s=input()
t=input()
print(strrindex(s,t))
3.题库:计算电费的函数
【问题描述】输入期初读数和期末读数(整数),输出电费=(期末读数-期初读数)*单价(电单价0.85元/度,电费保留两位小数)
【输入形式】一行两个整数,分别是期初读数和期末读数,逗号分隔
【输出形式】一个小数,即电费,保留两位小数
【样例输入】1201,1786
【样例输出】497.25
代码:
def costCompute(iStart, iEnd):
iConsume = iEnd - iStart
return iConsume*0.85
fElec1,fElec2=eval(input())
fee = costCompute(fElec1,fElec2)
print("%.2f"%fee)
4.题库:计算一组数的方差
【问题描述】统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。计算方差的公式如下:
其中S2就是所求的方差
【输入形式】一行整数(一个或多个),以空格分隔
【输出形式】一个小数,即所求方差,保留2位小数
【样例输入】1 3 2 4
【样例输出】1.25
代码:
def compute_variance(number2):
ave=sum(number2)/len(number2)
mySum=0
for x in number2:
mySum+=(x-ave)**2
variance=mySum/len(number2)
return variance
origin=input().split()
number1=[eval(x) for x in origin]
print("%.2f"%compute_variance(number1))
5.题库:统计留学生的人数
【问题描述】某大学中国学生的学号ID是8位,例如“20200001”,留学生的学号ID是9位 ,首位是大写"L",例如“L20200002”。现输入一组学号信息,请统计其中的留学生的人数。
【输入形式】一行字符(1个或多个学号),学号间以空格分隔
【输出形式】一个整数,即留学生人数
【样例输入】20200001 20200002 L20190001 20200001
【样例输出】1
代码:
def count_foreign(ids):
m=0
for x in ids:
x = str(x)
if x[0]=="L" and len(x)==9:
m += 1
return int(m)
origin=input().split()
print(count_foreign(origin))
6.题库:提取学号信息
【问题描述】给出一组学生的学号姓名信息。请提取并输出所有的学号信息(学号长度固定8位)。
【输入形式】一行字符。包括一个或多个学生的学号姓名,以空格分隔(同一个学生的学号和姓名之间没有空格)。例如:20200001张三 20200002李四 20200003王麻子
【输出形式】一行字符。从输入提取出的学号信息,学号间以空格分隔。 例如:20200001 20200002 20200003
【样例输入】20200001张三 20200002李四 20200003王麻子
【样例输出】20200001 20200002 20200003
代码:
def stuid(data2):
a=[]
for x in data2:
a.append(x[0:8])
return a
data1=input().split()
student_id=stuid(data1)
for x in student_id:
print(x,end=" ")
7.题库:学号信息修正
【问题描述】因录入员失误,把8位的学号输成了6位(缺失了前2位)。例如:190001的正确学号是20190001(正确学号的前4位是入学年份,只考虑学号前2位是20的情况)。现输入一组错误学号,学号间空格分隔,请输出一组正确的学号。
【输入形式】一行字符,包括一个或多个错误学号,空格分隔
【输出形式】一行字符,即所求的一个或多个正确学号,空格分隔
【样例输入】190001 190002 190003
【样例输出】20190001 20190002 20190003
代码:
def add_id(data2):
for x in range(len(data2)):
data2[x]=str(data2[x])
data2[x]="20"+data2[x]
return data2
data1=input().split()
result=add_id(data1)
for x in result:
print(x,end=" ")
8.题库:任意数量参数的函数
【问题描述】编写一个函数,可以接收任意数量的参数(0-3个)。参数的个数及参数值由用户输入,参数值都是正整数。函数的功能是返回所有参数的乘积,如果实际参数个数为0,返回-1。
【输入形式】一行正整数,以空格分隔。 第一个整数为参数个数,后面的整数为参数值。
【输出形式】一个整数,即所有参数的乘积或者-1
【样例输入】0
【样例输出】-1
【样例输入】1 1
【样例输入】1
【样例输入】2 2 5
【样例输入】10
【样例输入】3 2 5 6
【样例输入】60
代码:
def test(*para):
if len(para)==0:
return -1
p=1
for x in para:
p *= x
return p
origin=input().split()
origin=[eval(x) for x in origin]
number=origin[0] #获取参数个数
if number==0:
result=test()
elif number==1:
result=test(origin[1])
elif number==2:
result=test(origin[1],origin[2])
elif number==3:
result=test(origin[1],origin[2],origin[3])
print(result)
9.题库:带默认参数的函数
【问题描述】请填空完成以下程序,用户如果输入default, 输出2*2的*号组成的矩阵。用户如果输入一个正整数n,输出n*n的*号组成的矩阵
【输入形式】default或一个正整数n, 0 【输出形式】*号组成的矩阵, 一行的*号间用1个空格分隔, 行间无空行 【样例输入】default 【样例输出】 【样例输入】3 【样例输出】 代码: 10.题库:输出特定矩阵1 【问题描述】用户输入正整数n(1<=n<=9),输出n*n的特定矩阵,矩阵元素为小于等于n的正整数,其排列规律如下: 例如n=5,输出矩阵为:(行元素间隔1个空格,行间无空行)(请仔细分析矩阵元素和行号列号间的关系) 【输入形式】一个正整数, 值在[1,9]区间 【输出形式】n*n的特定矩阵, 其排列规律见输出示例 【样例输入】3 【样例输出】 代码: 11.题库:计算两个正整数各对应位乘积之和 【问题描述】输入两个正整数a,b,计算两个正整数各对应位乘积之和. 例如a=1123,b=405, 输出为19(1*0+1*4+2*0+3*5=19). 如果a,b不是正整数,输出error。 【输入形式】一行两个正整数,以1个空格分隔 【输出形式】一个正整数或者error 【样例输入】1123 405 【样例输出】19 【样例输入】-1123 405.6 【样例输出】error 【样例输入】1#123 405 【样例输出】error 代码: 12.题库:把姓名和成绩列表合并后按照成绩升序排列 【问题描述】 已知一个列表存放学生姓名,另外一个列表存放学生成绩。把姓名和成绩配对后,形成一个嵌套列表,按照成绩升序输出列表。 【输入形式】 第一行输入姓名,每个姓名用逗号分隔。第二行输入成绩,按照逗号分隔。 【输出形式】 直接用print输出列表 【样例输入】 tom,james,jack 89,34,78 【样例输出】 [['james', 34], ['jack', 78], ['tom', 89]] 【样例说明】 直接输出嵌套列表,姓名和成绩组合在一起。 代码:def matrix(n=2):
for x in range(int(n)):
print('* '*(int(n)))
number=input()
if number=="default":
matrix() #无实参调用自定义函数
else:
matrix(number) #有实参调用自定义函数
#第一种:
def print_matrix(n):
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append(min(i,j)+1)
matrix.append(row)
print(*matrix[i])
#第二种:
def print_matrix(n):
for i in range(n):
row = []
for j in range(n):
row.append(min(i,j)+1)
print(*row)
#第三种:
def print_matrix(n):
matrix = []
for i in range(n):
row = []
for j in range(n):
row.append(min(i,j)+1)
matrix.append(row)
for x in range(n):
print(matrix[i][x],end=' ')
print(' ')
number=eval(input())
print_matrix(number)
#第一种
def myFun(a,b):
if int(a)<=0 or int(b)<=0:
return 'error'
else:
a,b = str(a),str(b)
total = 0
if len(a)>len(b):
b = '0'*(len(a)-len(b)) + b
for x in range(len(a)):
every = int(a[x])*int(b[x])
total += every
return total
elif len(a)
a = input().split(',')
a = list(a)
b = eval(input())
m = []
for x in range(len(a)):
n = []
n.append(a[x])
n.append(b[x])
m.append(n)
m = dict(m)
m = sorted(m.items(),key=lambda a:a[1])
m = list(m)
for x in range(len(m)):
m[x] = list(m[x])
print(m)