第八章作业

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

【样例输出】

第八章作业_第1张图片

代码:

def  matrix(n=2):  
    for x in range(int(n)):
        print('* '*(int(n)))

number=input()
if  number=="default":
    matrix()       #无实参调用自定义函数
else:    
    matrix(number) #有实参调用自定义函数

10.题库:输出特定矩阵1

【问题描述】用户输入正整数n(1<=n<=9),输出n*n的特定矩阵,矩阵元素为小于等于n的正整数,其排列规律如下:

例如n=5,输出矩阵为:(行元素间隔1个空格,行间无空行)(请仔细分析矩阵元素和行号列号间的关系)

【输入形式】一个正整数, 值在[1,9]区间

【输出形式】n*n的特定矩阵, 其排列规律见输出示例

【样例输入】3

【样例输出】

第八章作业_第2张图片

代码:

#第一种:
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)

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

代码:

#第一种
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)

12.题库:把姓名和成绩列表合并后按照成绩升序排列

【问题描述】

已知一个列表存放学生姓名,另外一个列表存放学生成绩。把姓名和成绩配对后,形成一个嵌套列表,按照成绩升序输出列表。

【输入形式】

第一行输入姓名,每个姓名用逗号分隔。第二行输入成绩,按照逗号分隔。

【输出形式】

直接用print输出列表

【样例输入】

tom,james,jack

89,34,78

【样例输出】

[['james', 34], ['jack', 78], ['tom', 89]]

【样例说明】

直接输出嵌套列表,姓名和成绩组合在一起。

代码:

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)

你可能感兴趣的:(python作业记录,python)