1.统计问题

问题描述

求解一组不定长数据的基本统计值,即平均值、标准差、中位数。

一组数据表示为S=s0, s1, …, sn-1,其算术平均值、标准差分别表示为:

由于平均数、标准差和中位数是三个不同的计算目标,使用函数方式编写计算程序。

  • getNum()函数从用户输入获得数据;
  • mean()函数计算平均值;
  • dev()函数计算标准差;
  • median()函数计算中位数

代码 

# text36.py
from math import sqrtdef getNum():  # 获取用户输入nums = []iNumStr = input("请输入数字(直接输入回车退出): ")while iNumStr != "":nums.append(eval(iNumStr))iNumStr = input("请输入数字(直接输入回车退出): ")return numsdef mean(numbers):  # 计算平均值s = 0.0for num in numbers:s = s + numreturn s / len(numbers)def dev(numbers, mean):  # 计算方差sdev = 0.0for num in numbers:sdev = sdev + (num - mean)**2return sqrt(sdev / (len(numbers)-1))def median(numbers):  # 计算中位数sorted(numbers)size = len(numbers)if size % 2 == 0:med = (numbers[size//2-1] + numbers[size//2])/2else:med = numbers[size//2]return medn = getNum()  # 主体函数
m = mean(n)
print("平均值:{},方差:{:.2},中位数:{}.".format(m, dev(n, m), median(n)))

程序先后调用getNum()、mean()、dev()和median()函数。利用函数的模块化设计能够复用代码并增加代码的可读性。每个函数内部都采用了简单的语句。

列表在实现基本数据统计时发挥了重要作用,表现在:

  • 列表是一个动态长度的数据结构,可以根据需求增减少元素;
  • 列表的一系列方法或操作符为计算提供了简单的元素运算手段;
  • 列表提供了对每个元素的简单访问方式及所有元素的遍历方式。

2.识别同构数

问题描述

  1. 程序功能:随机输入若干个不超过2位的正整数(输入-1表示输入结束),找出其中所有同构数并排序输出。(正整数n若是它平方数的尾部,则称n为同构数。如5的平方数是25,且5是25的尾部,那么5就是一个同构数。同理,25的平方为625,25也是同构数)。
  2. 输入输出要求如下: 输入时要求首先判断输入数位数(1-2位)是否正确,判断输入内容是否是数字,(提示:判断一个字符串是否是数字字符可用字符串的isdigit()方法)然后判断是否是同构数, 输出的同构数要求从小到大排序,结果显示在一行,各同构数间空格分隔。(提示:排序可用列表的sort()方法)
  3. 程序运行结果如下图所示:

代码

import mathdef isTGS(n):s = str(n*n)if n == 1:return Trueelif len(s) > 3:if s[-2:] == str(n):return Trueelse:return Falseelse:if s[1:] == str(n):return Trueelse:return Falsedef getTGS():L = []s = input().strip()while s != "-1":if 0 < len(s) <= 2 and s.isdigit():n = int(s)if n > 0 and isTGS(n):L.append(n)s = input().strip()return Ldef main():L = getTGS()if len(L) == 0:print("没有同构数")else:L.sort()print("同构数有:", end="")L = [str(i) for i in L]print(' '.join(L), end=" ")if __name__ == '__main__':main()

3.四位玫瑰数

描述

四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

请输出区间【a,b】之间所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行。a,b为4位数,且a小于等于b。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

代码

import math
def isRose(n):#判断n是否是四位玫瑰数,是返回True,不是返回Falsea=n//1000b=n//100%10c=n//10%10d=n%10if math.pow(a,4)+math.pow(b,4)+math.pow(c,4)+math.pow(d,4)==n:return Trueelse:return Falsedef checkNumber(n):#检查字符串n是不是构成4位数,是返回整数n,不是返回-1if n[0]!=0 and len(n)==4:return int(n)else:return -1def printRose(a,b):#输出区间【a,b】之间所有的四位玫瑰数,不存在输出提示信息n=0for num in range(a,b+1):if isRose(num)==True:print(num)n=n+1if n==0:print("此区间没有四位玫瑰数")def main():a=checkNumber(input())if a==-1:print("第一个数不是四位数")returnb=checkNumber(input())if b==-1:print("第二个数不是四位数")returnif a<=b:printRose(a,b)else:printRose(b,a)if __name__ == '__main__':main()

4.进制转换

描述

输入十进制整数和欲转换的进制数r,将十进制转换为r进制数。(r>=2)‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

编程思想为:调用函数DToR,逐位求模。若该位为大于9的数,则以大写字母代表(提示:大写字母'A'的ASCII码值等于65);若该位为9以下的数,则转换为字符格式。从低位至高位连接字符串并返回结果。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

运行示例如下:先输入一个十进制整数,再输入进制,输出结果。当输入q程序结束。

代码

def DToR(m, r):t = ""while m != 0 and r != 0:c = m % r  # 求模if (c > 9):t = chr(c-10+65)+telse:t = str(c)+tm = m // r  # 整除return twhile True:ipt = input()if ipt == 'q':breakr = int(input())rst = DToR(int(ipt), r)print("将%s转换为%d进制的结果为:%s" % (ipt, r, rst))

5.完数

描述

如果一个数除该数本身之外的所有因子之和等于这个数,该数是完数。例如:6=1+2+3,6是完数。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
定义判断完数的函数isPerfect(),如果是返回True,不是返回False‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬
输入一个数,调用该函数判断是否为完数,如果是输出“是完数”,如果不是输出“不是完数”

输入输出示例

‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

输入 输出
示例 

6

7

6是完数

7不是完数

代码

# 函数功能:判断n是否为完数
# 如果是返回Ture,否则返回False
def isPerfect(n):sum = 0for i in range(1, n):if n % i == 0:sum += iif sum == n:return Trueelse:return False# 输入一个值,调用函数判断
n = eval(input())
if isPerfect(n) == True:print("{}是完数".format(n))
else:print("{}不是完数".format(n))

6.计算几何形状的表面积与体积

描述‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

输入一个表示几何形状名称的字符串,再在一行内输入这种图形的数据,根据表示名称的字符串选择合适的公式计算几何形状的(表)面积和体积,若为二维图形,只计算面积,若为三维图形,计算其表面积与体积,结果严格保留2位小数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬

模板程序给出了长方形和长方体的代码,参考这些代码,完成圆形、球、圆柱体、圆锥和正三棱柱这5种形状的计算程序。

输入输出示例

示例 输入 输出

示例1

长方形

4

8

长方形的面积为32.00
示例2

长方体

4

8

9

长方体的表面积为280.00, 体积为288.00
示例3

圆形

88

圆形的面积为24328.49
示例4

88

球的表面积为97313.97, 体积为2854543.24  
示例5

圆柱体

88

88

圆柱体的表面积为97313.97, 体积为2140907.43  
示例6

圆锥

88

88

圆锥的表面积为58734.18, 体积为713635.81

示例7

正三棱柱

88

88

正三棱柱的表面积为29938.50, 体积为295086.03

代码

# 计算几何形状的表面积和体积
import mathdef type_judge(geom_type):"""接收一个字符串为参数,根据参数判断几何体类型若输入为二维图形,计算其面积若输入为三维图形,计算其面积与体积根据类型调用不同的函数进行运算。"""if geom_type == '长方形':length, width = map(float, input().split())  # 空格分隔的输入切分为列表并映射为浮点数return square(length, width)                 # 调用函数计算长方形面积elif geom_type == '长方体':length, width, height = map(float, input().split())  # 空格分隔的输入切分为列表并映射为浮点数return cube(length, width, height)                   # 调用函数计算长方体表面积与体积elif geom_type == '圆形':radius = float(input())  # 输入转为浮点数return circle(radius)    # 调用函数计算圆面积elif geom_type == '球':radius = float(input())  # 输入转为浮点数return sphere(radius)    # 调用函数计算球表面积与体积elif geom_type == '圆柱体':radius, height = map(float, input().split())  # 空格分隔的输入切分为列表并映射为浮点数return cylinder(radius, height)  # 调用函数计算圆柱体表面积与体积elif geom_type == '圆锥':radius, height = map(float, input().split())  # 空格分隔的输入切分为列表并映射为浮点数return cone(radius, height)  # 调用函数计算圆锥表面积与体积elif geom_type == '正三棱柱':side, height = map(float, input().split())  # 空格分隔的输入切分为列表并映射为浮点数return tri_prism(side, height)  # 调用函数计算正三菱住表面积与体积else:return f'未找到{geom_type}计算方法'def square(length, width):"""计算长方形的面积"""area_of_square = length * widthreturn f'长方形的面积为{area_of_square:.2f}'def cube(length, width, height):"""计算长方体的表面积和体积"""area_of_cube = length * width * 2 + width * height * 2 + length * height * 2volume_of_cube = length * width * heightreturn f'长方体的表面积为{area_of_cube:.2f}, 体积为{volume_of_cube:.2f}'def circle(radius):"""接收圆的半径,返回圆形的面积,圆周率用math.pi"""area_of_circle = math.pi*math.pow(radius, 2)return f'圆形的面积为{area_of_circle:.2f}'def sphere(radius):"""接收球的半径,返回球的表面积和体积,圆周率用math.pi"""area_of_sphere = 4*math.pi*math.pow(radius, 2)volume_of_sphere = math.pi*math.pow(radius, 3)*4/3return f'球的表面积为{area_of_sphere:.2f}, 体积为{volume_of_sphere:.2f}'def cylinder(radius, height):"""接收圆柱体的底面半径和高,返回圆柱体的表面积和体积,圆周率用math.pi"""area_of_cylinder = 2*math.pi*radius*(radius+height)volume_of_cylinder = math.pi*radius*radius*heightreturn f'圆柱体的表面积为{area_of_cylinder:.2f}, 体积为{volume_of_cylinder:.2f}'def cone(radius, height):"""接收圆锥的底面半径和高,返回圆锥的表面积和体积,圆周率用math.pi"""area_of_cone = math.pi*radius * \(radius+math.sqrt(math.pow(radius, 2)+math.pow(height, 2)))volume_of_cone = math.pi*math.pow(radius, 2)*height/3return f'圆锥的表面积为{area_of_cone:.2f}, 体积为{volume_of_cone:.2f}'def tri_prism(side, height):"""接收正三棱柱的底边长和高,返回正三棱柱的表面积和体积"""area_of_tri_prism = math.sqrt(3)*math.pow(side, 2)/2+3*side*heightvolume_of_tri_prism = math.sqrt(3)*math.pow(side, 2)*height/4return f'正三棱柱的表面积为{area_of_tri_prism:.2f}, 体积为{volume_of_tri_prism:.2f}'if __name__ == '__main__':type_of_geometry = input()               # 接收用户输入的字符串geometry = type_judge(type_of_geometry)  # 调用判断图形类型的函数print(geometry)                          # 输出函数运行结果

【Python函数综合实例】相关推荐

  1. python tablewidget综合实例_python – 仅通过单击行标题选择QTableWidget行

    类Qt.ItemFlag 此枚举描述了项目的属性.请注意,需要为可检查项目提供一组合适的标志和初始状态,指示是否检查该项目.这是为模型/视图组件自动处理的,但需要为QTableWidgetItem的实 ...

  2. python函数应用实例_【Python 第22课】 函数应用示例

    前两课稍稍介绍了一下函数,但光说概念还是有些抽象了,今天就来把之前那个小游戏用函数改写一下. 我希望有这样一个函数,它比较两个数的大小. 如果第一个数小了,就输出"too small&quo ...

  3. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

  4. python中的嵌套例题_Python函数嵌套实例

    在Python中函数可以作为参数进行传递,而也可以赋值给其他变量(类似Javascript,或者C/C++中的函数指针): 类似Javascript,Python支持函数嵌套,Javascript嵌套 ...

  5. 写入文件python并用序号_Python和excel表合成示例:向表中添加序列号,向表的现有内容添加索引,与,Excel,表格,综合,实例,给,增加,序号,对,已有...

    Python 与 Excel 表格综合实例(一):给表格增加序号,根据表格已有内容增加索引 前言: 前面我们花了6篇博客,把Python的xlwt与xlrd两个第三方模块对Excel表格的基础操作讲完 ...

  6. Python 与 Excel 表格综合实例:给表格增加序号,对表格已有内容增加索引

    Python 与 Excel 表格综合实例(一):给表格增加序号,根据表格已有内容增加索引 前言: 需求一:增加序列号 需求二:按已有内容新增列 结尾: [Python与Office]专栏 前言: 前 ...

  7. python输入字符串转换为公式_将python字符串转化成长表达式的函数eval实例

    爬一个网页时,要保存的数据都没有encode,就导致保存下来的中文都变成unicode了... 那么,怎么把一个表示字符串的unicode还原成unicode呢? 函数eval(expression) ...

  8. python装饰器函数-Python函数装饰器常见使用方法实例详解

    本文实例讲述了Python函数装饰器常见使用方法.分享给大家供大家参考,具体如下: 一.装饰器 首先,我们要了解到什么是开放封闭式原则? 软件一旦上线后,对修改源代码是封闭的,对功能的扩张是开放的,所 ...

  9. python函数和方法的入参格式有哪些_Python函数的参数常见分类与用法实例详解

    本文实例讲述了Python函数的参数常见分类与用法.分享给大家供大家参考,具体如下: 1.形参与实参是什么? 形参(形式参数):指的是 在定义函数时,括号内定义的参数,形参其实就是变量名 实参(实际参 ...

  10. Python中的startswith和endswith函数使用实例

    Python中的startswith和endswith函数使用实例 在Python中有两个函数分别是startswith()函数与endswith()函数,功能都十分相似,startswith()函数 ...

最新文章

  1. 基于脑功率谱检测飞行过程认知网络的脑机接口
  2. Linux驱动中,probe函数何时被调用
  3. poj2586(贪心盈亏问题)
  4. webpack入门--前端必备
  5. ML之LoRBaggingRF:依次利用LoR、Bagging、RF算法对泰坦尼克号数据集 (Kaggle经典案例)获救人员进行二分类预测——优化baseline模型
  6. windows服务autofac注入quartz任务
  7. python文字游戏源代码求年纪_Python实现猜年龄游戏代码实例
  8. php百度搜索框代码,基于jquery的仿百度搜索框效果代码_jquery
  9. LeetCode算法入门- Multiply Strings -day18
  10. file对象怎样获取文件的长度?_使用FSO对象获取整个文件夹的信息
  11. java编程思想读书笔记二(对象的创建)
  12. pyspider all 只启动了_Python 爬虫:Pyspider 安装与测试
  13. perl语言入门级练习记录23章
  14. 如何建设软件质量保障体系
  15. UEditor ASP.NET 版使用教程
  16. 罗伊 我的火箭我的处 (原创)
  17. Ajax回调函数中return不生效问题
  18. html创建表格没有网格线,excel里面的电子表格没有了网格线如何解决?
  19. PNAS | 富含亮氨酸重复序列延伸蛋白调节拟南芥耐盐性
  20. android模拟qq进场动画,Android用ViewPager仿QQ实现多页面滑动及动画效果

热门文章

  1. 02 Jmonkey3.2.0+Nifty1.4.2实现GUI
  2. Surface Pro 4 无限重启的解决方法
  3. MSP430F6638单片机复习笔记
  4. 思科三层交换机开启ipv6路由功能_思科三层交换机路由功能配置教程
  5. mysql 1548_MySQL创建函数由于Error 1548失败
  6. 普通二本从小白到加入鹅厂的通关秘籍
  7. Swoole vs Workman
  8. clickhouse分布式集群遇到的一些错误处理
  9. QT 错误:Unable to create a debugging engine解决
  10. 2023-2028年中国压铸机行业发展前景与投资趋势分析报告