前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Python编程 封装函数 根据输入参数计算结果返回

Python编程 封装函数 根据输入参数计算结果返回

作者头像
叶庭云
发布于 2021-08-10 02:28:36
发布于 2021-08-10 02:28:36
97900
代码可运行
举报
文章被收录于专栏:Python进阶之路Python进阶之路
运行总次数:0
代码可运行

一、问题描述

define function,calculate the input parameters and return the result.

  • 数据存放在 txt 里,为 10 行 10 列的矩阵。
  • 编写一个函数,传入参数:文件路径、第一个数据行列索引、第二个数据行列索引和运算符。
  • 返回计算结果
  • 如果没有传入文件路径,随机生成 10*10 的值的范围在 [6, 66] 之间的随机整数数组存入 txt 以供后续读取数据和测试。

二、Python程序

导入需要的依赖库和日志输出配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: UTF-8 -*-
"""
@Author  :叶庭云
@公众号  :修炼Python
@CSDN    :https://yetingyun.blog.csdn.net/
"""
import numpy as np
import logging

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

生成数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def generate_fake_data():
    """
    :params::return: 
    :function:如果没有传入文件路径  随机生成10*10 值的范围在[6, 66]之间的随机整数数组
    存入txt以供后续读取数据和测试
    """
    # 创建一个 10*10均值为8,标准差为1的正态分布的随机数数组
    # data = np.random.normal(8, 1, (10, 10))
    # 创建一个 10*10 值的范围在[6, 66]之间的随机整数数组
    data = np.random.randint(6, 66, (10, 10))
    print(data)
    with open("./data/random_data.txt", "w") as f:
        for i in data:
            for j in i:
                f.write(str(j) + '\t')
            f.write("\n")

加载数据并计算,返回结果。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def load_data_and_calculate(point1, point2, operation,
                            file="./data/random_data.txt"):
    """
    :param file: 文件路径  为缺省参数:在调用函数时可以传 也可以省去的参数,如果不传将使用默认值测试
    :param point1: 第一个数据的行列索引 元组类型
    :param point2: 第二个数据的行列索引 元组类型
    :param operation: 运算符
    :return: 运算后的结果
    """
    if file == "./data/random_data.txt":   # 还是默认参数的话  说明没有传入文件路径
        generate_fake_data()
    else:
        pass
    data = np.fromfile(file, sep='\t', dtype=np.float32)    # 读取txt数据 numpy的fromfile方法
    new_data = data.reshape([10, 10])     # (100,)reshape为(10, 10)  1010print(new_data)
    # 根据索引获取到二维数组中的两个数据   捕获可能的索引越界异常
    num1, num2 = None, None
    try:
        num1 = new_data[point1[0]][point1[1]]
        num2 = new_data[point2[0]][point2[1]]
        print(f"根据行列索引获取到的两个数为:{num1} {num2}")  # 打印查看
    except IndexError:
        logging.info(f"行列索引超出数据集边界,当前数据集形状为:{new_data.shape}")

    # 进行运算    捕获可能的异常
    try:
        # eval函数  返回传入字符串的表达式的结果
        result = eval(f"{num1}{operation}{num2}")
        print(f"result: {num1} {operation.strip()} {num2} = {result}\n")
        return result
    except ZeroDivisionError:
        logging.error(f"除数num2不能为零!")
    except SyntaxError:
        if operator in ['x', 'X']:
            logging.error(f"乘法运算时请使用 * 代替 {operation}")
        else:
            logging.error(f"输入的运算符非法:({operation})")

传入参数,调用函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
file_path = "./data/testData.txt"
# 输入第一个数据行列索引
x1, y1 = map(int, input("请输入第一个数据行列坐标(如: 6,8):").split(','))
# 输入第二个数据行列索引
x2, y2 = map(int, input("请输入第一个数据行列坐标(如: 3,5):").split(','))
# 输入运算符号
operator = input("请输入运算符(如+、-、*、/、//、%...):")

# 传入实参
my_result = load_data_and_calculate((x1, y1), (x2, y2), operator, file_path)
# 保留两位小数输出
print("进行 {} 运算后,结果为:{:.2f}".format(operator, my_result))

结果如下:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/07/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python编程 函数的定义与参数
函数 只有在调用时才会执行,通过 function_name(param) 进行调用
网络豆
2023/10/15
1690
Python编程 函数的定义与参数
Python实现计算器
前几天有个面试题目:计算字符串"1 + (5 - 2) * 3",结果为10,不能用eval()。今天介绍一下用压栈的方法解一解这个题目,事实上我们的计算器原理也是如此。
用户1432189
2018/09/05
2K0
Python实现计算器
Python实战-游戏(四则运算小游戏)
编程世界既神秘又充满乐趣,而今天,我们又将一起踏上学习编程的奇妙旅程,今天我们将用python通过编写简单而有趣的四则运算游戏,探索代码背后的魔法力量。无论你是完全的初学者还是有一定经验的编程爱好者,这个项目都将为你打开编程的大门,让你体验到编程的乐趣与成就感。
一个风轻云淡
2024/03/22
2480
从编程小白到全栈开发:改造为全栈计算器
上一次,我们编写了一个纯前端实现的简易计算器,这次,我们就假装这个计算器在前端运行起来太吃力,客户端的资源完全不够用来进行1+1等于几这种复杂的计算。我们得借助强大的服务器(其实就是我们现在正在用来写代码的这台小破电脑)来完成我们的计算任务。
一斤代码
2018/08/21
7490
从编程小白到全栈开发:改造为全栈计算器
C++ 宇宙穿越指南:小白从新手村到编程巅峰的奇幻之旅
这篇万字长文专为 C++ 小白打造。从 C++ 历史、应用领域讲起,详述学习环境搭建。由基础数据类型、控制流程,深入到类、模板等特性。搭配实践项目,给出学习方法与常见问题解法,助力小白全面掌握 C++,实现编程能力的飞跃 。
用户11458826
2025/03/21
600
高能!8段代码演示Numpy数据运算的神操作
Numpy是Numerical Python extensions 的缩写,字面意思是Python数值计算扩展。Numpy是Python中众多机器学习库的依赖,这些库通过Numpy实现基本的矩阵计算,Python的OpenCV库自然也不例外。
IT阅读排行榜
2019/06/14
1.5K0
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。 要使用一个方法,您需要:
呆呆敲代码的小Y
2021/08/20
9600
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
数据结构之栈
后缀表达式适合计算式进行运算,但是人却不太容易写出来,尤其是表达式很长的情况下,因此在开发中,我们需要将中缀表达式转成后缀表达式。
用户11332765
2024/10/28
730
数据结构之栈
【python】Fraction类详解及生成分数四则运算“试卷”
  使用整数作为分子和分母创建一个分数。在这里,Fraction(16, -10)创建了一个分数,分子为16,分母为-10。由于分母为负数,Fraction对象会自动将其转换为正数,结果为Fraction(-8, 5)。
Qomolangma
2024/07/30
1720
【python】Fraction类详解及生成分数四则运算“试卷”
运算符重载python_Python运算符重载
Welcome to the tutorial on Python Operator Overloading. As we have already learnt about Python Class, we are going to learn another interesting feature of object oriented python today.
用户7886150
2020/11/27
1.4K0
Python基本数据类型-Number
一、分类 整数 浮点数 布尔 复数 二、整数 说明 python可以处理任意大小的整数,包含复数 普通定义 # 普通定义 num1 = 10 # id(变量名):可以查看变量的内存地址 # hex(十进制数字):将十进制数字转为十六进制数字(0x为开头,不是数据内容部分) print(id(num1), hex(id(num1))) # type(变量名):可以查看变量的类型,int表示整数数字 print(type(num1)) 连续定义 # 连续定义 num2 = num3 = num4 = 5 交互定
星哥玩云
2022/09/08
2720
TS中的函数
我们上一篇内容简单的介绍了判断语句以及循环语句,今天我们一起来学习一下TS中的函数,除此之外我还会再介绍两个和函数相关的配置。
IT蜗壳-Tango
2024/02/05
2990
TS中的函数
python量化学习路线(第一章python相关语法)
这是一个函数,名为is_palindrome,输入参数为字符串s。它的作用是判断输入的字符串是否为回文(palindrome)。
GeekLiHua
2025/01/21
680
Python编程面试前要解决的10个算法
别像我刚开始解决问题时那样天真。尽管我认为时不时地破解几个算法很有趣,但我从来没有花太多时间去实践,只为解决问题,其他什么都不顾,可能有时候马马虎虎解决了问题,但不明白为什么这样。对于我自己,我一直在想,在一天结束时,整天求解算法有点太呆板了,它在实际的日常工作环境中并没有实际的用途,从长远来看,它也不会给我带来多少好处。
计算机与AI
2020/12/14
5910
Python编程面试前要解决的10个算法
[PYTHON] 核心编程笔记之五-Py
变量像一个指针指向装变量值的盒子,对不可变类型来说,你无法改变盒子内容,但可以将指针指向一个新盒子,每次将另外的数字赋给变量时,实际上是创建了一个新的对象并把它赋给变量
py3study
2020/01/09
6290
vb编程入门_python编程入门
开发者在进行服务器集群管理时,都需要编写 Shell 程序来进行服务器管理。Shell 是一个命令行解释器,为用户提供了一个向 Linux 内核发送请求以便于运行程序的界面系统升级程序。用户可以用 Shell 来启动、挂起、停止或者编写一些程序。
全栈程序员站长
2022/09/23
3.7K0
vb编程入门_python编程入门
蓝桥ROS云课一键配置f1tenth和PID绕圈(竞赛更新版)
这段脚本主要涉及到ROS(Robot Operating System,机器人操作系统)环境的配置和F1/10th自动驾驶小车的模拟器的安装。以下是对这段脚本的详细分析:
zhangrelay
2024/05/26
1670
蓝桥ROS云课一键配置f1tenth和PID绕圈(竞赛更新版)
Python--基础一
Python基础:print & input & 变量 & 运算符 & Python数据类型 & 运算符与表达式
py3study
2020/01/19
5960
Python--基础一
numpy总结
numpy的功能: 提供数组的矢量化操作,所谓矢量化就是不用循环就能将运算符应用到数组中的每个元素中。 提供数学函数应用到每个数组中元素 提供线性代数,随机数生成,傅里叶变换等数学模块 numpy数组操作 numpy.array([],dttype=)生成ndarry数组,dttype指定存储数据类型 numpy.zeros((3,4))生成指定元素0的3行4列矩阵。 numpy.reshape((2,2))转换数组阵维数为2行2列 numpy.ara
爱喝水的木子
2022/01/12
1.6K0
javascript入门
入门程序 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>JS入门——helloworld</title> <!-- JavaScript[JS]代码,包含在一对script标签中 script标签可以出现在网页中的任何一个位置 --> <scr
周小董
2019/03/25
8600
相关推荐
Python编程 函数的定义与参数
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文