Python小屋练手①编程自测题1-10

  1. 计算并返回任意正整数n的阶乘
    1
    2
    3
    4
    5
    def main(n):
    if n == 1:
    return n
    else:
    return n * main(n-1)
  2. 计算并返回任意多个证书的和
    1
    2
    def main(*args):
    return sum(args)
  3. 给定任意列表lst和一个任意值item,返回item在lst中第一次出现的位置,如果不存在则返回’不存在’
    1
    2
    3
    4
    5
    def main(lst, item):
    try:
    return lst.index(item)
    except:
    return '不存在'
  4. 返回包含原列表中大于或等于所有整数平均值的整数列表
    1
    2
    3
    def main(lst):
    avg = sum(lst) / len(lst)
    return [x for x in lst if x >= avg]
  5. 返回元组,第一个元素为p整除q的商,第二个元素为p对q的余数
    1
    2
    def main(p, q):
    return (p//q, p%q)
  6. 返回正整数num各位数字之和
    1
    2
    3
    4
    5
    6
    def main(num):
    retV = num % 10
    while num // 10 > 0:
    num = num // 10
    retV += num % 10
    return retV
  7. 返回一个新列表,包含原列表中的唯一元素,且保持原列表中首次出现的相对位置
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def main(lst):
    retList = []
    for i in range(0, len(lst)):
    try:
    index = retList.index(lst[i])
    continue
    except:
    retList.append(lst[i])
    return retList
  8. 返回一个新列表,包含原列表中每个字符串变成小写之后的字符串
    1
    2
    def main(lst):
    return [x.lower() for x in lst]
  9. 返回一个新列表,将原列表中每个字符串长度从大到小排列
    1
    2
    def main(lst):
    return sorted(lst, key=lambda x:len(x), reverse=True)
  10. 接收一个正整数n,返回n的阶乘,编写代码调用改函数,分别计算并输出20,、30、40的阶乘,不允许修改已有代码
    1
    2
    3
    4
    5
    6
    7
    from functools import reduce
    from operator import mul
    def main(n):
    return reduce(mul, range(1, n+1))
    print(main(20))
    print(main(30))
    print(main(40))