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

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

作者头像
叶庭云
发布于 2021-08-10 02:28:36
发布于 2021-08-10 02:28:36
1.1K00
代码可运行
举报
文章被收录于专栏: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2025 年一线互联网大厂最新高质量 Java 面试八股文整理含答案及实操要点
我将从Java基础、集合、多线程等多个重要方面,为你呈现一线互联网大厂最新的高质量Java面试八股文及答案,帮助你高效备考。
啦啦啦191
2025/06/08
2360
2025 年一线互联网大厂最新高质量 Java 面试八股文整理含答案及实操要点
Python编程面试前要解决的10个算法
别像我刚开始解决问题时那样天真。尽管我认为时不时地破解几个算法很有趣,但我从来没有花太多时间去实践,只为解决问题,其他什么都不顾,可能有时候马马虎虎解决了问题,但不明白为什么这样。对于我自己,我一直在想,在一天结束时,整天求解算法有点太呆板了,它在实际的日常工作环境中并没有实际的用途,从长远来看,它也不会给我带来多少好处。
计算机与AI
2020/12/14
6250
Python编程面试前要解决的10个算法
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
一个方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。每一个 C# 程序至少有一个带有 Main 方法的类。 要使用一个方法,您需要:
呆呆敲代码的小Y
2021/08/20
1K0
☀️ 学会编程入门必备 C# 最基础知识介绍(五)——方法、封装、继承、多态
【python】Fraction类详解及生成分数四则运算“试卷”
  使用整数作为分子和分母创建一个分数。在这里,Fraction(16, -10)创建了一个分数,分子为16,分母为-10。由于分母为负数,Fraction对象会自动将其转换为正数,结果为Fraction(-8, 5)。
Qomolangma
2024/07/30
2250
【python】Fraction类详解及生成分数四则运算“试卷”
Python实战-游戏(四则运算小游戏)
编程世界既神秘又充满乐趣,而今天,我们又将一起踏上学习编程的奇妙旅程,今天我们将用python通过编写简单而有趣的四则运算游戏,探索代码背后的魔法力量。无论你是完全的初学者还是有一定经验的编程爱好者,这个项目都将为你打开编程的大门,让你体验到编程的乐趣与成就感。
一个风轻云淡
2024/03/22
2920
[PYTHON] 核心编程笔记之五-Py
变量像一个指针指向装变量值的盒子,对不可变类型来说,你无法改变盒子内容,但可以将指针指向一个新盒子,每次将另外的数字赋给变量时,实际上是创建了一个新的对象并把它赋给变量
py3study
2020/01/09
6450
vb编程入门_python编程入门
开发者在进行服务器集群管理时,都需要编写 Shell 程序来进行服务器管理。Shell 是一个命令行解释器,为用户提供了一个向 Linux 内核发送请求以便于运行程序的界面系统升级程序。用户可以用 Shell 来启动、挂起、停止或者编写一些程序。
全栈程序员站长
2022/09/23
3.8K0
vb编程入门_python编程入门
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
2870
运算符重载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.5K0
python量化学习路线(第一章python相关语法)
这是一个函数,名为is_palindrome,输入参数为字符串s。它的作用是判断输入的字符串是否为回文(palindrome)。
GeekLiHua
2025/01/21
2520
TS中的函数
我们上一篇内容简单的介绍了判断语句以及循环语句,今天我们一起来学习一下TS中的函数,除此之外我还会再介绍两个和函数相关的配置。
IT蜗壳-Tango
2024/02/05
3970
TS中的函数
Python--基础一
Python基础:print & input & 变量 & 运算符 & Python数据类型 & 运算符与表达式
py3study
2020/01/19
6120
Python--基础一
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
8750
2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析EXP以及 如何防御和修复[含JAVASCRIPT和HTML代码层面分析,代码都进行了详细的注释](2)———— 作者:LJS
7.5 Exploiting XSS with 20 characters limitation(蓝色为翻译)
盛透侧视攻城狮
2024/10/21
2070
2024全网最全面及最新且最为详细的网络安全技巧 七之 XSS漏洞典例分析EXP以及 如何防御和修复[含JAVASCRIPT和HTML代码层面分析,代码都进行了详细的注释](2)———— 作者:LJS
32个 Python 实用函数
斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13;特别指出:第0项是0,第1项是第一个1。从第三项开始,每一项都等于前两项之和。
1480
2019/07/15
1.1K0
Python编程 函数的定义与参数
函数 只有在调用时才会执行,通过 function_name(param) 进行调用
网络豆
2023/10/15
2420
Python编程 函数的定义与参数
蓝桥ROS云课一键配置f1tenth和PID绕圈(竞赛更新版)
这段脚本主要涉及到ROS(Robot Operating System,机器人操作系统)环境的配置和F1/10th自动驾驶小车的模拟器的安装。以下是对这段脚本的详细分析:
zhangrelay
2024/05/26
2250
蓝桥ROS云课一键配置f1tenth和PID绕圈(竞赛更新版)
Python实现计算器
前几天有个面试题目:计算字符串"1 + (5 - 2) * 3",结果为10,不能用eval()。今天介绍一下用压栈的方法解一解这个题目,事实上我们的计算器原理也是如此。
用户1432189
2018/09/05
2.1K0
Python实现计算器
从编程小白到全栈开发:改造为全栈计算器
上一次,我们编写了一个纯前端实现的简易计算器,这次,我们就假装这个计算器在前端运行起来太吃力,客户端的资源完全不够用来进行1+1等于几这种复杂的计算。我们得借助强大的服务器(其实就是我们现在正在用来写代码的这台小破电脑)来完成我们的计算任务。
一斤代码
2018/08/21
8250
从编程小白到全栈开发:改造为全栈计算器
夜曲编程Python入门课程Pro
在python中, 没有隐式转换的概念,即 数字型与字符串型不能拼接。除了乘号的情况,代表打印字符串几次
编程之心
2021/11/24
5.4K0
夜曲编程Python入门课程Pro
推荐阅读
相关推荐
2025 年一线互联网大厂最新高质量 Java 面试八股文整理含答案及实操要点
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验