任务1:计算序列的平均值
【任务描述】
输入不少于6个的整数,删除一个最小值、删除一个最大值,输出余下整数的平均值(四舍五入保留到小数点后2位)。程序保存到s4A.py。
程序执行效果:
输入整数序列:2,3,1,6,9,5,8
输出:avg=4.80
【操作提示】
1、得到整数序列的方法
使用input函数得到输入的整数序列(字符串)后,可以利用eval函数将其转换为元组。如:s="2,3,1,6",则eval(s)的值为(2,3,1,6)。
2、平均值的计算
有二个思路:
(1)使用sorted函数对元组排序,得到排序后的列表。再对列表切片a[1:-1]求和(使用sum函数)后再计算平均值。数值个数可由len函数得到。
(2)利用max函数和min函数得到元组的最大、最小值,再将元组的元素和(使用sum函数)减去最大、最小值后再计算平均值。
任务2:生肖推算
【任务描述】
输入你的出生农历,输出你的生肖(即属相)。程序保存到s4B.py。
程序运行效果:
输入你的出生农历:2013
你的生肖:蛇
【操作提示】
十二生肖是根据农历年按照子(鼠)、丑(牛)、寅(虎)、卯(兔)、辰(龙)、巳(蛇)、午(马)、未(羊)、申(猴)、酉(鸡)、戌(狗)、亥(猪)的顺序每十二年一循环。只要知道任意一年的生肖,即可推算出其他年的生肖。
求解思路:
1、将十二生肖保存到一个元组中:
a=("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪")
2、2020年的生肖为"鼠"(在a的索引值为0),因此农历y年的生肖可根据y-2020除以12的余数推算出来。由于2020除以12的余数为4,因此,也可根据y-4除以12的余数推算出来。
任务3:推算日期是一年中的第几天
【任务描述】
输入日期,输出这一天是一年中的第几天。程序保存到s4C.py。
程序执行效果:
输入日期(年,月,日):2022,8,31
2022年8月31日是一年的第243天
【操作提示】
求解思路:
1、根据输入的字符串得到年月日数据(使用eval函数)y、m、d。
示例:s="2022,8,31",则y,m,d=eval(s)
2、利用列表存储1至11月中每月的天数:
a=[31,28,31,30,31,30,31,31,30,31,30]
3、如果是闰年,a[1]需修改为29。有二种修改方法:
(1)使用if表达式。示例:a[1]+=1 if A else 0。其中A为闰年条件。
(2)直接使用逻辑值。示例:a[1]+=A。其中A为闰年条件。
4、使用sum函数,计算m月前的各月天数的和s。
5、则s+d即为所求。
任务4:查找未重复的整数
【任务描述】
输入3个整数(其中有2个数相同),输出未重复的整数。程序保存到s4D.py。
程序执行效果:
输入3个整数:3,8,3
输出:整数8未重复
【操作提示】
1、利用eval函数可以将输入的全部整数(字符串)保存到一个元组s中。
2、查找未重复的整数有三个思路:
(1)利用if表达式(假定三个整数分别为x,y,z)
示例:m=x if y==z else (y if x==z else z)
(2)利用列表推导式
示例:(假定三个整数保存在元组a中)
b=[x for x in a if a.count(x)==1]
(3)利用异或运算
计算三个整数的异或(位运算),计算结果即为未重复的整数。这里利用了位的异或运算的4个性质:n^n=0;0^n=n;(a^b)^c=a^(b^c);a^b=b^a。
任务5:数值提取
【任务描述】
输入一个字符串,按原序输出这个字符串包含的全部整数,非数字字符均视为数据分隔符。程序保存到s4E.py。
程序运行效果:
输入字符串:aa23ui8puy90
输出:23,8,90
【操作提示】
基本思路:
1、利用列表递推式将字符串中的非数字部分替换为空格,得到列表。
例如:"uu16r8p"转换为列表[" "," ","1","6"," ","8"," "]。
2、使用字符串的内置函数join将列表元素连接成字符串:" 16 8 "。
3、使用字符串的内置函数split将" 16 8 "分割为列表:["16","8"]。
4、将列表元素连接成字符串后输出。

