• python-趣味百题4


    1.赛场统分
    在编程竞赛中,有10个评委为参赛选手打分,分数为0-100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。
    思路:
    1).随机生成n个分数,放到列表s中
    2).找到最高分数和最低分数MaxScore,MinScore
    3).累加求和后减去最高分和最低分,除以n-2


    import random
    def averageScore(n):
      s = []
      for i in range(n):
        s.append(random.randint(0,100))
      print s

      maxScore = 0
      minScore = 100
      sumScore = 0
      for k in s:
        if maxScore < k:
         maxScore = k
        if minScore > k:
         minScore = k
        sumScore += k
      return float(sumScore - maxScore - minScore) / (n - 2)

    print averageScore(10)

    列表解析:
    def averageScore2(n):
      s = [random.randint(0,100) for i in range(n)]
      return float(sum(s) - max(s) - min(s)) / (n - 2)
    print averageScore2(10)

    2.回文数

    回文数:是一种数字,如98789,这个数字正着读倒读都是98789
    判断一个数是否是回文数
    思路:
    1).取出每一个位放入列表
    2).a[i] == a[-i-1],i范围0-len(a)/2
    def isPalindromeNum(n):
      a = []
      while n > 0:
        a.append(n % 10)
        n /= 10
      for i in range(len(a)/2):
        if a[i] != a[-i-1]:
        return False
      return True

    print isPalindromeNum(n)

    3.埃及分数式

    分子是1的分数,叫单位分数。古代埃及人在进行分数运算时,只使用分子是1的分数,因此这种分数也叫做埃及分数式或者叫单分子分数。
    要求随便输入一个真分数,将该分数分解为埃及分数式,如3/7=1/3+1/11+1/231
    思路:
    1).对于一个真分数a/b,找最接近的1/k
    2).如果a % b == 0 ,找到k = b/a
    3).如果a % b != 0 ,找到k = b/a+1


    def fun(a,b):
      k = b / a
      if b % a == 0:
        res = '1/%s' % k
      else:
        k += 1
        res = '1/%s + %s' % (k,fun(a * k - b,b * k))
      return res
    print fun(2,3)

  • 相关阅读:
    【HBase】+Java+批量增查数据
    【jmeter】+基础功能介绍
    【jmeter】+安装配置
    【IDEA】+激活
    【IDEA】+把A工程导入B工程中,A使用B中的类
    【Java】+字符中的字符替换
    【IDEA】+ 代码折叠与展开
    【Java】+获取当前方法名 or 类名
    【IDEA】+把自己做的小工具jar包上传到官方Maven仓库
    【IDEA】+将一个项目打成一个jar包,并在另一个项目中用这个jar包中的类(测试模块里的类没法用)
  • 原文地址:https://www.cnblogs.com/lucia8522/p/6808381.html
Copyright © 2020-2023  润新知