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)

时间: 2025-01-06 05:22:16

python-趣味百题4的相关文章

Python趣味百题链接地址:http://www.cheemoedu.com/exercise_list/

python趣味百题:http://www.cheemoedu.com/exercise_list/ 汉诺塔问题 def move(a,b,c,n):#x原坐标 ,y终点坐标,z辅助坐标,n个数 if n==1: print'%s->%s:%s'%(a[0],b[0],a[-1]) b.append(b.pop()) print x,y,z return move(a,c,b,n-1) print '%s->%s:%s'%(a[0],b[0],a[-1]) b.append(a.pop())

Python 趣味百题

趣味整数 1 不重复的3位数 -易 2 水仙花数 -易 3 完全数 -中 4 相亲数 -中 5 黑洞数 -中 6 勾股数 -易 7 自守数 -易 8 3位反序数 -中 趣味素数 1 素数 -中 2 孪生素数 -中 3 金蝉素数 -中 4 可逆素数 -中 5 回文素数 -中 6 平方回文素数 -中 7 梅森尼数 -中 8 哥德巴赫猜想 -中 9 等差素数数列 -中 趣味图形 1 回型矩阵 -中 2 九九乘法表 -易 3 杨辉三角 -易 数学问题 1 天平秤物 -难 2 黑色星期五 -易 3 存钱问

Python趣味百题(初级篇) -- 1

51CTO上看到这个视频,自己试做一下:尾数前移:N尾数是6,把6移到最前面后是N的4倍 def move_last_num(): a = 1 while True: if 4 * (a * 10 + 6) == 6 * (10 ** len(str(a))) + a: print(a) return a else: a = a + 1 if __name__ == '__main__': n = move_last_num() N = n * 10 + 6 print(N) 水仙花数:一个n位

numpy百题冲关,pandas百题冲关, numpy-100库直接线上生成和训练,使用google云上notebook环境

numpy百题冲关,pandas百题冲关, numpy-100库直接线上生成和训练,使用google云上notebook环境 numpy后边涉及到矩阵和后期学习到的数学知识的实践 https://www.shiyanlou.com/courses/1090/learning/ pandas涉及到pandas相关应用.例如数据清洗等内容 https://www.shiyanlou.com/courses/1091 numpy-100环境 https://github.com/rougier/num

(c语法百题25)从 n 个数中挑选出最大的数

知识点: 数组灵活运用 for循环灵活运用 简单的算法 内容: 从 n 个数中挑选出最大的数 输入说明: 两行 第一行一个数n,表示总的个数 第二行共n个数字,用空格隔开. 输出说明: 一行,最大数 输入样例: 4 1 2 3 4 输出样例 : 4 #include <stdio.h>#define MAX 200; int main() { int a[MAX],n,i,t; scanf("%d",&n); for (i=0;i<n;i++) { scanf

(c语法百题21)四位整数

知识点: for语句,if语句灵活运用 内容: 编程找出四位整数 abcd 中满足下述关系的数: ( ab + cd )( ab + cd ) = abcd 输入说明: 没有输入 输出说明: 输出abcd,从小到大,一行一个. 1 #include <stdio.h> 2 int main() 3 { 4 int i,a,b; 5 for(i=1000;i<10000;i++) 6 { 7 a=i/100; 8 b=i%100; 9 if((a+b)*(a+b)==i) 10 { 11

(c语法百题12)优惠购物

知识点: if……else 的用法 内容: 节日期间,某超市举行优惠购物活动,规定:所购物品不超过1000元(含)时,按9.5折付款,如超过1000元,则超过部分按9折收费 输入说明: 一行 ,一个数,购物总额 输出说明: 一行 需付购物款(保留两位小数) 输入样例: 1200.58 输出样例 : 1130.52 1 #include <stdio.h> 2 int main() 3 { 4 float a,s; 5 scanf("%f",&a); 6 if (a&

(c语法百题11)输入一个数 ,输出其绝对值

知识点: if语句 内容: 输入一个数 ,输出其绝对值. 输入说明: 一行一个整数 输出说明: 一行一个整数 输入样例: -3 输出样例 : 3 #include <stdio.h> int main() { int a; scanf("%d",&a); if (a<0) { a=-a; } printf("%d\n",a); return 0; } (c语法百题11)输入一个数 ,输出其绝对值,布布扣,bubuko.com

(c语法百题13)符号函数

知识点: if……else……if……else的用法. 内容: 计算下列函数(符号函数): 1 (x>0) y= 0 (x=0) -1 (x<0) 输入说明: 一个整数 输出说明: 一个数字(1,0,或者-1) 输入样例: 12 输出样例: 1 1 #include <stdio.h> 2 int main() 3 { 4 int a; 5 scanf("%d",&a); 6 if (a>0) 7 { 8 printf("1\n"

(c语法百题15)算术运算

知识点: 法1: 字符与ASCLL码的转换熟练! if……else的用法 法2: switch的用法 注意 scanf("%f %f %c",&a,&b,&c);与scanf("%f%f%c",&a,&b,&c);的区别,中间有无空格. 内容: 输入两个数值(均不为零)及一个算术运算符,输出其运算的结果(保留两位小数). 输入说明: 一行,2个数字,一字符(+,-,*,/,分别代表加.减.乘.除 输出说明: 一行,一个