第1关:表达式计算
任务描述
####编程要求 直接在print_()
中填入正确的表达式,输出该题的答案,答案占一行,无需空行!
参考答案:
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
-
- #请在print_函数中输入正确的表达式
- #**********Program**********
- print_(1.01**3+0.99**2>1.01)
- #********** End **********
第2关:基本数学函数
任务描述
编程要求
右侧代码编辑区已设置好具体输出格式,你只需要在指定位置填写python代码即可。
参考答案:
- from math import *
-
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
-
- #请在print_语句内完成题目所需的表达式
- #**********Program**********
- print_(sinh(0.25))
-
- print_((e**0.25-e**-0.25)/2)
- #********** End **********
第3关:地球上两点距离计算
任务描述
编程要求
输出格式已经在print_()
函数中进行了定义,完成计算后调用print_()
函数进行结果的输出!
参考答案:
- from math import *
-
- def print_(x):
- if type(x) == float:
- print("%.4f" % x)
- else:
- print(x)
-
- for (x1,y1,x2,y2) in [(48.87,-2.33,37.8,-122.4),(40.89,116.50,37.8,-122.4),(40.89,116.50,48.87,-2.33)]:
- # 请在下面编写代码
- x1=radians(x1)
- y1=radians(y1)
- x2=radians(x2)
- y2=radians(y2)
- dist=69.1105*1.609*degrees(acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2)))
-
- # 请不要修改下面的代码
- print_(dist)
第4关:找最大最小数
任务描述
裁判对每个孩子的表现给一个分数(最高分100,最低分0)。总评分的计算规则是:去掉最高分(如果有一个以上的最高分,只去掉一个),去掉最低分(如果有一个以上的最低分,只去掉一个),剩下分数的平均分作为总评分。编程输出总评分(四舍五入,保留2位小数)。 例如: 5个分数分别为99、96、93、80、94,则程序输出为:94.33 5个分数分别为42, 71, 70, 77, 7,则程序输出为:61.0 请在program
和end
之间编写ave( )
函数用于实现对平均分的计算,返回的结果建议用round()
函数进行处理,结果保留2位小数。 round()
用法: a = 12.4584 b = round(a,2) 则b = 12.46 a = 12.000 b = round(a,2) 则b = 12.0
编程要求
对于计算结果,保留两位小数,如果后两位均为0,则输出一个0即可,如上述的61.0!
参考答案:
- from math import *
- import random
-
- #请完成此函数,求解平均分(保留两位小数,若最后一位小数为0,可忽略)
- #**********Program**********
- def ave(list0):
- list0.sort()
- del list0[0]
- del list0[3]
- return round(sum(list0)/3.00,2)
- #********** End **********
-
- #请不要修改下面的代码
- if __name__ == '__main__':
- for score_list in [[65, 4, 94, 71, 0], [99, 27, 76, 88, 68],
- [42, 71, 70, 77, 7], [70, 72, 11, 69,36],
- [3, 53, 3, 54, 29]]:
- score = ave(score_list)
- print(score)
第5关:整数的各位数字处理
任务描述
函数count_digit统计一个非负整数n中某个数字d出现的次数并返回,例如12335中3出现的次数为2,7出现的次数为0。 实现该函数。
编程要求
具体输出格式已经设定好,只需要设定函数返回值即可。 count_digit 统计n中数字d的出现次数,例如出现0次则返回0,出现100次则返回100。
参考答案:
- from math import *
- import random
- import sys
- #请完成此函数,统计一个非负整数n中数字d出现的次数并返回
- #**********Program**********
- def count_digit(n,d):
- n=str(n)
- d=str(d)
- return n.count(d)
- #********** End **********
-
- #请不要修改下面的代码
- if __name__ == '__main__':
- n = [
- 8779412003529881091, 6119903205806761585, 8337567880965015796,
- 7251609318673317735, 1163206447991023362
- ]
- d = [7, 4, 6, 9, 3]
- for i in range(0, 5):
- num = count_digit(n[i], d[i])
- print(num)
第6关:身份证合法性判断
任务描述
一个合法的身份证号码由17位地区、生日编号和顺序编号加1位校验码(第18位)组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10, 5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系通过Z值获取对应的校验码M的值: Z:0 1 2 3 4 5 6 7 8 9 10 M:1 0 X 9 8 7 6 5 4 3 2 编写函数valid判定一个身份证号码是否有效,有效则返回1,否则返回0。例如”650402199007055298”是一个有效的身份证号,返回1;而”53072419770421191”则不是,则返回0. 实现该函数。
编程要求
具体输出格式已经设定好,只需要函数返回值即可。 函数valid根据传入身份证号进行判断,若有效则返回1,否则返回0.
参考答案:
- from math import *
-
- #请完成此函数,判定一个身份证号码是否有效,有效则返回1,否则返回0
- #**********Program**********
- def valid(ID):
- str0=ID[0:17]
- if len(ID)!=18 or not str0.isdigit():
- return 0
- xiaoyan=0
- list0=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
- for i in range(17):
- xiaoyan+=int(str0[i])*list0[i]
- Z=xiaoyan%11
- if Z==0 and Z==1:
- M=str(1-Z)
- elif Z==2:
- M='X'
- else:
- M=str(12-Z)
- if M==ID[17]:
- return 1
- else:
- return 0
- #********** End **********
-
- #请不要修改下面的代码
- if __name__ == '__main__':
- ID_list = [
- '330702196302260412X', '34052419800101001X', '340524198001010011',
- '3307021963X226041X', '33070219630226041X'
- ]
- for i in range(0, 5):
- print(valid(ID_list[i]))
第7关:字符串处理
任务描述
编写函数count统计以‘#’结束的字符串中每种数字字符的个数和其它字符的个数。函数参数str是以‘#’结束的字符串,统计结果存入数组c中,字符0-9的个数分别存入c[0]-c[9]中,其它字符个数存入c[10]中。如”123hgasf342240#”中数字0-9的个数分别为1,1,3,2,2,0,0,0,0,0个,其它字符个数为5。 完成函数count的编写。
编程要求
输入字符串为”123hgasf342240#”,则输出为统计结果列表: [1,1,3,2,2,0,0,0,0,0]
参考答案:
- from math import *
- import random
- import sys
- #请完成此函数,统计以‘#’结束的字符串中每种数字字符的个数和其它字符的个数
- #**********Program**********
- def count(str0,c):
- for i in range(len(str0)-1):
- if str0[i].isdigit():
- c[int(str0[i])]+=1
- else:
- c[10]+=1
- return
- #********** End **********
-
- #请不要修改下面的代码
- if __name__ == '__main__':
- str_list = [
- 'C,/7>?2C650>?#', 'F=C?D(,27,.&38$#', '/B738CF8>F1E&>D#',
- '%/<9&=,55$3#', '+=7$+C=/A&#'
- ]
- for i in range(0, 5):
- c = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
- count(str_list[i], c)
- print(c)
第8关:二维数组处理
任务描述
用Python的列表存储了二维实数数组,编程输出最大的值以及该元素所在位置(如果有多个元素的值均为最大,则输出第一个最大元素的位置)。 例如:二维实数数组[[1, 2, 3, 4, 5], [6, 7, 8, 9,100]] 最大的值是100,所在位置为[1][4]。
编程要求
输出格式如下: 100 1 4
说明:最大值占一行;第二行依次输出元素的行号,空格,列号。
参考答案:
- from math import *
- import random
- import sys
-
- if __name__ == '__main__':
- a = [[-96.75406736839875, 112.7935088305457, -233.3428136002151, 47.829216619513204],
- [-256.7530027202153, 162.72640239449578, 166.09967176773966, 107.14889508344174],
- [69.43600990883988, 37.27554983543564, 139.29912042759844, 126.88684145170981],
- [275.9968464170189, 102.96998985338536, 278.03988044640823, -185.49830120316162],
- [-232.95272551814065, 122.52826367566519, 289.4673734003288, -299.829647403839],
- [217.0741605740095, 1.1891511881970018, 183.20279885926897, 283.7484913702709],
- [-0.2667355625993082, -194.83738998408109, 32.12300723531075, 275.9465332547651],
- [-102.71352700566422, 95.17176558146599, -141.43257927047773, 173.30335198695275],
- [-124.54607782277029, -137.4438601733702, 237.34335287349904, -5.671864434324959]]
-
- #计算最大值以及对应的坐标
- #**********Program**********
- max=0
- r_index,c_index=-1,-1
- for i in range(len(a)):
- for j in range(4):
- if a[i][j]>max:
- max=a[i][j]
- r_index=i
- c_index=j
- #********** End **********
- print(max)
- print(r_index, c_index)
第9关:体重指数计算
任务描述
计算体重指数。 ######男女标准体重有点不一样: 男士标准体重=(身高cm-100)0.9(KG), 女士标准体重=(身高cm-100)*0.9(KG)-2.5(KG) ######判断体重的标准是(男女一样): 正常体重:标准体重加减10%(含等于) 轻度胖瘦:标准体重加减(10%,20%](含20%,不含10%) 中度胖瘦:标准体重加减(20%,40%](含40%,不含20%) 重度胖瘦:标准体重加减超过40%(不含40%) *函数f根据一个人的信息计算体重指数**。其返回值为: 0 – 正常体重;1 – 轻度胖;-1 – 轻度瘦;2 – 中 度胖; -2 – 中度瘦;3 – 重度胖;-3 – 重度瘦。 例如: 一个60kg的176cm的男性为轻度瘦,返回-1; 一个60kg的176cm的女性则为正常体重,返回0。 完成函数f的编写,输入一个人的性别(0:女性 1:男性),身高,体重,返回其体重指数。
编程要求
输出格式已经写好,只需要设定函数返回值即可。 函数f返回体重指数,以0,1,2,3,-1,-2,-3表示。 一个60kg的176cm的男性为轻度瘦,返回-1; 一个60kg的176cm的女性则为正常体重,返回0。
参考答案:
- from math import *
- import random
-
- #请完成此函数,根据一个人的信息计算体重指数
- #**********Program**********
- def f(sex,height,weight):
- if sex==1:
- bztz=(height-100)*0.9
- elif sex==0:
- bztz=(height-100)*0.9-2.5
- jiajian=(weight-bztz)/bztz
- if abs(jiajian)<=0.1:
- return 0
-
- if jiajian<0:
- i=-1
- else:
- i=1
-
- if 0.1<abs(jiajian)<=0.2:
- return 1*i
- elif 0.2<abs(jiajian)<=0.4:
- return 2*i
- else:
- return 3*i
- #********** End **********
-
- #请不要修改下面的代码
- if __name__ == '__main__':
- total = [[1, 164.62, 45.95], [0, 185.35, 69.06], [0, 170.0, 66.6], [1, 163.81, 60.0], [0, 186.61, 65.55]]
- for i in range(0, 5):
- print(f(total[i][0],total[i][1],total[i][2]))
————————分割线————————
本人python小白一枚,对python中的许多方法,函数的使用还不熟练,像第9关,应该还可以再改进,如还有什么不妥之处,还请大佬指点!