Python小屋练手③编程自测题21-30

  1. 函数isPrime()接收一个大于等于2的正整数num,判断其是否为素数,是返回True,否则返回False。函数main接收一个大于等于2的正整数n,要求返回不超过n的最大素数。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def isPrime(num):
    if num == 2:
    return True
    for i in range(2, int(pow(num, 0.5))):
    if num % i == 0:
    return False
    return True
    def main(n):
    if n == 2:
    return n
    for i in range(n, 2, -1):
    if isPrime(i):
    return i
  2. 函数main接收两个正整数n和i,返回组合数C(n,i)的值,也就是从n个物体中任选i个物体有多少种选法,要求结果为整数。
    1
    2
    3
    4
    5
    6
    def main(n, i):
    for j in range(n-1, n-i, -1):
    n = n * j
    for j in range(1, i+1):
    n = n // j
    return n
  3. 函数main接收一个大于等于1的正整数n和一个介于[0,9]区间的正整数a,要求返回表达式a+aa+aaa+…+aa..aa前n项的和
    1
    2
    3
    4
    5
    6
    def main(n, a):
    retV, calV = 0, 0
    for i in range(0, n):
    calV = calV * 10 + a
    retV = retV + calV
    return retV
  4. 已知当前文件夹中文件data24.txt中有若干用英文半角逗号分隔的整数,函数main用来读取文件中的内容,把每个数字乘以10,返回这些乘积结果组成的列表。
    1
    2
    3
    4
    5
    def main():
    with open ('data24.txt', 'r') as f:
    cList = f.read().strip().split(',')
    return [int(x)*10 for x in cList]
    print(main())
  5. 函数main接收一个包含若干集合的列表lst,要求返回这些集合的并集
    1
    2
    3
    4
    5
    def main(lst):
    s = set(lst[0])
    for i in range(1, len(lst)):
    s = set.union(s, set(lst[i]))
    return s
  6. 函数main接收一个包含若干表示角度的实数的列表lst,要求返回这些实数转化为弧度之后的正弦值组成的新列表。
    1
    2
    3
    from math import sin, radians
    def main(lst):
    return [sin(radians(x)) for x in lst]
  7. 函数main接收6个整数,其中year1,month1,day1表示一个日期的年月日,year2,month2,day2表示另一个日期的年月日,要求返回这两个日期之间相差的天数(必须为0或者正数)
    1
    2
    3
    from datetime import date
    def main(year1, month1, day1, year2, month2, day2):
    return abs((date(year1,month1,day1)-date(year2,month2,day2)).days)
  8. 函数main接收一个表示年份的正整数year,要求判断是否为闰年,是闰年就返回字符串yes,否则返回no
    1
    2
    3
    4
    def main(year):
    if year%4 == 0 and year%100 != 0 or year%400 ==0:
    return 'yes'
    return 'no'
  9. 函数main接收一个单参数函数func和一个包含若干实数的列表lst,要求计算lst中的每个实数作为自变量时func的函数值,返回其中的最大值
    1
    2
    def main(func, lst):
    return max([func(x) for x in lst])
  10. 函数main接收一个包含若干正整数的元组tup,要求计算并返回这些整数的截尾平均数,也就是去掉一个最高分和最低分之后剩余数字的算术平均数,结果保留1位小数。
    1
    2
    def main(tup):
    return "{:.1f}".format((sum(tup) - max(tup) - min(tup)) / (len(tup) - 2))